Chisel(Constructing Hardware In a Scala Embedded Language)是UC Berkeley开发的一种开源硬件构造语言。
站长xddcore有话说:在我大二的时候,因为项目需要,接触了Chisel。在体验过后,我被它深深的吸引了。我幻想着它十年后的样子,充满希望。于是创建了这个博客,让更多人的了解Chisel,学习Chisel。

[无监督式学习]-自学习目标分类器/检测器探究

内容纲要
Reading Time: < 1 minute

开始做新项目啦QAQ

一些背景知识

什么是无监督式,监督式学习?

在正文开始前,我想搞懂这个问题是非常重要的。在目前的机器学习领域,大概把训练(/学习)过程分为三类,一类是监督式学习,一类是半监督式学习,一类是无监督式学习。自学习目标分类器/检测器正是属于无监督式学习的范畴。半监督式学习在这里就不展开说了。下面大概说一下自己对剩下两种模式的理解:

监督式学习

顾名思义,就是人为提供数据与标定。比如在目标分类中,每张图片标定一个onehot编码/数字索引。在目标检测中每张图片提供一些bounding box坐标。以上的这些把数据人为标定上一定的值,输入网络,进行训练,从而拟合出一个合适的数据关于标定的“公式” 的思路,称为监督式学习。

无监督式学习

不提供标定好的数据,直接向网络输入数据,由网络根据输入数据,进行特征提取,从而输出结果。意义:有些数据人工无法标定;有些数据,人工标定的难度太高。

自学习目标分类器

在探究了自学习目标分类器后,我觉得它应该算是最简单的无监督式学习demo了。它的主题思想如下:

训练

将矩阵输入backbone后得到fmap,再将fmap做聚类。不过此处有个地方,我还是不太理解。就是在数据不确定的情况下,如何用手肘法确定合适的K值。(后面再仔细想想)

预测

经过聚类后,假设我们得到了n个类别。此时,便完成了学习的过程(特征提取并分类)。之后,我们便可以进入预测。假设此时有一个图像矩阵输入网络,得到了fmap。我们的目标是为了得到这个fmap的类别(即图像矩阵的类别)。而再上一步中,我们已经通过聚类获得了n个类别了。那么,判断这个fmap的类别也非常简单了。我们只需计算这个fmap和n个类别中心点的距离,找出距离最小值所对应的类别中心点索引,就可以实现对fmap类别的分类。

实操

嘴上说起来还是挺简单的QAQ,但是许多问题还是要实操下才行。这样才会暴露一些bug出来。明天早上再去研究研究,今天就先写这么多吧。

运行效果

在这里插入图片描述
在这里插入图片描述

一些重要的地方

K值如何确定?

经过,今早的思考。我认为,这个K值是无需像yolo里面的anchor聚类一样,通过手肘法找到K值。K值就是分类值(你希望把一个数据的特征,用多少个特征中心点表示(/概括))

backbone选择?

根据对以上原理的推敲,我们希望backbone输出是个fmap。故我们只需要找个合适的backbone,假如它的输出就是fmap的话,那再好不过了(比如mobilenet 的no include top)。如果他的输出不是fmap,我们只需要在顶层重新加个conv就行。

刚好最近对于无监督的目标检测没啥思路,所以打算下周一开始,花个1-3天左右,在pc上搭个自学习目标分类器看看。以便于自己更加深入了解整个搭建过程中的思路,收获一些灵感,为后面做无监督目标检测提供些灵感。

Share

xddcore

xddcore www.github.com/xddcore

You may also like...

发表回复

您的电子邮箱地址不会被公开。