1 开始第一个项目
- a 数据收集整理
- 比如Imagenet水果识别,10种水果图片,每种几千张
- b 数据清洗
- 剔除噪音图片,
- 方法1,训练数据,将分类错误的剔除;
- 方法2,部分图片有xml,有图片坐标位置,把图片抠出来
- c 基础网络选择
- 根据gpu显存情况、业务需求、数据集大小选择, 部署移动端一般选择轻量高效率,比如ShuffleNet、SqueezeNet、MobileNet等小型网络,体积小,速度快,效果还可以;如果是部署在服务器或者PC端,有很多,比如ResNet、DenseNet等
- d 框架选择
- keras用的多,caffe直接调接口就可以用,比如测试阶段,但是caffe速度快,使用者较多,但是linux安装caffe比较考验耐心
- e 模型训练
- loss损失值跟损失函数相关,关注loss变化趋势,训练和验证都下降,比较好,否则可能过拟合,比如训练下降,但是验证不变甚至上升。还有一种特殊情况,开始训练一直上升然后变成NaN,可以调整学习率,现在自适应调整学习率
- f 模型优化
- 调参,现在的话使用当前训练过的模型,剔除噪音,再训练;fine-tune微调比如把原先训练好的模型取全连接之前的所有卷积层的参数,作为新的模型初始参数,调优
- g 测试
- 代码取摄像头视频流测试模型,或者写一个flask的web服务用docker打包进行测试,或者做成安卓app在手机测试
2 如何快速的出成果–善用开源
- 上网搜相关技术博客,如人脸识别MBP+CNN、SDM网络框架,然后github搜开源代码,跑通代码,根据需求作比较,改代码,最后完成任务,写代码多看多练
3 如何解决没有相关开源资源的问题–拆分组合
- 不同算法拆分组合
4 掌握一手信息–社区、公众号
- 群、公众号,固定时间看一看
遭遇瓶颈
- 1 如何使用高级方法解决问题
- 比如选框,用高斯概率模型选最优框
- 2 逃离舒适区
- 多尝试交叉地带,体会更深
- 3 如何面对瓶颈期