整个文章内容是在微信公众号oldpan播客中的原创文章进行的笔记总结和个人感悟
本人本科通信,研究生是cv医学影像方向,初识算法模型相关还是在本科参加数学建模,那个时候用matlab实现最简单的机器学习方法解决的问题,后来研究生开始了解深度学习和CV相关的知识和代码,整个学习过程也不是很系统,很多问题也是一知半解,到现在做算法工作,发现AI整个方向有太多不我了解的,某天看到了老潘的文章,首先普及了我很多基础知识和词条,也能很清晰的指清楚学习的方向。
CV 深度学习
最初的学习是导师给我们的学习课程,《TensorFlow实战Google深度学习框架》。其实那各时候大多代码都是pytorch了,tf用得比较少了,刚开始学习我因为tf和pytorch得差异晕了好一阵。不过技术更迭,跟着大波走总是没错的。最近,pytorch重写SAM代码,使代码速度比原始实现快 8 倍,而且没有损失准确性。更加坚定了我pytorch的选择。
不过归根结底,不论是Pytorch还是TensorFlow都只是你学习的一个工具,而且这俩库都很牛逼,哪个你用的舒服,就用哪个就对了。不顺手就扔掉,只不过现在tf1还是tf2可能都没有Pytorch顺手,所以用Pytorch上手的人更多,更有甚者,import torch as tf
深度学习资料:
- 《周志华的机器学习》
- 《机器学习实战》
- 《深度学习》(大家熟知的圣经)
- 吴恩达的机器学习课 (个人非常推荐)
- CS231n (也很推荐)
- OpenCV系列(星云大佬、OpenCV3官方文档)
- C++各种乱七八槽的书(primer、effective、more effective)
- 图像处理相关的书
算法工程师的流程与方向(个人向)
在学校主要精力都在构建模型算法提点和发论文上,没有涉及到过实际场景应用和部署相关内容,在工作之后有很多欠缺需要弥补的。工作后,模型算法只是落地的一个步骤,针对各种场景训练模型需要多个步骤,我总结了一下,大致分为以下:
- 预研确定项目需求
- 数据收集和标注
- 模型选择和优化
- 模型部署及硬件优化
当然,这些步骤是需要在某些步骤之间根据效果和需求,进行及时的调整的,并非能够完美的完成一个步骤而进入下一个步骤。
预研确定项目需求
不同的项目产品,有各种合理和不合理需求,我们根据项目方向进行竞品调查和方法预研。竞品调查就是针对这些需求进行市面上的产品在功能、效果和实现可行性上进行分析,方法预研就是检索目前能够实现这些方法的各种文献。
关于竞品调查,首先要熟悉所在行业市场,并了解行业top的产品和最新动向,最好能结实行业top内伙伴是最好的;
其次,方法的预研最好是先通过专利进行一波初筛,同时也能够了解行业top的技术路线,然后根据最新的论文去弥补在细节方法上的不足。
数据收集和标注
相较于自然图像,医学图像收集是比较困难且质量参差不齐的,所以数据的整理和清洗是非常有必要的。但是这些都可以建立自己的脚本库来实现。
数据标注就是各显神通了,目前有很多基于Segment Anything Model的标注软件,在检测和分割上都有很好的效果(如果需要可以私我)。
数据的收集整理和标注是很耗时的,因为数据量多少、数据质量和标注质量的好坏都会对后续模型训练和泛化有很大的影响。认真把这步做好,后面都会提效。
模型选择和优化
模型环境:重复的配环境是很耗费时间的,所以在一次配完后可以用docker
模型训练:主要涉及到调参、实验结果分析,小问题可以通过loss和模型的小改动实现,大问题就需要再去找更SOTA的模型了。
其实这阶段只要有经验了不会太耗费时间,主要还是要不断学习,了解最新的论文和方向,在遇到问题时才能有更好的解决方法。根据目前结果寻求产品反馈,后续大部分都是一些性能的优化了。
在研究生阶段,能做到的也就是到这一步了,开发新的算法都是那些大佬和研究院的工作,对于迫切落地的企业来说,在目前情况下能够尽快跑通的项目才有价值。尤其是在医学领域,有些任务连医生完成都很困难,更何况算法呢?0-50的任务就直接可以pass了,50-90的才有改进的空间,90+再从算法上提升还不如考虑一下硬件。当初找工作,我以为自己就是收集收集数据,调调模型参数的日子里了,但刚进入岗位就给不怎么会C++的我重磅一击。
(剩下内容学习中,会更新的~)