参考:基于13分钟简单梳理yolo该文章的复盘。
目标识别
已经有了OverFeat/R-CNN/Fast-RCNN。
改进的地方:
1. 不要像OverFeat/R-CNN将分类与定位的训练分开进行。而改成:一次计算、一步到位,共2个任务。
2. 不要像Fast-RCNN借用selective method单独提炼2000多个regions,直接在原图上训练出98个bounding boxes。
3. 不用sliding window,而采用grid cell模式,直接吃进原图,考虑全局图片context,切分成77个grid cell。每个grid cell要做2个bounding boxes的预测,每个box都可以预测一个物体,也可以没有物体。每个cell经过CNN来做分类(20类)和定位(x,y,w,h,score),每个gridcell的输出=25+20。则整张图片产生的输出为matrices=77(2*5+20)。
4. 总损失值(MSE)=bb(有物体)中心点损失值(放大,惩罚不合适的bb,强迫对应的参数变小)+bb(有物体)长与宽的损失值(放大,惩罚不合适的bb,强迫对应的参数变小)+bb(有物体)分类损失值+bb(无物体)分类损失值(缩小,纵容,不要没有物体的bb的识别能力)+grid cell的物体概率损失值。
yolo中的两个bounding box边界框(bb即bounding box)
- yolo中的两个bounding box与吴恩达课中cnn的anchor boxes是同样的事情。
- 2个bounding boxes对应output vector length=10,2×(x,y,w,h,score)。
- 通过loU选择最合适的bb。
- 这个bb可以分别含有一个物体,共两个物体。
- yolo的两个bb都是在预测同一个物体,对于同一个grid cell出现两个物体无能为力。
- yolo对bb的尺寸和aspect ratio的多样性做的不好,因为主要靠数据驱动和downsampling feature maps。所以吴恩达提出初始化时就设计多款尺寸和比例的bounding boxes。
- 小bb的小error对loU的影响比大bb的小error对loU的影响大,所以损失值要区别对待。