深度学习(四)——目标检测算法YOLO的训练和检测过程的基本思路介绍

      基础知识掌握情况决定研究的高度,我们刚开始接触深度学习时,一般都是看到别人的概括,这个方法很好能让我们快速上手,但是也有一个很大的缺点, 知识理解的不透彻,导致我们对算法优化时一头雾水。我也是抱着知识总结的思想开始自己的深度学习知识精髓的探索,也希望能从中帮助到更多人。文章中间存在表述不清的地方希望各位研友(研究深度学习的朋友)提出,我会努力完善自己的文章。

      训练过程:

       yolo与R-CNN系列不同之处主要有两点:

            第一个是RPN的选取,yolo不用选取候选框,而是对输入图片打成SxS的网格,产生SxS个grid。然后找出包含true bounding box的中心店包含的grid cell。每个grid cell 可以产生B(自己设定的超级参数,一般是2)bounding box。

               第二个是网络结构的不同,RCNN系列的无论从开始R-CNN选训练卷积层。到后面fast R-CNN提出公用卷积以及ROI解决图片输入尺寸不同的问题,再到最后的faster-rcnn 提出的RPN网络,一步步的进行了优化。网络检测的精度非常高,速度也慢慢加快。不过YOLO采用的是端到端的训练过程。没有RPN层,也没有把分类和框的回归进行分开来。YOLO网络变得更加简单,速度更加快,慢慢精度也在不断的提升。

        YOLO的训练过程的基本步骤:

            YOLO在进行训练的时候,首先把输入图片resize成相同分辨率,然后对图片进行划网格。然后找出lable上每个检测物体所对应的边框中心点错在的网格(grid cell)。然后每个grid cell 负责检测一个物体。然后再根绝grid cell 按设定划B中bounding box,然后对bounding box记性可信度进行评分,可信度计算包括识别的得分和框所覆盖的IOU的乘积。这样产生的bounding box 和分类信息存在一个bxbxl的一个矩阵里。然后我们就要到loss进行计算了。loss主要包括三个部分,第一个是对框位置的误差进行计算。在计算框位置时我们我们只选择可信度分数最高的框进行计算。第二个就是IOU误差,IOU误差包括我们选择每个检测物体的最高得分框和剩下的框。由于剩下的框过多,我们考虑在剩下框的iou损失前加了一个参数来保持均衡。

       YOlO的检测过程:

           YOLO在检测的时候回遍历整一个图上的画出来的grid,每个grid会有B个bounding box,然后会对这些识别的物体打分,把地狱0.2 的bounding box 删除。然后对某类检测检测的结果做一个从小到大的排序,然后采用非极大致抑制,来对进行冗余的框进行删除。首先我们选取最大的框,然后查找与其融合超过规定的IOU的其它框,说明这些框与我这个选取最大得分框相似。我们就可以抛弃。把低于0.5的保存。因为可能存在覆盖的情况。然后我们在依次选取剩下第二高得分的框为对比框,知道进行了一轮筛选。然后我们按照同样的步骤对下一个类别坐同样的操作。当所有做完以后我们会发现每一类可能对应几个框,但是一个框一个物体只能有一个框,因此我们选取一个对每个物体都有最大得分的框作为最终的检测框。

推荐一个文档:https://www.jianshu.com/p/7cc2e8a465e3

 该博文属于自己独立思考和理解所写,引用请标明出处。如有理解错误,希望各位博友能够指出。

扫描二维码关注公众号,回复: 16558478 查看本文章

     

猜你喜欢

转载自blog.csdn.net/qq_37100442/article/details/81706992