瑞芯微Rockchip开发者社区
直播中

王鹏

7年用户 1360经验值
私信 关注
[经验]

RK3399pro实现安全帽识别

  RK3399pro实现安全帽识别
  前段时间公司智慧工地项目要实现安全帽识别,使用 firefly 的RK3399pro的边缘盒子。最初我们找算法公司买现成的算法,由于我们的使用场景与环境非常复杂,所以实际使用时总是有问题。算法公司不愿意免费优化算法,所以公司决定自己解决。
  我们公司没有搞人工智能算法的,按着网上找的什么tensorflow、pytorch 、yolo 我们小组越学越糊涂。说实话我们真心想学会,算法工程师工资高,学会了怎么训练算法并移植到边缘盒子,这样可以找一个工资更高的工作。
  安装
  ​安装很简单,点击下载setup.exe,然后下一步、下一步就可以安装了。
  安装后有会有两个程序:
  AI Builder : 训练算法用的。
  图片标注工具:标注训练数据用的。
  有一点要注意,如果自己的电脑安装有英伟达芯片的显卡就勾选CUDA,其他芯片的显卡就不要勾选。我的电脑电脑是RTX1070 8G显存。
1.jpg
  我另外一个同事电脑i3的CPU,没有独立显卡,也能很好的训练出算法。
  以前我们被算法公司忽悠,我一直以为训练算法的机器至少要 i7已上的CPU,要好几块RTX3090的显卡才行。现在才知道普通PC就可以训练AI算法了。
  训练算法
  这个工具完全颠覆了我对算法的认知,感觉是个人就能训练出AI算法。
  最多就三步:标注数据、训练算法、导出
  第一步:标注数据
  收集足够的图片放到一个目录中,打开“图片标注工具”标注这些数据。只要会用鼠标拉框就能标注数据,很简单。
  网盘中有标注好的安全帽数据,我就直接拿来用了。标注数据也省了。
  这个数据中把没戴安全帽的头标注为 head, 把戴了安全帽的头标注为 helmet, 没戴在头上的安全帽没有标注。这样算法就不会把没戴在头上的安全帽识别为戴了安全帽的头。
  第二步:训练算法
  新建训练任务
  输入任务名称,我起名“安全帽识别”。
  选择算法要运行的设备,我用的是3399pro边缘盒子,选择“RK3399-PRO NPU”。
  如果要训练能在手机上运行的算法,可以选择“Android 手机”。这个工具真的很良心,还能做手机上的算法。
  选择模型大小。
  创建好训练任务后,将训练数据设置为收集的安全帽图片的目录。
  点击训练按钮
  点击“开启训练”按钮就开始训练了。这太简单了吧
  第三步:导出模型与SDK
  训练差不多的时候就可以导出模型。
  点击“导出模型/SDK”按钮
  在弹出的对话框中,设置要导出的内容与要保存的目录。
  我们的项目使用的是C++语言,所以我选择“C++ SDK”。
  设置好后,点击“导出”按钮。
  说明文档、SDK、模型、Demo源码都会保存到指定的目录中。
  集成算法
  导出的文件 sdk.zip 里面有如下文件
  文件 model.model:训练好的算法模型文件。
  class_list.txt:模型识别的物体的类别列表。该文件列出了类别编号与类别名的对应关系。
  目录 libs : 起点物体识别SDK的库文件与用到的第三方库。
  目录 demo:是使用 SDK 的范例代码。
  文件 get_key : 用于获取设备 licnese key 的程序。
  调用流程
1.jpg
  范例代码
  下面是使用训练出来的模型的范例代码:
1.jpg
2.jpg
3.jpg
1.jpg
  模型不准怎么办
  用这个工具最大的好处是,自己可以随时针对真实使用场景提升模型的精度。这样项目的落地就有了很好的保障。
  方法一
  最简单的办法就是将识别有问题的图片找出来,放到训练用的数据目录中,并用配套的“图片标注工具”标注好,然后重新训练。(如果是视频,就将视频解码为图片,或者直接截图)
  方法二
  新建一个目录,将真实使用的摄像头的视频解码为图片(大概500张)。将训练数据目录设置为改目录,然后重新导出模型。不用标注数据也不用重新训练模型,只要重新导出就可以了。
  这个方法我开始不清楚是什么原因,后来问了作者,才知道用 RK3399pro NPU要把模型进行 int8 量化,量化时用的图片与真正使用时的越一样就越准。什么是模型int8量化,自己去网上查。
  意外惊喜
  如果导出 restFul SDK,集成起来更加简单,几乎直接可以用,细节大家可以仔细研究。这个工具越用越觉得好。
  其他问题
  360 会误报误杀。安装与使用时建议关闭360。
  这事情我专门去问了作者,作者说是里面配套的数据标注软件是python的,为了方便使用,将python代码打包为了exe文件,所以360会误报误杀。
  感想
  在以前以为AI算法高深莫测,所有的算法公司与算法工程师都告诉我们训练AI算法需要多高的算力,要学习一堆高深的数学知识,我们这个小公司根本没办法自己单独训练算法的。我们也一直认为我们无法在没有AI算法工程师的情况下训练算法的。直到老板的朋友推荐这个工具给我们后,我们才知道原来自己定制AI算法原来可以这么简单。



原作者:hq1978

更多回帖

发帖
×
20
完善资料,
赚取积分