深度学习之目标检测(一)原理篇
一、目标识别分类及应用场景
目前可以将现有的基于深度学习的目标检测与识别算法大致分为以下三大类:
①基于区域建议的目标检测与识别算法,如R-CNN,Fast-R-CNN,Faster-R-CNN;
②基于回归的目标检测与识别算法,如YOLO,SSD;
③基于搜索的目标检测与识别算法,如基于视觉注意的AttentionNet,基于强化学习的算法.
目前,目标识别主要有以下几个应用场景:
① 安全领域:指纹识别、人脸识别等,代表项目如Face++、依图科技、深醒科技等。
② 军事领域:地形勘察、飞行物识别等,代表项目全悉科技。
③ 交通领域:车牌号识别、无人驾驶、交通标志识别等,代表项目纵目科技、TuSimple(图森科技)、驭势科技等。
④ 医疗领域:心电图、B超、健康管理、营养学等,代表项目智影医疗、图玛深维等。
⑤ 生活领域:智能家居、购物、智能测肤等,代表项目Yi+、木薯科技、肌秘等。
具体可参考这里:从图像识别多样化的应用场景,看计算机视觉的未来价值
二、基于区域建议的目标识别的算法
1. R-CNN
1.1 基本工作流程:
- 接收一个图像, 使用Selective Search选择大约2000个从上到下的类无关的候选区域(proposal)
- 将提取出来的候选区域转换为统一大小的图片(拉升/压缩等方法), 使用CNN模型提取每一个候选区域的固定长度的特征.
- 使用特定类别的线性SVM分类器对每一个候选区域进行分类.
- Bounding Box回归.
1.2 训练 (使用AlexNet, 要求输入为227*227大小的图像) - 预训练. 预训练CNN(边界框标签不可用于该数据).
- 特征领域的微调. 使用基于CNN的SGD的训练,对模型进行微调.在这里选择学习率为预训练的1/10, 保证微调不破坏初始化.
- 将所有候选区域与真实框重叠(IoU)大于等于0.5的作为该框类的正例,其余的作为负例.再进行SVM分类.
------这个表明了训练过程是需要Grounding Truth(标定框)的, 是有监督的过程.
注意: 在预训练和微调中使用的CNN网络参数的共享,并且提取的特征数目为(类别N+背景1)个.
1.3 预测
预测的过程和训练基本相同,不同的是:
- 预测的过程没有初始给定的标定框(Grounding Truth).
- Bounding Box回归.
其实简单来说, 预测的过程就是根据在训练过程中找到的CNN回归值与所要预测的Grounding Truth之间的关系, 反向推导Grounding Truth的位置.
1.4 R-CNN的优劣分析及小结
- R-CNN较之于传统方法的主要优势:
① 使用了Select Search进行proposal的选择, 极大地减少了proposal的数量.(百万级别~2000左右)
② 深度学习提取特征来代替人为设计, 较大地提高了精度和效率.
③ 使用了Bounding Box回归, 进一步提高了检测的精度. - R-CNN的不足之处:
① 训练分为了多个步骤. 包括Select Search进行proposal的选择, CNN的模型训练(模型的预训练和微调), SVM的分类, Bounding Box回归等, 整个过程需要的时间过长.
② 由于当时的历史等各个因素的影响, 使用了SVM进行多类别分类,要训练多个分类器, 训练时间较长
③ 测试时间长,由于每张图片要处理大量的目标候选框 - 小结
虽然R-CNN仍