图像标注的操作过程(基于labelimg的自动标注系统)
我们知道在深度学习中,大家做得最多的工作就是数据处理,数据处理的过程占据了整个产品生命周期的大部分时间,因此如何高效的进行数据处理,是缩短产品周期的关键。
为了保证一个算法的不断优化,我们往往在训练完一个模型之后,需要进行模型的不断迭代,迭代过程中,我们需要将识别错误的样本挑选出来并进行二次标注。对于一个小的算法团队来说,标注增加了用人成本,小批量的数据交给外包反而不太合适。因此这里二次开发labelimg,形成了一个自动标注系统。
什么时候需要自动标注自动标注需要我们实现一个训练好的模型。这个模型能够帮助我们识别实际中出现的情况,比如检测算法,此模型应当能够识别大部分数据,对于少部分识别不了的,识别错误的,需要人工手动确认。
就是之前我所写文章中出现的黑色头发和黑色帽子的识别例子。我们需要将识别错误的、未识别的数据列举出来,然后投入到数据集中进行再次训练。
这样我们能够简单确认目标有没有被正确框中,对于没有框中的少部分数据进行二次标注。当然,为了保证准确性,这里检测的阈值应该设置相对较高。
修改labelimg这里我们以yolov5训练并转换成onnx的模型为例,介绍一些细节。
读取图片
我们查看代码可以知道,labelimg打开文件之后,直接读取下一张图片并进行展示,并且其逻辑是:先导入图片,然后在文件下找是否存在该标注文件,然后导入标注文件。因此我们只需要在导入每一张图片后直接保存识别结果就可以了。这里修改了默认,让图片和标注文件在同一个文件夹下。
保存的逻辑很简单,就是利用xml.etree.ElementTree根据标注的xml结构进行添加并保存即可。这里不再赘述。
保存xml
效果
识别效果
自动标注系统完成之后,就不用脚本先生成标注框,然后打开labelimg一个一个地去确认是否标注正确了,直接当场确认,效率提高了一些。
后续将在界面上修改,添加更多检测框架,一键导入模型。
今天尝试头条代码块发现居然不能使用,真是醉了。
本文完
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com