RCNN
由于毕设课题是检测产品表面的缺陷,涉及到目标检测领域的各种算法,特开博客记录每日学习,以防脑袋漏风。鄙人是机械专业,对这个领域基本意义上就是小白中的辣鸡小白,因此不适用于参考,如有不对之处还请指正。
RCNN的基本流程: 引用网上的一张流程图,这张图是之前看到的,感觉挺好的,侵删 ~
训练阶段:
1.首先采用Selective Search方法从检测图片中生成许多候选图像框(SS算法详解参照博客)
2.对CNN进行预训练,这里采用的网络架构是在Imagenet上预训练的Alexnet,预训练后将最后一层的输出num_class由1000变为21(20类物体+背景,将之前生成的候选框resize到统一输入大小227*227,然后将IOU<0.5的框作为负例,>0.5的作为当前类别的正例,用于fine-tuning预训练的Alexnet,生成新的参数
(IOU即样本框A与ground turth B 之间的定义:A∩B/A∪B,即样本框与图像中所有已经标定的真值框,重叠的最大面积除以两个框的并集面积)
3.训练完成后,提取fc7层4096维特征,其中,IOU<0.3的图像框作为负例, 标定的ground turth作为正例,输入SVM(权重为[4096, 21])中训练21种类别,得到分类器。
4.识别任务完成,接下来是定位任务,Bounding-box regression训练,采用 pool5特征输入线性回归器训练,训练四种变换的权重,输出回归后的建议框。
测试阶段:
1.输入图像,SS过程得到约2K个建议框
2.resize 到227*227,输入训练好的 CNN中,得到fc7层特征
3.输入训练好的SVM中,得到各个建议框的类别得分,通过NMS非极大值抑制(将同一类别其他建议框与得分最高的建议框计算IOU,如果IOU>阈值,去除,然后取第二得分高的,重复操作,最后在保留的建议框中,去除得分低于该类别阈值的,最后得到剩下的建议框)
4.使用20个回归器对上述剩余的建议框中,输入IOU >0.6的进行回归操作,最终得到每个类别的修正后的得分最高的bounding box。
以上是一个简单的流程讲述,b-box回归器操作不是太理解,贴上参考日后再接着看
RCNN论文译文, 贴
针对SVM分类器,因为是直接学习深度学习了,也基本没有看这个贴
然后是一些代码链接,看了看别人写的代码,一脸懵逼,我的代码能力简直就是渣中渣,贴上以后再回来看吧,先抓紧学一下后面的网络。。。
https://github.com/yangxue0827/RCNN
http://www.cnblogs.com/edwardbi/p/5647522.html 这个是tflearn编的
https://blog.csdn.net/MyJournal/article/details/77841348 这个给的不太全
OK,先记录这么多,接下来看一下fast rcnn, 加油吧渣渣少年,木有时间让我挥霍了!