要求:从图像(图3)中检测并识别出车辆。车辆检测和识别算法可采用深度学习、BP网络或特征匹配等方法,方法不限。
图5-1待识别图像
原理:ModelArts是面向AI开发者的一站式开发平台,支持自动学习的功能,还预置了多种已训练好的模型,ModelArts相对而言降低了AI应用的门槛,是一个高灵活、零代码的定制化模型开发工具,平台根据标注数据自动设计模型、自动调参、自动训练、自动压缩和部署模型。本次实验使用自动学习中的物体检测功能,用于识别图片中车的数量和位置。其简要流程图如下
图5-2自动学习操作流程图
环境:华为modelarts平台+OBS存储
1.熟悉平台:由于是第一次接触华为的modelarts平台,首先先用华为官方给出的云宝识别项目,熟悉了一下modelarts的使用方式,由于是官方的数据集和案例,很准确
图5-3云宝识别
2.准备数据:从老师给出的资源平台和自己从网络上下载下来的图片中挑选一部分比较清晰的25张图片,上传到华为的对象存储服务(要注意与modelarts项目在同一区域),尽量选择了比较多的角度
3.创建项目:在控制台中创建一个物体识别的自主学习项目
4.数据标注:这部分很重要,因为模型不需要自己设计,参数也不需要自己调节,所以标记的准确度会很直接地影响识别的准确性,当图片中存在多个物体时,要尽量做到不重标不漏标
图5-4比较理想的情况下标注
图5-5车辆比较多的情况下标注
5.自动训练:选择合适的训练相关参数,训练验证比例选择默认的0.8、预期推理硬件使用GPU,最大推理时长和训练时长使用默认值500ms和1h
但是训练完成后发现相比于云宝的91%准确率,准确率太低了,这里推测是数据量比较小,于是决定试试加大数据量再试一次
图5-6第一次训练完成
6.增加数据量:又上传20张图片,再次标注,保持训练参数不变,重新进行一次训练,可以发现,训练时长有所增加,准确率也有所提升,但是61%仍然比较低,个人猜测一部分原因是部分图片中手动标记不够准确,有些图片中车有重叠,而且远处的车所占像素点很少,都会在一定程度上影响准确率
图5-7第二次训练结果
图5-8车辆重叠的情况
图5-9有遮挡的情况
7.部署上线:虽然准确率有待提高,但还是觉得部署上线测试一下效果,这部分主要要注意上线时间,如果长时间忘记关闭可能导致耗尽免费时间。待部署成功后,上传了实验中要求的图片和其他一些图片进行测试。
四、实验数据记录及数据处理
1)首先测试了一直只有一个车的图,发现识别到了车,但轮廓不准,而且可信度只有87%,应该是视角的影响
图5-10最简单情况的测试
2)对于实验要求的图像,识别效果倒是非常好,近处两个车都准确识别到了,而且可信度很搞,甚至远处不太清晰的车也识别出来了
图5-11实验要求测试图
3)然后测试一个与实验要求类似视角和车辆情况的图,效果也非常不错,说明此处实验基本达到了要求
图5-12与实验要求类似的场景
4)接下来测试了一个比较极端的情况,堵车场景,画面中有非常多的车,发现识别效果不够理想,近处识别虽然不错,但是远处很多车辆没有识别出来(当然也有可能是华为的modelarts对目标数量有限制)
图5-13比较阶段的堵车场景
1. 本次是一次对人工智能和深度学习的入门的摸索,虽然没有涉及到自己选择模型和调节参数,也不会出现前几次实验中自己写出来的各种bug代码,全程依赖于华为云的框架,但这次实验让我以一个更简单的方式熟悉了AI,也激发了我的好奇心和求知欲,等读研/工作后一定要更深入地去了解这一平台,了解深度学习的各种知识,参与相关实践
2. 实践中不难发现,只要训练样本选择的合理得当,加大样本量可以提高识别的准确性,但是相应的,也需要更长的训练时间,在华为云中45张图片消耗了大约8分钟左右的时间,而且如果想投入使用,肯定需要大幅的地增加样本量,,可能需要更长的时间。
3. 对于近处的车辆,使用传统的检测方法应该也可以获得比较好的检测效果,但对于有些远处的车辆,特征不明显,如果使用传统算法,可能会难以进行检测,这个时候深度学习的优势就可以很明显地体现出来了。
4. 如果有车辆在图像边缘部分,在大多数情况下还是可以识别出来的,但是可信度并不高,只有40%左右
5. 可能是由于样本量不足或手动标记不够准确的原因,当图片中多辆车之间相互遮挡和车辆很多时,识别的效果不尽人意