图像处理任务


算法与优化具体任务步骤

  1. 首先要评估一下这是什么图像处理任务(分类,检测,分割,识别等等),结合现有数据,看看该用什么样的算法(深度学习,传统机器学习,还是普通的图像处理就好)。指标提不上去,从源头上看,是不是任务定义的就有问题,比如,要对图片中的猫和狗进行识别,我们把它定义成一个简单的分类问题,但是如果有些图片中有猫又有狗,那整图分类就不好使了,定义成检测问题会不会更好。

  2. 任务定义好,采用的算法确定好了,就可以准备数据了。不管用深度学习还是传统机器学习,都需要大量的数据进行训练,这一步很重要,怎么强调都不为过,任务定义清楚以后,干净的数据集是整个任务能朝着既定方向行进的基础。

    一般算法工程师不太会直接标注数据,很多是通过外包或者专门的标注人员进行标注,而这些人或因为责任心问题,或因为对任务不了解,他们标注的数据大多不能直接使用,需要检查修正,如果算法工程师直接拿来就用,而正好这批数据标注的不干净,那么我们采用再先进的算法,效果也好不到哪里去。很多人可能关注不到这一点,但是实际工作中,很大比例指标上不去的情况是因为数据集不干净,所以题主也可以看看自己的数据集是不是有脏数据。

    原始数据准备好以后,即使这时候很干净,也不能保证后面结果就是好的,因为我们为了提升算法的鲁棒性,可能还需要做一些==数据扩增==,而我们的算法工程师如果对任务的了解不够透彻,数据增强也可能会使指标变差。比如我们关注一个物体的颜色信息,但是我们的[数据扩增]里面加了随机颜色变换,那后面的结果肯定会很奇怪。大家可能会感觉很奇怪,怎么可能会出现这种情况,但是不合适的数据增强导致指标差的情况,比比皆是。

  3. 任务定义好,数据准备好,也就可以出模型或者出算法了。如果选择深度学习,很多的训练技巧还需要去掌握,各种超参的调整,loss的选择,训练时间,训练显存占用的控制,推理计算量,推理时间的控制等等,都需要去考虑。如果是用传统机器学习或者传统图像处理,还需要去考虑手工选取特征,这些特征是不是具有普适性。

  4. 以上三点做好,基本出来的模型或者算法的指标就有个基本保证,baseline是有了,后面就是迭代优化了。当然怎么快速迭代,怎么加数据更有效也是一个很有技术含量的工作,是无脑添加,见到数据就加;还是有针对性的加,有目的的加,这些都值得仔细去考虑。如果使用传统图像处理算法,还得注意在迭代过程中遇到的新数据,老的特征能不能cover。

一个算法的落地就是从需求调研,制定baseline,采集数据,出baseline之后大优化,千万不要急着上头看SOTA论文,没用的。工业界优化最重要的就是:数据增强,中继监督(额外的监督信息),比如你检测任务如果有这个资源加上分割检测一定精度高,知识蒸馏,正负样本平衡的技巧,Multi_source多数据源优化特定badcase。模型转出来后上剪枝,量化。基本上一套下来只要你的模型不要太离谱,数据质量高些,基本上效果是没啥问题的。如果有问题的话,那就加数据。


图像处理的三大任务

人工智能大概分为两个方向:CV(图像处理)和NLP(自然语言处理)

图像处理cv方向在图像处理中可分为三大任务,即图像分类,目标检测和图像分割

1.图像分类

把多种图像分类识别出来

最优的代表网络:resnet网络和VGG系列网络

例如把猫狗进行二分类

2.目标检测

把目标图像用回归框框出进行类别识别,对目标检测的网络可以分为两大派:==一次检测和两次检测==

两次检测的最优的代表网络是faster rcnn系列网络,一次检测的代表网络是yolo系列网络

一次检测在保证识别准确率的情况下,检测速度相对较快,因此yolo系列的网络用的较多

3.图像分割

把目标图像的轮廓分割出来,分为语义分割,实例分割,全景分割

语义分割

语义分割 就是需要区分到图中每一点像素点,而不仅仅是矩形框框住了。但是同一物体的不同实例不需要单独分割出来。

实例分割

实例分割 就是目标检测和语义分割的结合。相对目标检测的边界框,实例分割可精确到物体的边缘;相对语义分割,实例分割需要标注出图上同一物体的不同个体

代表网络是mask rcnn网络,既对图像进行目标检测又进行图像分割

全景分割

全景分割是语义分割和实例分割的结合。跟实例分割不同的是:实例分割只对图像中的object进行检测,并对检测到的object进行分割,而全景分割是对图中的所有物体包括背景都要进行检测和分割。


文章作者: Nico
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Nico !
  目录