CNN
CV Tasks
Classification
Classification + Localization
Classification:C classes
Input:Image
Output: Class label
Evaluation metric: Accuracy
Localization
Input:Image
output:Box in the image(x,y,w,h)
Evaluation metric:Intersection over Union
方法一:定位作为回归问题
标注y值为box位置,神经网络output为box位置,用l2距离作为loss函数
简单方法:
1.下载已有的分类网络Alexnet或vgg网络等
2.将网络中最前面用于分类的全连接,softmax等head层,链接成我们的regression head层。
3.训练时使用SGD和l2loss,train regression head
4.测试时,classification head和regression head都使用
定位多个物体时,output K*4个位置点,K个(x,y,w,h)
方法二:滑动窗口
使用classification+regression网络结构在高清图片上进行多个定位
转换全连接层为卷几层进行高效计算
将所有的不同尺寸的定位结果综合起来得到最终预测值
3. Object Detection
将检测作为分类的问题:需要测试很多不同的位置和尺寸
R-CNN( Regions with Convolutional Neural Network Features
训练方法
1.下载已有的分类网络Alexnet或vgg网络等
2.微调模型用来做检测 将最后的全连接层去掉,重新初始化
3.提取所有可能的区域,对于每个区域,转化为cnn输入大小,经过CNN前向传播后,保存pool5的特征
训练时使用SGD和l2loss,train regression head
4.测试时,为每个类别建立svm的0/1类别区域特征
5.bbox回归,对于每个类别,建立线性回归模型映射从缓存特征到GTboxs
存在的问题
1.测试时很慢,需要运行所有的建议区域的CNN进行前向传播
2.svm和回归是因果倒置的,cnn特征不会在svm和回归时更新
3.训练过程非常复杂
Fast R-CNN
解决方法区域建议网络 Region Proposal Network和检测网络共享全图的卷积特征,整个网络训练一次
1. 将建议区域映射到全图的卷积中
2. 将建议区域分成h*w网格
3. 在每个网格内进行最大池化
4. 将最大池化反向传播回上一步
Faster R-CNN