1. 分析问题:需要解决的是哪种类型的问题,图像分类问题还是目标检测问题,等等。
a. 图像分类问题:这张图属于猫,还是狗(同时有猫狗时,就傻了)。
b. 目标检测问题:一张图中是否存在猫或者狗等等,存在的话,在哪?用矩形框标识(x,y,w,h)
2. 根据问题选定模型,比如分类问题,选择mobilenet,检测问题使用YOLO
3. 问题分析,耗时和精度分析,这两者常常是矛盾的。
精度要求高,输入图片可以更大,特征更明显;网络可以更复杂,如YOLOv5中 包含n,s,m,l,x五种网络,网络宽度和深度依次递增。精度越高,耗时也越长,对机器性能要求也更高;
对于某些问题精度到99%就足矣,但对时效性要求很高,那就可以选择网络相对简单,输入图像也可以相对较小。
4. 数据集准备:数据集要求跟实际应用场景一致或者相似。数据集充分,均匀分布,涵盖不同应用场景(天时(不同天气)、地利(不同地点)、人和(不同类型目标)),要求标注准确、精确。
例:
每个类的图像:每个类最好 >=1500 张图像 (图像个数)
每个类的实例:推荐每个类≥10000个实例(标记对象)(每个类里面的东西的个数)
图像的多样性:必须能代表所部署的环境。对于现实世界的用例,我们推荐不同时间、不同季节、不同天气、不同光照、不同角度、不同来源(在线抓取、本地收集、不同相机)的图像。
标签的一致性:所有图像中所有类的所有实例都必须被标记。
标签的精确性:标签必须紧紧地围住每个对象。物体和它的边界框之间不应该有空格。任何物品都不应该缺少标签。
5. 超参修改,比如样本是否需要平移,翻转,马赛克等等
6. 开始训练,评价指标:观察mAP@0.5 和mAP@0.5:0.95值,精度稳定不再上升,或者看results.csv文件
7. 使用训练出的模型,应用到实际场景中,搜集异常的数据,重复第6步,不断迭代优化。
8. 大功告成!