AI算法工程师的一些含泪经历
前一段时间一直在优化部署模型。这几天终于来了需求,又要开始重操训练一些新模型了。趁着这次机会总结了下之前的一些训练模型的笔记,可能比较杂,抛砖引玉!当然这是不完全统计的经验,除了训练部分,还有很多部署的坑没有写。
训练模型阶段 1.算法工程师50%的时间是和数据打交道,有时候拷贝数据(分别从多个文件夹拷贝到某一文件夹);有时候筛选数据(过滤掉一些质量不好的数据);有时候把数据换个名字、加个前缀(为了后续训练的时候区分数据的特性,比如多尺度、多种图像增强策略)等等,这些工作可能一个月要重复n多次, 因此最好总结起来;可以用Python或者shell脚本来处理,或者用jupyter notebook存自己常用的文件处理代码。
2.如果你不清楚拿到数据的来源和可靠度,可以先用 find ./ -size -1k -exec rm {} 等命令简单过滤一下,刚才这个命令是扫描1k(或者其他值)以下的损坏图像并删除掉,当然也可以设置其他的参数。很多时候给你的图不一定都是正常的图,最好提前筛一遍, 要不然后续处理很麻烦 。ASP站长网
3.并不所有的数据都已经有标注信息,如果收集了一批数据要拿去标注,正好公司也有标注人力,可以尝试将这批数据打上预标框让他们再去调整或者补充标框,这样效率更高些。至于预标框怎么打,可以先让模型训练一小批数据,训练个召回率高的小模型,然后预测打框就可以,也可以用一些老模型打框;不过有一个现象比较神奇,标注人员在标注的时候,对于有预标框的数据,标注的质量反而变差了,虽然速度上来了,这是因为大部分标注人员不想调整,这时候需要你好好监督一下,要不然后续模型精度上不去大概率就是数据的问题。
4.有时候模型的指标不仅仅看准招,当模型给别人提供服务的时候,要看PM那边怎么看待这个模型输出结果在实际场景中的使用效果;对于检测模型最终的输出分数,最终给到使用方的框一般是根据你取得分数阈值来设,设的低一点,那么框就多一点(召回率高),设的高一点,那么框就少一点(准确度高);不同方式不同场景设置不同的阈值有不同的效果,说白了模型效果好坏很大一部分依赖于场景;这个情况在实际项目中其实挺常见的,说白了loss也好, accuracy也好,都是很片面且脆弱的评估指标。与模型结构以及评测的数据分布都有很大关系,具体如何选择模型应该与应用场景强相关。
5. 当模型遇到badcase的时候,简单粗暴地增加模型的容量效果可能并不好 ;因为这个badcase大概率和场景强相关,这种情况下最好就是收集badcase,可能会有使用你模型的人给你提供badcase,但这种效率比较低,看提供者的心情or紧急程度; 你可以直接捞一大批模型使用场景的query然后使用当前模型做检测,收集相应类别置信度比较低的case,然后挑选出来; (编辑:焦作站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |