最近因为面试,看了一些图像识别目标跟踪的东西,希望记录下来。如有错漏欢迎指正。

深度学习出来之前,目标跟踪和图像识别方面基本上都是被传统图像处理算法统治的,传统算法比如sift ,surf,基于帧间差分的滤波器,等等。2012年,Alexnet横空出世,直到resnet15年拿下了imagenet的图像识别类目冠军,错误率降低到3.57%,深度学习开始出现在媒体和工业界面前。

12年到15年是卷积神经网络(CNN)快速发展的4年,然而16年GANS大火以后,深度学习几乎没有什么亮眼的创新了,深度学习开始进入了工业界的大规模铺陈阶段。

下面进入正题,说一下深度学习在图像识别和目标检测方面的应用。

(补充:hinton17年提出了新的capsule模型,据说不错,还没有工业化,回头得看看)

1.一些概念框架。



图像识别的工业场景比如:人脸识别,车牌识别,指纹识别,医疗界也有做肿瘤的生化图片的诊断的。

图像识别任务有(1)目标分割(target segmentation)、(2)目标识别(target recognition)、(3)目标检测(target detection)、(4)目标追踪(target tracing)。

简述一下(2)(3)(4):

(2)目标识别,是一个分类问题,在给定数据中,分类出哪些sample是目标,哪些不是。比如肿瘤识别如果用目标识别来做,思路就是这张生化图片里,是不是有肿瘤组织,label是 有(1)或者没有(0)。参考链接:https://www.zhihu.com/question/36500536/answer/67939194

解决方案除了CNN,当然是首推ImageNet得奖的网络:Alexnet,vgg,resnet等等。

(3)目标检测,比分类多了一个要求,是需要标记出目标的位置,比如美图软件里,会定位一下嘴唇,眼睛在照片里的位置,然后再进行下一步的美化。

深度学习相关的目标检测方法也可以大致分为两派:

  1.  基于区域提名(region proposal)的,如R-CNN、SPP-net、Fast R-CNN、Faster R-CNN、R-FCN;
  2. 端到端(End-to-End),无需区域提名的,如YOLO、SSD。

(4)目标追踪,比检测又多了一个要求,需要预测目标的下一刻的位置,或者在上一帧的基础上,对下一时刻(下一帧)对目标快速再定位。目前建立运动模型再预测,用到的都不是深度学习的内容。这里就不展开了。




写到目标检测,可能大多数的工业应用就都是在视频上了。

视频上目标检测与图像上目标检测的不同点在于:https://www.zhihu.com/question/52185576/answer/163435616

前段图像识别 图像识别解决方案_深度学习







2.一些实现方案的总结

图像识别的应用场景,除了路边监控,面部识别密码锁、车载系统(行车记录仪,自动驾驶)-------实时性要求高,有脐带电源,或者医疗图像识别-----------实时性要求低,还有无人机这种实时性要求高,对功耗也有要求的场合。这就需要深度学习框架足够精简,且有软件支持。

目前在移动端上部署深度学习框架的方案有online和offline两种,下面是offline的一些方法:

1.跑阉割版的算法,功耗低,这时的精度就会随之下降。

2.做成深度定制的硬件,比如FPGA,速度和功耗都能得到保障,但是成本高。

3.在功耗要求不是特别严格的情况下,移植TensorFlow、caffe等等,这里是一个TensorFlow 在安卓上部署的例子:

https://link.zhihu.com/?target=https%3A//github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android

4.有听过在系统层写cuda代码的……