算力和数据是影响深度学习应用效果的两个关键因素,在算力知足条件的状况下,为了到达更好的效果,咱们须要将海量、高质量的素材数据喂给神经网络,训练出高精度的网络模型。吴恩达在深度学习公开课中提到,在算力知足要求的前提下,模型效果会随着素材数量的增多而变好,理论上没有上限。实践证实,在普通基于深度学习的应用开发过程当中,素材的数量和质量对最终模型效果的影响出乎意料的大。注意这里提到的“素材质量”,光有“素材数量”还不够,咱们还要保证素材标注的质量。本文以目标检测应用为例,来讲明如何保证图像素材标注过程当中的质量。html
常见目标检测算法算法
常见目标检测算法有SSD、Yolo以及Faster-RCNN等(实际上这是我用过的几种),之间的区别能够上网搜到,我以前的博客也有提到过,各有优劣。三种算法模型训练须要的素材格式基本相同:网络
模型训练的过程就是将上述素材数据喂给神经网络,反复优化,最后获得效果相对比较好的模型,而后模型就能够上线作推理了。各类目标检测算法模型最终推理输出来的结果也基本同样,对于给定的二维输入图像,输出该图像中检测到的目标信息,包括目标坐标/大小、目标类型以及该目标的可信度,通常用一个list表示,list中每一个元素格式为(left,top,width,height,class,score)。Score表明模型认为该目标的可信度,能够经过该值过滤部分检测结果。工具
图像素材标注学习
经过这个PPT咱们知道,深度学习模型训练的过程就是不断地调整参数,使用预先标注的具体素材数据不停地去拟合通用场景,最后可以准确预测非素材集中的输入。模型训练须要大量素材标注做为基础,就目标检测而言,素材标注的过程就是人工用工具在图像中标出感兴趣的目标,并生成标签数据。优化
图像素材标注工具备不少,不少人在用的是labelimg,主要用于目标检测素材标注:spa
如上图,对于每张图片,人工标出图片中感兴趣的目标,好比图像中的人、汽车、卡车等等。保存后,每张图片对应生成一个txt文件,该txt文件中记录人工标注的结果:code
如上图,该图片一共标出9个目标,2个Person、3个Car,4个Truck,每一个目标对应一行,第一列表示类型ID(从0开始)。模型训练时,将图片和标注数据同时喂进神经网络,不断调整参数,到达效果最优。视频
素材标注质量如何影响模型的准确性?htm
图像素材标注时,须要人工标出目标的大小/位置,用一个矩形方框表示,并给出目标类型,模型训练时会根据标注的素材来调整参数。人工标注有时会出一些问题,好比目标矩形框位置不对(框子太大、过小、位置偏了),或者目标类型标错,原本是一我的,人工给它标成了汽车。这些标注时的问题都会影响最终模型训练的效果,仔细想一下,你不断告诉神经网络人是车、而车是人,最后神经网络都分不清了。正常状况下,人工标注的方框大小、位置应该合适,矩形方框恰好将目标包围住,若是框子太大、或者过小、甚至位置偏移了,都会影响神经网络对矩形方框中真实内容的判断。
若是仅仅追求素材的数量而不顾素材标注的质量,即便数量再多,也没有效果,实践证实,模型效果反而愈来愈差。
图像素材标注重点
目标检测用到的素材,在标注过程当中须要注意如下几点:
1. 标注方框大小合适
所谓大小合适,即矩形方框应该恰好将目标包围住,之间的间隙不能太大,也不能过小。太大过小的话,最后模型在推理时,也会出现目标框得不许的状况,或者在视频图像检测中,出现先后帧目标抖动严重,不能锁定。同时在标注的时候,必定要保证矩形方框包含了目标的轮廓信息,由于轮廓信息对于模型训练来说很重要,它能够区分不一样类型的目标。下图标注的矩形方框过小:
2. 标注方框位置合适
缘由跟上一条相似,下图虽然矩形方框大小合适,可是明显位置偏太远了:
3. 须要丰富多视角的素材
这个其实跟素材的准备有关,咱们不能只标几种视角的素材图片。在道路监控应用场景中,素材应该涵盖各类摄像机视角,正前方、正后方、左侧前方、右侧前方、左侧后方、右侧后方以及俯视视角等等。每种视角的素材都应该被标注,这样训练出来的模型才有更大的通用性。
4. 目标被遮挡也要标注
不能只标注图像中完整的目标,被遮挡的目标,只要人眼能看清是啥的都应该被标注,而且矩形框只须要包含看得见的部分便可。这样作的缘由跟上一条相似,提升模型的通用性,实际应用场景中,不少目标被遮挡,模型仍然须要将其检测出来,因此咱们须要标注相似的素材。下图道路拥堵,一些车身被遮挡,可是明显能够分辨出是什么目标:
5. 小目标也不能漏掉
虽然不一样的算法对小目标的检测效果不一样,好比Yolo对小目标检测效果比较好,可是前提是咱们须要准备小目标的素材标注。一张图片素材中,近处的大目标须要标注,远处人眼看得清的小目标一样须要标注。原理跟上一条相似:只要人眼能分清是啥的小目标,都应该标出来。下图远处的小目标能够认出是小汽车:
6. 人眼分不清是啥的不要标
不少时候,因为素材图片自己的缘由、或者目标被遮挡大部分、或者远处目标实在太远,人眼没法分辨是什么,虽然知道是一个目标,可是不知道它究竟是汽车Car仍是客车Bus甚至是人,这种时候不要标注。不然会给神经网络带来误导。下图被遮挡部分太多,能够忽略不用标注:
如何保证素材标注的质量
上面说了这么多,其实要保证素材标注质量的有效方式有两条:
1. 不要光追求速度
给作素材标注的团队强调,虽然有数量上的指标,可是指标不能定得过高,若是定得过高,你们都为了完成数量任务,天然会忽略了质量。最后标注质量确定上不去,类型出错、方框位置忽大忽小,必然须要大量返工。
2. 专人作素材审核
专门找一小撮人作素材审核,主要负责素材标注后的验证,看看类型是否出错,方框的位置、大小是否错得离谱等等。千万不要小看这项工做,它的做用跟code review同样,容易被忽视,其实它提升效率不是一星半点。