美文网首页目标检测
浅析YOLO, YOLO-v2和YOLO-v3

浅析YOLO, YOLO-v2和YOLO-v3

作者: gaussfan | 来源:发表于2018-09-14 01:47 被阅读10813次

    经典的目标检测网络RCNN系列分为两步,目标proposal和目标分类。而Faster-RCNN中把目标proposal和目标分类作为一个网络的两个分支分别输出,大大缩短了计算时间。而Yolo系列则把这两个分支都省了,只用一个网络同时输出目标的位置和分类。

    YOLO

    输入:一张图片

    输出:把每张图片分成SxS个方格,对每个方格,输出一个B*5+C维的数组。其中B是该方格预测方框的数目,包含(x,y,w,h,s),s表示方框的置信度,C表示需要预测的类别数。

    在YOLO中,S=7, B=2,PASCAL VOC有20类,所以C=20,B*5+C=30。

    YOLO网络结构主要分为两个部分,第一部分是特征提取网络,主要是为了提取物体的通用特征,一般在ImageNet上进行预训练;第二部分是后处理网络,目的是回归出待检测物体的坐标和类别。

    网络结构

    第一个版本的YOLO的特征提取网络有24个卷积层和2个全连接层。网络结构如下图。


    yolo-feature.png

    可以看出,这个网络中主要采用了1x1卷积后跟着3x3卷积的方式。

    特征提取网络采用了前20个卷积层,加一个avg-pooling层和一个全连接层,对ImageNet2012进行分类,top-5正确率为88%,输入分辨率为224x224。

    检测时,将输入分辨率改为448x448,因为网络结构是全卷积的,所以输入分辨率可以改变,整个网络输出为7x7x30维的tensor。

    损失函数

    接下来要重点将一下这个损失函数。

    用网络直接回归物体的坐标是很难的,这里对要回归的物体的坐标进行了一些转化。物体方框的长w和宽h分别除以图片的长和宽;x和y坐标分别表示对应方格坐标的偏移,分别除以方格的长和宽;它们都在0到1之间。

    损失函数分为多个部分:


    yolo-loss.png

    其中,其中i表示第i个方格,j表示该方格预测出的第j个方框。1_{i}^{obj}表示物体obj的实际方框与第i个方格有对应关系,即obj的中心落在第i个方格中;1_{ij}^{obj}表示物体obj的实际方框与第i个方格预测的第j个方框有对应关系,即obj的中心落在第i个方格中,并与它的第j个预测方框的IOU最大。

    可以看到损失函数包括5个部分。第一部分是x,y坐标;第二部分是w,h,采用根号使得小方框size变化的损失比大方框size变化的损失大;第三部分是方框置信度损失,回归目标是预测方框与实际方框的IOU值;前三部分都只在预测方框和实际方框有对应关系时才计算loss;第四部分是没有对应物体的方框置信度损失,实际的置信度都是0;第五部分是分类损失,当方格与物体有对应关系时,才计算分类损失。

    因为在图片中很多方格都不包含物体,使得方格预测方框的置信分数趋于0。所以对包含物体的方格加大权重,对不包含物体的方格减小权重。论文中有\lambda_{coord}=5,\lambda_{noobj}=5

    一些细节
    • 最后一层激活函数使用线性激活函数,其它层使用Leaky-Relu函数。
    • 如果开始使用高学习率会不稳定。先从0.001到0.01,然后0.01训练75个epoch,接着0.001训练30个epoch,最后0.0001训练30个epoch。
    • nms仅增加了2.3%的map。
    缺点和比较
    • 每个方格只能预测一类物体,对于小目标检测很难。
    • 在损失函数中,对小物体变化的置信度和大物体变化的置信度惩罚相同,实际小物体变化应该加大惩罚。
    • YOLO在2007+2012上训练,map为63.4%,45fps。
    • Faster R-CNN ZF在2007+2012上训练,map为62.1%,18fps。
    • YOLO比Faster R-CNN有更多的位置错误。

    YOLO-v2

    YOLO-v2在YOLO-v1的版本上做了一些改进。

    • 添加了BN层,map提高了2%。

    • 用448x448的输入分辨率在ImageNet上进行参数微调,map提高了4%。

    • 把全连接层取消,使用anchor boxes来预测目标方框;使用anchor boxes的话就把分类置信度和空间位置分离了,所以对每个预测方框都可以回归一个方框置信度和分类置信度。不用anchor box时map是69.5%,召回率是81%,使用了之后map是69.2%召回率是88%。

    • 用k-means来选择好的方框先验。

    • 对于每个方格,预测5个方框。假设方格的位置是c_x, c_y, p_w, p_h,预测回归的值是t_x, t_y, t_w, t_h,那么实际的方框位置如下。这种方式将map提高了5%。

      yolov2-box.png
    • 把26x26x512的feature-map,相邻特征分到不同的channel中,因此得到13x13x2048的feature-map,与后面层进行concat,使得map提高了1%。

    • 多scale的训练,因为网络为全卷积层,所以同样的网络可以预测不同分辨率的输入,每10个batch随机选择一个新的image size。

    新的分类网络Darknet-19

    主要利用了NIN的思想。有19个卷积层和5个maxpooling层,实现了72.9%的top-1正确率和91.2%的top-5正确率。在448x448的分辨率上,实现了76.5%的top-1正确率,和93.3%的top-5正确率。网络结构如下图所示。


    darknet-19.png

    修改成detection网络时,删除了最后的卷积层,添加了3个3x3x1024的卷积层,和一个1x1x125的卷积层,在最后的3x3x512层和导数第二层之间添加了一个paththrough进行特征concat。

    开始学习率是0.001,在60和90个epoch时乘以0.1。

    比较
    • YOLOv2分辨率544x544在VOC2007+2012上训练,map为78.6%,40fps。
    • SSD500在VOC2007+2012上训练,map为76.8%,19fps。
    分类和检测联合训练

    另外,YOLO-v2利用WordTree,将分类和检测任务进行联合训练,对于没有方框标注的物体也能预测出其方框,能够对词典中9000个概念进行预测。YOLO-v2也叫做YOLO9000。

    YOLO-v3

    YOLO-v3在YOLO-v2的基础上进行了一些改进。

    • 用logistic regression对方框置信度进行回归,对先验与实际方框IOU大于0.5的作为正例,与SSD不同的是,若有多个先验满足目标,只取一个IOU最大的先验。
    • 对每个类别独立地使用logistic regression,用二分类交叉熵损失作为类别损失,可以很好地处理多标签任务。
    • 利用多个scale进行预测,实际使用3个不同的scale。将前两层的feature-map进行上采样,与开始的feature-map进行concat起来,加一些卷积层,然后进行预测。
    新的特征提取网络Darkent-53
    darknet-53.png

    Darknet-53和Resnet-152正确率相同,但速度是2倍。

    比较
    • 在IOU=0.5这个标准下,YOLO-v3非常强;能够预测出小物体。
    • YOLOv3-320, map-50为51.5%,时间是22ms。
    • RetinaNet-50-500,map-50为50.9,时间是73ms。
    尝试过的方法
    • 使用线性激活函数回归x,y偏移,相对于方框长和宽的比例(YOLOv3中采用的是相对于方格的比例);这种方法降低了模型稳定性,并且效果不好;
    • 使用线性激活函数直接预测x,y偏移,而不是logistic regression,导致map下降;
    • 使用Focal Loss,map下降了2个点;
    • 用两个阈值,IOU在0.3-0.7之间的忽略,小于0.3的作为负例。

    总的来说,我觉得,YOLO的发展完全展现了汲取众家之长的力量。还是要多看paper,以上。

    参考文献:
    [1] Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
    [2] Redmon J, Farhadi A. YOLO9000: better, faster, stronger[J]. arXiv preprint, 2017.
    [3] Redmon, Joseph, and Ali Farhadi. "Yolov3: An incremental improvement." arXiv preprint arXiv:1804.02767 (2018).

    相关文章

      网友评论

        本文标题:浅析YOLO, YOLO-v2和YOLO-v3

        本文链接:https://www.haomeiwen.com/subject/mfdngftx.html