
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
学习算法是每一位软件编程开发程序员都应该熟练掌握的一个编程技术,下面我们就通过案例分析来简单了解一下,算法工程师需要掌握的知识点都有哪些。
算法工程师50%的时间是和数据打交道,有时候拷贝数据(分别从多个文件夹拷贝到某一文件夹);有时候筛选数据(过滤掉一些质量不好的数据);有时候把数据换个名字、加个前缀(为了后续训练的时候区分数据的特性,比如多尺度、多种图像增强策略)等等,这些工作可能一个月要重复n多次,因此好总结起来;可以用Python或者shell脚本来处理,或者用jupyternotebook存自己常用的文件处理代码。
并不所有的数据都已经有标注信息,如果收集了一批数据要拿去标注,正好公司也有标注人力,可以尝试将这批数据打上预标框让他们再去调整或者补充标框,这样效率更高些。至于预标框怎么打,可以先让模型训练一小批数据,训练个召回率高的小模型,然后预测打框就可以,也可以用一些老模型打框;不过有一个现象比较神奇,标注人员在标注的时候,对于有预标框的数据,标注的质量反而变差了,虽然速度上来了,这是因为大部分标注人员不想调整,这时候需要你好好监督一下,要不然后续模型精度上不去大概率就是数据的问题。
有时候模型的指标不仅仅看准招,当模型给别人提供服务的时候,要看PM那边怎么看待这个模型输出结果在实际场景中的使用效果;对于检测模型终的输出分数,终给到使用方的框一般是根据你取得分数阈值来设,设的低一点,那么框就多一点(召回率高),设的高一点,那么框就少一点(准确度高);不同方式不同场景设置不同的阈值有不同的效果,说白了模型效果好坏很大一部分依赖于场景;这个情况在实际项目中其实挺常见的,说白了loss也好,accuracy也好,都是很片面且脆弱的评估指标。与模型结构以及评测的数据分布都有很大关系,具体如何选择模型应该与应用场景强相关。
测试集很重要,测试集一般不是从训练集中切分出来的,从训练集中切分出来的是验证集;验证集一般用于判断这个模型有没有过拟合、有没有训练走火入魔啦,如果想用验证集来判断模型好坏的话,往往并不能代表模型实际的水平;好是有测试集,而且测试集是和模型采集批次不同训练模型的时候比较接近实际水平的评价标准;如果没有测试集也可以看训练集的loss大概确定一下,一般来说只要不是demo级别的场景,模型不会轻易过拟合,我们的训练集往往有很重的图像增强策略,每一个epoch可能图像分布都不一样,这时候其实也可以选取模型model_last。
测试转换后的模型是否正确,一定要保证输入图像的一致;这里的一致指的是输入图像的数值必须一模一样,dif为0才行;一般来说我们输入的模型的图像范围是0-1,通道数一般是彩色也就是RGB,不过需要注意这个彩色是否是假彩色(有时候为了传输节省资源会传灰度图再实际推理的时候变成彩色图,对于某种场景来说,假彩色和真彩色的精度相差不大),输入尺寸也要保持一致,是否需要padding(padding成0或者127或者255,这几种padding方式队对结果影响很大)、需要补成32的倍数、或者需要大边小边限制,一定要保持一致;对于类别,这样测试模型才能够保证准确性。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。