做了一年的图像识别开发,我的小思考

Posted 中为总体人分享汇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了做了一年的图像识别开发,我的小思考相关的知识,希望对你有一定的参考价值。

时光飞逝,转眼间我来到总体室工作快要一年了,在这一年里我收获了很多。其中对于图像识别开发业务方面,我大体有了一些了解,接下来详细说说自己的一些想法。


目前,视觉算法的开发大多采用深度学习的方式,但深度学习算法作为新晋流行的识别方法,其还属于弱人工智能阶段,有很大的局限性,比如它只能局部泛化,如果新的输入与训练时看到的不同,那么深度网络所执行的从输入到输出的映射就会变得很差。而对于一个实际项目,其包含了多样的任务需求,作为一个开发人员,既需要思考目前深度学习技术的水平,又需要考虑自己的实际情况,以此去选择自己可以解决的问题。比如遥感影像中小目标的识别,以自己目前水平很难达到好的识别效果,而有些任务是自己可以尝试去解决的,比如遥感影像中建筑物的识别。


定性选择模型类别

1



当选择了某项任务之后,就需要去定性到底是采用深度学习中目标检测类模型,还是语义分割类模型。语义分割模型从本质上讲是对像素进行分类,与目标检测相比难度要小一些,但它依赖于更加细致的像素级标注。一般具有连续性的物体适合利用语义分割模型,单个独立的个体适合利用目标检测模型。


选择具体模型

2



当决定了采用哪类模型,接下来要去选择的是哪个具体的模型。模型到底是选择新的还是选择旧的,也是需要抉择的一点。新模型往往具有更高的识别效果,但未经过时间的检验,而且一旦遇到bug很难去借鉴别人的解决方法,旧模型效果相对一般,但应用风险较小一些。


调整模型的不同模块

3



当决定了采用哪个具体的模型,就需要根据实际的应用,去调整模型的不同模块。比如选择怎么样的骨干网络,如果项目对识别效果要求较高,可以采用较深的骨干网络,如果对实时性要求较高,可以采用较浅的骨干网络。还有针对Loss损失函数的选择,包括交叉熵,focal loss,iou loss,Diou loss等。另外如果数据量较少,还需要考虑去扩展模型的图像增强模块,这也是一种简单粗暴且可以实现提高模型效果的方式。


模型部署

4



当算法开发完成之后,就需要考虑模型的具体部署。因为目前深度学习模型大多都是在python平台下开发完成的,而软件组部署的时候是c++平台,这时候就需要利用pytorch或者tensorflow等框架提供的c接口对模型进行转换。此外,因为有的模型存在前处理和后处理的情况,而这些代码都是python写的,这个时候需要考虑自己去写相应的c++代码,还是去混合编程调用python代码。



以上梳理了下自己对于深度学习图像识别开发工作的一些想法。我认识到自己作为新人,接下来还有很多的东西需要去学习,还有很多的地方需要去改进,努力去提升自己的工作能力依旧是重中之重。


以上是关于做了一年的图像识别开发,我的小思考的主要内容,如果未能解决你的问题,请参考以下文章

深度 | 谷歌I/O走进TensorFlow开源模型世界:从图像识别到语义理解

一个提升图像识别准确率的精妙技巧

纳秒级图像识别!德国开发出即时图像识别芯片

图匠TechTalk | 图像识别在翻拍应用上的技术新思考

2020年的图像识别技术,以精度和落地成为洞悉世界的眼睛

我的电赛作品:BP算法鸟类图像识别系统