#AI挑战营终点站# rv1106数字识别模型部署
[复制链接]
本帖最后由 打破传统 于 2024-5-29 10:39 编辑
参考https://wiki.luckfox.com/zh/Luckfox-Pico/Luckfox-Pico-SDK
进行了SDK环境的搭建,由于我的Ubuntu是20.04版本的所以需要安装Docker环境
先下载安装docker
添加当前用户到docker组中
更改使生效,查看当前是否添加成功
获取已经配置好的官方docker镜像,并查看本地镜像
获取最新SDK
将本地主机上的SDK目录映射到容器的/home目录下以Bash shell运行,注意这个目录要替换成自己电脑SDK所在的目录
然后安装交叉编译工具链 注意应该在运行docker环境的状态下安装
然后进入/home 目录,清除编译
Buildroot nand flash启动选8
编译全部 ./build.sh
Yolov5物体检测实例
如果下载不成功可以直接到github上下载,注意环境变量设置为本机SDK路径
下载后解压
解压后编译
可以看到生成的luckfox_rtsp_yolov5_demo文件夹
通过这个文件夹SFTP上传到开发板,按如下命令执行,注意权限和关掉开发板原来的推流rkip程序
然后就是参考网友luyism的工程,在Yolov5物体检测实例的基础上部署了第二关生成的MODE_NUM.rknn
编译的时候遇到如下错误
原因是windows 直接sftp工程文件会有部分文件传输不成功,直接在Ubuntu下载的工程上修改重新编译解决问题,还有个问题编译好后生成的文件夹中没有包含model文件夹不知道是怎么回事,于是手动将model文件拷贝到生成的文件夹下,上传开发板后运行如下:
下午找到没有生成model的原因是CMakeLists中的rknn模型名忘改了,改成自己的编译成功!
代码见附件,演示见视频。我在识别的过程中发现背景,光线,和数字的粗细等因素对识别影响都很大,目前只是算跑通,后续待优化。
对于数字粗细因素我觉得在预处理图像时可以加入放大图像像素的这步,先写了个python验证一下代码如下:
# 读取图像
image = cv2.imread('num_1.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 二值化
_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 边缘检测
edges = cv2.Canny(binary, 50, 150)
# 查找轮廓
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 筛选和加粗轮廓
for contour in contours:
# 根据轮廓大小筛选数字
# if cv2.contourArea(contour) > some_threshold:
if cv2.contourArea(contour) > 1:
# 形态学操作加粗轮廓
dilated = cv2.dilate(np.uint8(edges), None, iterations=3)
# 在原图上绘制加粗后的轮廓
cv2.drawContours(image, [contour], -1, (0, 0, 0), 2)
# 显示图像
cv2.imshow('Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
刚做了个验证结果如下,后续优化后再加入试试。
演示
|