基于UnitV2 AI Camera的流水线异常品识别系统
一、摄像头简介
UnitV2是M5Stack公司推出的一款具有AI识别功能的摄像头。它体积小巧,功能强大。
硬件参数:
- 处理器Sigmstar SSD202D Dual Cortex-A7 1.2Ghz
- 128MB DDR3、512MB NAND Flash,支持SD卡
- 1080P摄像头
- 自带麦克风
- 支持WiFi 2.4GHz
- Grove接口(UART串口)
- USB接口(10/100M USB LAN)
软件参数:
内嵌Linux操作系统,支持python编程
二、系统概述
本系统使用摄像头的物体识别功能,对流水线上的色块进行检测。指定橙色色块为正常品,蓝色、黄色、绿色的色块为异常品。摄像头和PC机通过USB线连接,系统识别到色块后,屏幕会打印出识别到的色块信息。
硬件:
UnitV2摄像头1个
被测模块 橙、黄、蓝、绿4种色块各1个
PC机1台
软件:
Visual Studio Code
SecureCRT
WinSCP
Python
三、具体实现
3.1 安装驱动
通过USB线连接摄像头和PC机,根据官方文档,安装windows系统摄像头驱动。安装好驱动后,建议重启电脑。
https://docs.m5stack.com/zh_CN/quick_start/unitv2/base_functions
3.2连接摄像头
通过电脑浏览器输入输入摄像头IP地址, 10.254.239.1或unitv2.py即可通过网络,测试摄像头的内置功能。
3.3创建数据集
点击网络客户端左上角的相机图标,拍摄一组数据集照片,一般应不少于30张。注意尽量在不同角度和姿态进行拍摄,便于后续训练。拍摄完成后,在图片上右键,依次导出。
3.4训练数据模型
进入官方的v-training网站,对数据集进行训练。
http://v-training.m5stack.com/build/index.html
建立4个lable,分别是OrangeBlock、YellowBlock、BlueBlock、GreenBlock。并对每张图片的每个色块进行标定。
标定完成后进行训练。
训练完成后,下载训练模型。本次训练后的文件为
v2model_86b56963fc7c1e50.tar
3.5 测试识别效果
在摄像头的网络客户端,点击
Object Recongnition功能,添加训练后的模型文件,并运行,即可观察到识别效果。
3.6访问文件系统及编程
为了更加灵活,不借助官方的网络客户端,也可以在linux系统下进行编程。
首先,修改直播提供的测试程序,将训练模型替换成自己的模型,并保存。
from json.decoder import JSONDecodeError
import subprocess
import json
import requests
import base64
import time
reconizer = subprocess.Popen(['/home/m5stack/payload/bin/object_recognition', '/home/m5stack/payload/uploads/models/v2model_86b56963fc7c1e50'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
img = b''
while 1:
doc = json.loads(reconizer.stdout.readline().decode('utf-8'))
print(doc)
然后,使用WinSCP软件,通过SFTP协议连接unitv2的linux系统,进行文件传递。将unitv2_program1.1文件夹传递到/home/m5stack/payload/uploads/program目录下。
最后,使用SecureCRT软件,通过ssh2连接unitv2的linux系统,进行命令行操作。
执行 cd /home/m5stack/payload/uploads/program/ unitv2_program1.1进入程序目录,
执行python3 run.py即可运行。
运行结果如下
四、心得体会
本人通过m5stack技术人员的直播课程,对AI摄像头的使用方法有了一定的了解,完成了简单的识别功能。因本人不熟悉pyton,所以没有在编程方面深入研究。后续计划在此基础上,研究通过arduino编程来读取摄像头的grove串口json数据,将摄像头作为传感器来进行应用。