该文章是我学习了YOLO系列详解而做出的总结。本文只是总结,具体推导,请看链接文章。 基本思想 以前的方式 以往的方式,我们都是对给定的图像,进行切割(挨着挨着切,有点类似于遍历切法),给出两个顶点的坐标,对切割后的图像然后逐一判断,来完成目标识别。(个人理解,如有错误,请多多包含) 这些方式的缺点在于:太过复杂,耗时长。 YOLOv1(you only look once) 通俗讲,就是通过观察一部分图像,来给出boundingbox,再然后进行判别。我的理解为:你透过一个洞,看到一个美女的腿的一部分,然后你就对其意淫,更具你以前的看美女经验,猜想出这个美女的大致特征。(管中窥豹?) 改进: 切的方式:由原来的遍历切法,改为了,先将图片分为 S * S个区域,然后根据这个区域的图像,来切B个区域。 给出的结果:由原来的两点坐标,改为了,(x,y,w,h),其中:x,y为切的区域的中心点,w,h为切的区域的宽,高总占比。(这样有个好处:归一化了之后方便输出) 判别的方式:对每一个切割后的区域,进行计算,得出Pr(个人理解为你这个框含目标的可能性大小),以及每种类别的概率C,然后得到SSB个Pr,然后找出Pr最大,找出相应的区域,用softmax判别出那是什么类别。有多个目标的时候,重复就是了。 损失函数: 你这个结果好不好,取决于三点:1.你框选得好不好(coordErr) 2.你Pr准不准 3.你判断类别准不准 训练方式: 以上三点,都离不开你对图像特征的提取,所以我们先对其的特征提取功能进行训练,就先用ImageNet对YOLO网络的前20个卷积层+1个average池化层+1个全连接层进行训练。然后再和后面的模型用数据集进行训练。 学到的东西 首先是进行预测的时候,想办法把结果用0-1进行表示,这样有利于预测。 二是在处理图像问题的时候,可以先预训练。