卷积神经网络CNN-目标探测
来源:互联网 发布:广电网络智慧社区 编辑:程序博客网 时间:2024/05/17 22:33
卷积神经网络CNN-目标探测
1. 目标探测介绍
利用神经网络进行目标识别,同样的目标变为坐标值。
直接思路:局部识别问题
在很多位置尝试识别,能够完成识别的地方就是目标位置。
问题:怎样找到候选位置?
Answer:
- 利用不同scale的sliding windows来遍历图片的所有位置,缺点是计算量大,需要进行大量的重复。
- 更有效的方法:直接计算候选区域。
2. 传统方法-DPM
基本思想
提取图像特征,制作出激励模板(可以认为是人工设计一个复杂形状的卷积核),在原始图像滑动计算,得到激励效果图,根据激励分布确定目标位置。
拓展
目标可能会变形,各个部分单独考虑(DPM-Deformable Parts Model)
- 产生多个模板,整体模板以及不同局部模板;
- 不同模板同输入图片“卷积”产生特征图;
- 特征图组合形成融合特征;
- 对融合特征进行传统分类,回归,得到目标位置。
3. 神经网络分类:R-CNN系列方法
神经网络分类思想:
对多个位置,不同尺寸,用卷积神经网络判断区域内的图片是不是某物。
候选位置(proposal)提出方法: EdgeBox
R-CNN
1.分类器的训练
直接用ImageNet模型
2.Fine-tune分类模型
- 选择20类进行探测;
- 对原始分类模型结构进行更改;
- 最终定位21个目标(20类+其他)
3.特征提取
- 图片计算候选区域;
- 候选区域切分图片,变成输入大小;
- 图区相应高级特性;
4.单独目标探测器训练
- 每一类单独训练;
- 每一类训练数据平衡;
- 每一类binary分类,一般用SVM。
5.单独目标回归器训练-基于候选区域微调
- 每一类单独训练
- 每一类训练数据回归
- 每一类BBOX回归
6.测试过程
7.评估方法
mAP:mean average precision,平均精度
IoU:
8.优缺点
- CNN用于目标探测,利用了CNN高效识别能力,大大提高性能;
- 摆脱人为设计物品模板,方法具有通用性;
分类+回归,有了找到精确位置的可能;
为了检测一个目标,对所有候选区域进行计算,含有大量卷积运算,速度慢;
- SVM训练与CNN断裂,有效信息不能用于优化模型,不是end-to-end;
- 每一类单独训练,异常繁琐。
Fast R-CNN
- 共享卷积计算;
- 完整训练(end-to-end);
- 多目标一起学习。
1.共享卷积计算
- 卷积计算保持空间位置;
- 共同区域的卷积计算只需进行一次;
- 切割候选区+提取特征图=计算完整特征图+切割对应候选区。
2.特征一致化
问题:不同区域特征如何保持一致?
Answer:进行特征一致化-Max-Pooling。
如:
3.位置+类别的联合学习
Faster R-CNN
?:如何解决候选区域的生成问题?
将神经网络特征增加一组输出RPN(Region Proposal Network)候选区域网络。
- 直接产生候选区域,无需额外生成;
- 直接用于后续特征图切割。
1.Fast R-CNN RPN的实现
RPN的具体流程如下:
使用一个小网络在最后卷积得到的特征图上进行滑动扫描,这个滑动网络每次与特征图上
具有k=9(3种尺寸,三种长宽比)个Anchor。
- 三种尺度(面积)
1282,2562,5122 ,三种比例1:1,1:2,2:1 ,所以每一个位置都有3×3=9 个anchor。
- 原图
600×1000 经CNN卷积后,在CNN最后一层(conv5)得出的是40×60 大小的特征图,对应文中说的典型值为2400。若特征图大小为W*H,则需要W*H*K个anchor,本文中需要40*60*9≈2k个。
2.Anchor详解:
- 如果是VGG conv5作为特征图,
3×3 区域对应的原始图像区域?- 因为VGG有4个pooling,相当于有16倍的扩充。
- Anchor的平移不变怎么理解?
- 因为较小的平移在pooling的过程中会被忽略掉。
- Anchor同外接Proposal区别?
- 数量:1-2个数量级减少;
- 性能:更高效;
- 速度:10倍提升
- Anchor设计的借鉴意义?
- 神经网络有能力找到最终量,也有能力找到很多中间量。
比较:
4. 神经网络回归:YoLo系列方法
YoLo训练
YoLo直接将图片分成
- b个Bbox (一般是两个)+4个坐标+1个信心;
- N个类别分数。
总共回归目标:7×7×(5b+N)
候选区域个数:7×7×2 (b=2)
SSD训练
中间层特征参与最后的位置和种类的计算。
5. 实例目标探测模型和部署
Faster RCNN
fork代码参加:https://github.com/KoalaTree/Faster-RCNN_TF
YoLo
fork代码参加:https://github.com/KoalaTree/YOLO_tensorflow
- 卷积神经网络CNN-目标探测
- 卷积神经网络CNN-目标分类
- 基于卷积神经网络(CNN)的目标检测部分资源
- CNN 卷积神经网络 二维卷积
- 卷积神经网络CNN
- 看懂卷积神经网络(CNN)
- 卷积神经网络(CNN)
- 卷积神经网络(CNN)
- [CNN]卷积神经网络
- CNN卷积神经网络
- 卷积神经网络CNN
- 读懂卷积神经网络CNN
- CNN卷积神经网络
- 卷积神经网络CNN
- 卷积神经网络CNN
- CNN卷积神经网络
- 卷积神经网络CNN
- CNN卷积神经网络
- Java设计模式--单例模式
- opencv 网站tutorials学习翻译
- 【Jfinal】分页 Ajax点击加载
- C++ 图论-最短路径问题
- iOS转前端之JS进阶技巧及Demo演示
- 卷积神经网络CNN-目标探测
- XZ_JavaScript之JavaScript的基本语法
- Google正面迎战苹果,用ARCore阻击ARKit
- 【NOIP·TG2004】caioj1065·动态规划入门(一维一边推3:合唱队形)
- Html5的缓存小结(原)
- Directx9学习(七)初识texture(2)
- [标题党]15分钟开发可支持百万观众的H5视频直播网站
- html 中如何让鼠标箭头移到某个区域(div,input,a等标签)上就变为手型,移出后再变为原型。
- SQL垂直拆分和水平拆分