1、将回归和分类放到阶段。两阶段网络都是将分类和回归分为两部分。
2、Yolo 2016年出现。
将目标检测任务当做一个回归问题,针对bx做回归,回归出类别的概率。
使用独立的神经网络预测bx的位置和类别概率。(regeression problem),一次迭代出全部结果。(bx本来就是一个回归问题,左上角右下角坐标,类别概率也当做回归问题)
假正例:模型认为是正例,但判断错误,例如:“人脸识别,应该在正确的人脸位置打框,但网络预测出结果在鞋上打了个框”。(Faster R-CNN容易出现这种结果,但yolo检测精度低,就可以避免这种情况)
召回率:尽可能是object的都能找出来。
准确率:只要找出的就一定是找准的。
Yolo :Yolo在训练和测试时会直接将类别的上下文(与某个类别相关的信息)已经学到了。Yolo是观看整张图像是个全部信息,Faster R-CNN存在感受野故会出现假正例额情况,因为他无法学到完整的图像。
缺点:对小目标物体检测效果差;精度低。
3、我们的网络是从整张图上预测每一个bx以及对应的类别概率。
把图像切为7×7的网格,每一个网格负责预测一个物体。蓝:小狗,黄:自行车。(v1中同一个类别有多个类,无法预测)每一个cell单元预测两个bx(论文中给定)(预测一对x,y,w,h,一堆confidence score),本文中的cell可以类比R-CNN系列的anchor。faster r-cnn中bx是基于anchor做矫正,yolo的bx是直接预测坐标(在图片里的坐标不基于任何东西,Bx框没有先验知识)。conficence score:反馈出模型认为该框包含物体的概率大小,反映出来这个框是物体的准确率有多大。(代表的是GT和bx的iou的大小)
当物体出现的概率为1时,置信度表示gt和bx的IOU。
yolo v1中的(x,y)偏移是对应每一个cell的单元(左上角)相对位置偏移,而不是原图,(w,h)是相对于整张图像的。回归器还要预测,该cell包含物体的情况,他分别是每一类的概率是多大,只预测一组类别概率,而不管多个BX的个数.(说明该框只会预测一种类别,所有的bx都属于同一类)
these predictions are encoded as an 个tensor。
4、在test过程中:
(上式结果,蓝色部分是一个bx是物体的置信度大小;同理,结果就是一个bx是第i个类别的置信度大小)
Yolo 正向传播给出结果后,会将结果进行相乘,对每一个bx来说,最后会获得他是某个类别的概率*IOU的分值,获得bx的位置信息,最后可以根据坐标信息、概率值去对结果进行NMS,得到最后结果。
5、训练过程:回归器定义了coinfidence score是,需要让回归器学习该值的规律,当预测时学习出的数值就表示该含义。得去训练。训练过程通过pred和gt进行计算IOU;设定一个阈值筛选,(根据设定阈值就可以直接指导Pr(object)是0还是1)通过反复迭代训练,直到模型收敛,预测过程中可以直接应用该模型,直接给出置信度。
设计训练就是学习confidence score.
6、
多次卷积、池化,最后接两个全连接层。(全连接是将所有都连在一起,才能将多个局部特征融合在一起,一定会破坏感受野),全连接可以使用GAP Pooling替换。(预训练:可以将卷积部分当作一个分类任务,在ImageNet上进行预训练)
7、Loss:(数据做归一化:是因为好收敛)
在我们预测的过程中,很多cell不会包含物体,他的confidence score为0,使得梯度会较大,收敛过快。
Yolo是不管有没有物体都会回归坐标,但只有是正例,即包含物体的时候,回归才有意义。预测坐标的权重应该更大一点,不包含物体只会受到其中某几项影响,包含物体会受到全部影响。
因为图像正负样本数量不平衡,所以为了使回归预测坐标过程与给出概率的过程同样重要,即加权。
包不包含物体是通过置信度看出来的。(不包含物体,P(object)=0,包含物体,confidence score = IOU)