具身智能工业视觉实战全记录:昇腾 YOLOv5 目标检测 + 海康相机 EasyOCR + 华为云 IoTDA 与 CodeArts 智慧路灯部署
本文记录一次完整的具身智能工业视觉 + 物联网实训过程,覆盖工业相机采集、YOLOv5 目标检测、EasyOCR 文字识别、华为云 IoTDA 设备接入与 CodeArts 智慧路灯部署五大环节,内容可直接复现。
目录
- 一、整体概览
- 二、具身智能工业视觉获取与分析应用
- 三、具身智能工业视觉识别快速编码实现
- 四、IoTDA 中转空间构建
- 五、CodeArts 智慧路灯快速构建与部署
- 六、总结
一、整体概览
本次实训围绕「工业视觉」与「物联网」两条主线展开,技术栈如下:
| 模块 | 核心技术 | 作用 |
|---|---|---|
| 工业视觉采集 | USB3 Vision / MVS / 昇腾开发板 | 相机驱动、画面采集、远程环境 |
| 目标检测 | YOLOv5(昇腾算力) | 实时识别画面中的人物、座椅等目标 |
| 文字识别 | 海康相机 + EasyOCR | 实时 OCR 识别并标注置信度 |
| 物联平台 | 华为云 IoTDA + MQTT.fx | 设备建模、注册、数据上报与指令下发 |
| 应用部署 | 华为云 CodeArts | 智慧路灯项目构建与 Spring Boot 部署 |
二、具身智能工业视觉获取与分析应用
2.1 工具软件安装
本阶段完成工业视觉相关驱动与工具的部署安装,具体包括:
- USB3 Vision 工业相机驱动:安装后设备管理器中正常显示
USB3 Vision Camera设备,驱动生效; - MVS 机器视觉客户端:可成功识别并连接工业相机,输出实时采集画面;
- USB RNDIS6 网卡驱动:适配昇腾开发板的 USB 网络连接;
- MobaXterm 远程终端工具:为后续开发板调试提供连接支持。
2.2 工业视觉环境构建与应用
配置本地以太网静态 IP,地址设为192.168.137.101,子网掩码255.255.255.0,使本地电脑与昇腾开发板处于同一网段,保障网络互通。
通过 MobaXterm 以 SSH 方式登录开发板,进入样例代码目录执行启动脚本,排查脚本权限与格式问题后,成功启动 Jupyter Notebook 服务。终端输出服务访问地址与认证令牌,搭建起远程开发的工业视觉运行环境。
2.3 昇腾工业视觉终端应用展现
在浏览器访问 Jupyter 服务地址进入 JupyterLab 界面,运行 YOLOv5 目标检测样例代码。程序基于昇腾算力加载 YOLO 模型,对实时画面进行推理,可识别画面中的人物、座椅等物体,用绿色检测框标注目标位置,同时输出识别类别与对应置信度,直观展现昇腾终端的工业视觉实时检测效果。
三、具身智能工业视觉识别快速编码实现
3.1 IMA-DS 借力
依托IMA-DS 工业视觉开发套件完成海康 USB 工业相机的硬件层适配。套件内置相机驱动与图像采集接口,可直接对接 EasyOCR 文字识别算法。对应开发文档明确了 Windows CPU 环境下的相机适配方案与编码框架,快速打通工业相机的图像采集底层链路,为后续 OCR 识别开发提供硬件接入与采集能力支撑。
3.2 运行环境构造
# 创建虚拟环境python-mvenv ocr_env# 激活虚拟环境(Windows)ocr_env\Scripts\activate# 安装依赖包pipinstalleasyocr opencv-python pillow numpy3.3 编码实现
核心流程:初始化 SDK → 枚举设备 → 创建句柄 → 打开设备 → 连续取流 → Bayer 转 BGR → 隔帧 OCR → 绘制标注 → 释放资源。
# 导入需要的库importsysimportosfromctypesimport*sys.path.append("./MvImport")fromMvImport.MvCameraControl_classimport*importcv2importnumpyasnpimporteasyocr# ===================== 初始化OCR模型 =====================reader=easyocr.Reader(['ch_sim','en'],gpu=False)# ===================== 主函数:相机采集+OCR识别 =====================defmain():# 初始化SDKMvCamera.MV_CC_Initialize()# 枚举设备deviceList=MV_CC_DEVICE_INFO_LIST()tlayerType=MV_GIGE_DEVICE|MV_USB_DEVICE ret=MvCamera.MV_CC_EnumDevices(tlayerType,deviceList)ifret!=0:print("枚举设备失败 ret[0x%x]"%ret)returnifdeviceList.nDeviceNum==0:print("未找到相机")returnprint("找到 %d 台相机"%deviceList.nDeviceNum)# 选择第0号设备cam=MvCamera()stDeviceList=cast(deviceList.pDeviceInfo[0],POINTER(MV_CC_DEVICE_INFO)).contents# 创建句柄ret=cam.MV_CC_CreateHandle(stDeviceList)ifret!=0:print("创建句柄失败 ret[0x%x]"%ret)return# 打开设备ret=cam.MV_CC_OpenDevice(MV_ACCESS_Exclusive,0)ifret!=0:print("打开设备失败 ret[0x%x]"%ret)cam.MV_CC_DestroyHandle()return# 设置触发模式为关闭(连续采集)cam.MV_CC_SetEnumValue("TriggerMode",MV_TRIGGER_MODE_OFF)# 开始取流cam.MV_CC_StartGrabbing()stOutFrame=MV_FRAME_OUT()memset(byref(stOutFrame),0,sizeof(stOutFrame))print("相机已启动,按键盘 q 关闭窗口退出程序")frame_count=0last_result=[]# 缓存最近一次OCR结果whileTrue:# 获取一帧图像,超时1000msret=cam.MV_CC_GetImageBuffer(stOutFrame,1000)ifret==0:stFrameInfo=stOutFrame.stFrameInfo width=stFrameInfo.nWidth height=stFrameInfo.nHeight# 原始Bayer数据转numpy数组img_data=string_at(stOutFrame.pBufAddr,stFrameInfo.nFrameLen)img=np.ndarray(buffer=img_data,dtype=np.uint8,shape=(height,width))# Bayer转彩色BGRimg_rgb=cv2.cvtColor(img,cv2.COLOR_BAYER_RG2BGR)# 缩小用于显示和OCR(大幅提升速度)display_w=960display_h=int(height*display_w/width)img_small=cv2.resize(img_rgb,(display_w,display_h))# 每隔5帧做一次OCR,避免卡顿frame_count+=1ifframe_count%5==0:last_result=reader.readtext(img_small)# 把识别到的文字打印到cmd窗口forbbox,text,confinlast_result:print(f"识别文字:{text}置信度:{round(conf,2)}")# 在缩小图上绘制OCR结果forbbox,text,confinlast_result:pts=np.array(bbox,np.int32)cv2.polylines(img_small,[pts],True,(0,255,0),2)cv2.putText(img_small,text,(int(bbox[0][0]),int(bbox[0][1])-5),cv2.FONT_HERSHEY_SIMPLEX,0.6,(0,255,0),2)cv2.imshow("海康USB相机 OCR预览",img_small)cam.MV_CC_FreeImageBuffer(stOutFrame)# 检测键盘按键key=cv2.waitKey(1)&0xFFifkey==ord('q'):break# 释放资源cam.MV_CC_StopGrabbing()cam.MV_CC_CloseDevice()cam.MV_CC_DestroyHandle()MvCamera.MV_CC_Finalize()cv2.destroyAllWindows()if__name__=="__main__":main()3.4 运行测试
程序运行后,工业相机实时采集画面,识别到的文字用绿色框标注,控制台同步输出识别内容与置信度,整体运行稳定,按键盘q键即可退出。
四、IoTDA 中转空间构建
本章使用华为云IoTDA 物联网平台搭建设备接入的中转空间,完成温湿度计、吸顶灯两类设备的模型搭建、设备注册和模拟测试,验证终端设备和平台之间的数据上报、指令下发链路是否通畅。
4.0 IoTDA 简介
IoTDA 是面向物联网场景的设备管理与数据中转平台,相当于终端设备和上层应用之间的「中转站」。它具备以下能力:
- 支持各类设备统一接入;
- 自定义设备型号(产品)功能;
- 存储设备上报的数据;
- 向设备下发远程控制命令;
- 监控设备在线状态、身份校验。
4.1 产品及其模型构建
在 IoTDA 平台分别创建温湿度计、吸顶灯两类设备产品,完成各自的物模型定义与发布,同步在对应产品下完成设备实例注册。全部配置完成后,在平台设备列表页可查看所有已建设备,页面展示设备状态、设备名称、设备标识码、所属产品、节点类型等信息。
4.1.1 温湿度计
先在平台新建温湿度计自定义产品,选择直连设备接入方式,填写产品基础信息。接着定义产品物模型,新增温湿度采集服务,添加温度、湿度两个浮点型属性,分别设置单位为摄氏度和% RH,配置完成后保存并发布物模型。
模型发布后,在该产品下注册名为「大温湿度计」的设备实例,注册完成后设备列表自动生成对应条目,平台为设备分配唯一的设备标识码与设备 ID,作为后续设备接入的身份凭证,节点类型标注为直连设备。
4.1.2 吸顶灯
按照相同流程创建吸顶灯产品,同样采用直连设备接入方案。定义设备控制服务,添加布尔型的开关状态属性,配置状态上报与命令下发的交互规则,完成后发布产品物模型。
模型发布完成后,注册「大吸顶灯」设备实例,设备列表同步更新对应记录,生成专属设备标识信息,节点类型为直连设备。
4.2 设备实例化应用
使用MQTT.fx客户端模拟真实设备接入 IoTDA 平台,分别完成温湿度计、吸顶灯的设备联调测试,验证设备与平台之间数据上报、指令下发的双向通信链路。
4.2.1 温湿度计设备注册及模拟测试
通过 MQTT.fx 配置平台 Broker 地址、端口与温湿度计的设备身份凭证,完成设备接入。向平台上报温度23、湿度35的属性数据后,平台设备详情页显示设备在线,物模型数据与上报值一致,验证温湿度数据上报链路正常。
4.2.2 吸顶灯设备注册及模拟测试
完成吸顶灯的 MQTT 接入并订阅平台命令主题,在平台侧下发开关、功率控制指令,设备端可正常接收;设备上报灯光状态数据后,平台物模型同步更新,验证远程控制与状态上报的双向链路通畅。
五、CodeArts 智慧路灯快速构建与部署
5.1 应用项目创建
登录华为云 CodeArts 开发平台,依次完成项目与代码仓库的创建。首先新建项目时选择适配物联网项目的开发模板,搭建项目管理与协作框架;随后创建代码仓库,在官方模板库中选用IoT_Streetlight_Demo智慧路灯 Java 示例模板,该模板内置路灯应用的基础代码结构与依赖配置,选中后完成仓库初始化,为后续智慧路灯应用的开发与部署提供基础环境。
5.2 代码托管操作
仓库创建完成后,智慧路灯项目代码托管在 CodeArts 代码托管服务中。仓库默认master分支,包含完整的 Java 项目结构,有源码目录src、Maven 配置文件pom.xml、项目说明文档等文件,同时记录了提交次数、分支数量等仓库信息,支持代码版本管理,可直接对接后续构建部署流水线。
5.3 构建任务设立
在 CodeArts 构建服务中新建构建任务,配置任务基础信息:填写构建任务名称,选定所属的智慧路灯项目,代码源选择平台内置 Repo,关联对应的智慧路灯代码仓库,完成配置后即可进入下一步构建参数设置。
5.4 项目构建实现
构建任务执行完成,环境准备、代码检出、Maven 构建、软件包上传全流程执行成功,构建日志显示最终状态为SUCCESS,项目 jar 包已成功上传至发布库。
5.5 项目部署运行
将构建好的应用 jar 包下载到本地,在 PowerShell 中执行以下命令启动 Spring Boot 服务:
java-jarsmartlight.jar服务启动后访问智慧路灯 Web 页面,可进行设备注册、参数设置等操作,完成项目部署运行。
六、总结
本次实训完整走通了「工业视觉 → 文字识别 → 物联平台 → 应用部署」的技术链路,主要收获如下:
- 工业视觉采集:掌握了 USB3 Vision 相机驱动、MVS 客户端、昇腾开发板网络配置及 Jupyter 远程环境搭建;
- 目标检测:基于昇腾算力运行 YOLOv5 实现对实时画面的目标检测与置信度输出;
- OCR 识别:通过 IMA-DS 套件 + EasyOCR 完成海康相机实时文字识别,掌握了 Bayer 数据转换、隔帧推理等优化技巧;
- 物联平台:熟悉了 IoTDA 的产品建模、设备注册、MQTT 接入及双向通信链路验证;
- 应用部署:掌握了 CodeArts 从代码托管、构建到 Spring Boot 部署运行的完整流程。
整个过程技术栈跨度较大,但各环节环环相扣,是一套较完整的「端—边—云」一体化实践案例。
标签:
华为云IoTDACodeArts昇腾YOLOv5EasyOCR工业视觉具身智能MQTT智慧路灯Spring Boot