卷积神经网络-目标探测-笔记
目标探测介绍:
直接思路:回归问题
利用神经网络进行目标识别,同样的目标变为坐标值
直接思路:局部识别问题
在很多位置尝试识别,能够完成识别的地方就是目标位置
问题:怎样找到这些候选位置?
不同scale的sliding windows?
遍历所有位置
候选区域产生
更有效的方法是什么?
直接计算候选区域
小结
目标探测任务
转化为回归,分类问题
分类思想目标探测:候选区域产生
传统方法—DPMhttps://blog.csdn.net/qq_14845119/article/details/52625426
基本思想:提取图像特征,制作出激励模版,在原始图像滑动计算,得到激励效果,根据激励分布确定目标位置
拓展:目标可能会变形,各个部分单独考虑
DPM—Deformable Parts Model
- 产生多个模版,整体模版以及不同局部模版
- 不同模版同输入图片“卷积”产生特征图
- 特征图组合形成融合特征
- 对融合特征进行传统分类,回归,得到目标位置
优点:
方法直观简单,运算速度快,适应动物体变形,至2012年,最好方法
缺点:
性能一般,激励特征人为设计,工作量大,大幅度旋转无法适应,稳定性差
神经网络分类:R-CNN系列方法https://blog.csdn.net/v1_vivian/article/details/78599229
神经网络分类思想:对多个位置,不同尺寸,用卷积神经网络判断区域内图片是不是某物
候选位置(proposal)提出方法:EdgeBox
R-CNN
类别减少
训练过程
- 分类器的训练—直接用ImageNet模型
- Fine-tune分类模型-选择20类进行探测;对原始分类模型结构更改;
- 特征提取
图片计算候选区域;候选区域切分图片,变成输入大小;提取相应高级特征;存储特征(很大容量)
- 单独目标探测器训练
每一类单独训练
每一类训练数据平衡
每一类binary分类
- 单独目标回归器训练—基于候选区域微调
每一类单独训练
每一类训练数据平衡
每一类BBOX回归
测试过程
- 候选区域
- 特征计算
- 分类,回归
- 后续处理
评估方法
MAP:mean average precision。平均精度
IoU:https://blog.csdn.net/u014061630/article/details/82818112
总结
优点:
- CNN用于目标探测,利用了CNN高效识别能力,大大提高性能
- 摆脱人为设计物品模版,方法具有通用性
- 分类+回归,有了找到精确位置的可能
缺点:
- 为了检测一个目标,所有候选区域计算,大量卷积运算,非常慢
- SVM训练与CNN断裂,有效信息不能用于优化模型,not end-to-end
- 每一类单独训练,异常繁琐
Fast R-CNN:https://www.jianshu.com/p/fbbb21e1e390
共享卷积计算
- 卷积计算保持空间位置
- 共同区域的卷积计算只需进行一次
- 切割候选区+提取特征图=计算完整特征图+切割对应候选区
特征一致化-Max Pooling
位置+类别 联合学习
怎么解决候选区域的生成问题,也靠神经网络?
神经网络特征增加一组输出
RPN(Region Proposal Network)
候选区域网络
- 直接产生候选区域,无需额外生成
- 直接用于后续特征图切割
RPN的实现
网络输出的值:
- 是不是一个目标?
- 覆盖范围的相对位置
k=9(3种尺寸,三种长宽比)个Anchor那么能产生多少个proposal?
特征图size HxW->HWx9 in paper:2400x9
Anchor详解:
- 如果是VGG conv5作为特征图,3x3区域对应的原始图像区域?4个pooling,16倍
- Anchor的平移不变怎么理解
较小的平移pooling过程忽略
- Anchor同外接Proposal区别数量:1-2个数量级减少;性能:更高效;速度10x
- Anchor设计的借鉴意义?
神经网络有能力找到最终量,也有能力找到很多中间量。
只用Anchor判断是不是目标,会不会存在大材小用,能够判断更多吗?
训练
文章:分步训练,太复杂
更简单方法:直接联合学习
一个网络,四个损失函数
Anchor是不是目标
Anchor回归候选区域回归
Fast R-CNN分类
Fast R-CNN基于候选位置回归
完整训练(end-to-end)
多目标一起学习
faster R-CNN:https://blog.csdn.net/liuxiaoheng1992/article/details/81843363
faster R-CNN由四部分组成:
1)卷积层(conv layers),用于提取图片的特征,输入为整张图片,输出为提取出的特征称为feature maps
2)RPN网络(Region Proposal Network),用于推荐候选区域,这个网络是用来代替之前的search selective的。输入为图片(因为这里RPN网络和Fast R-CNN共用同一个CNN,所以这里输入也可以认为是featrue maps),输出为多个候选区域,这里的细节会在后面详细介绍。
3)RoI pooling,和Fast R-CNN一样,将不同大小的输入转换为固定长度的输出,输入输出和Faste R-CNN中RoI pooling一样。
4)分类和回归,这一层的输出是最终目的,输出候选区域所属的类,和候选区域在图像中的精确位置。
神经网络回归:YoLo系列方法:https://www.jianshu.com/p/13ec2aa50c12
只用Anchor判断是不是目标,会不会存在大材小用,能够判断更多吗?
YoLo:可以直接找到是什么,在哪里
YoLo训练
图片分成7x7网格
每个网格生成:
- b个Bbox 4坐标+1信心
- N个类别分数(注意对比Anchor)
总共回归目标:7x7x(5b+N)
候选区域个数(b=2)98个,< Fast R-CNN
损失函数:……
YoLo性能
实时运行
精度稍微下降
定位精度较差
物体小的话有可能识别不出来
SSD:The Single Shot Detector : https://blog.csdn.net/u013989576/article/details/73439202
中间层特征参与位置种类计算
候选区98vs8732
速度21:46(VGG base)
精度66.4:74.3