Atlas200DK 部署 yolov11 调用海康威视摄像头实现实时目标检测
一、参考资料
海康威视网络摄像机操作手册(官方文档)
海康威视IPC摄像头rtsp接入 - 博客园
华为昇腾Atlas200DK官方开发指南
yolov11 官方源码(ultralytics/yolov11 at v6.1)
昇腾CANN工具包开发文档
Atlas200DK 网络配置官方教程
二、配置说明
1. 边缘计算设备:Atlas200DK
Atlas200DK 是华为昇腾系列边缘计算板卡,主打低功耗、高性能的AI推理场景。使用前需完成基础配置:
硬件连接:连接电源、网线(用于连接摄像头)、串口线(用于初始配置)、显示器(可选,方便调试)。
系统环境:预装 Ubuntu 18.04 系统,已安装昇腾驱动(Driver)、CANN 工具包(推荐 5.1.RC2 及以上版本)、MindStudio(可选,用于远程开发调试)。
核心依赖:Python 3.7+、PyTorch 1.8+(需适配昇腾环境)、OpenCV 4.5+、昇腾 Python API(ascend-toolkit)。
2. yolov11 算法适配
由于 Atlas200DK 依赖昇腾硬件的推理能力,需对 yolov11 模型进行适配改造:
源码获取:从 GitHub 下载 yolov11 v6.1 版本源码(与原博客版本一致,保证兼容性)。
模型转换:yolov11 原始.pt 模型需转换为 Atlas200DK 支持的 OM 模型(昇腾离线推理模型),需通过 CANN 工具包的
atc工具完成。环境配置:在 Atlas200DK 上创建 Conda 环境,安装依赖:
conda create -n yolov11_atlas python=3.7 conda activate yolov11_atlas pip install torch==1.8.1 torchvision==0.9.1 pip install opencv-python numpy pandas matplotlib pip install ascend-cann-sdk # 昇腾Python API
3. 海康威视摄像头
产品型号:iDS-2DY9440lX-A/SP T5(与原博客一致,其他海康网络摄像头通用)。
硬件连接:仅需连接电源和网线,网线另一端接入 Atlas200DK 的网口(eth0)。
三、Atlas200DK 与海康威视摄像头连接
1. 摄像头激活(Windows 本机预处理)
Atlas200DK 直接激活摄像头操作不便,建议先在 Windows 电脑上完成摄像头激活和网络配置,步骤与原博客一致:
方法选择:使用 SADP 软件激活(海康官方工具,支持设备检索和参数配置)。
下载安装 SADP 软件后,用网线连接 Windows 电脑和摄像头,打开软件即可检索到未激活设备。
激活配置:设置管理员密码(8-16位,需包含数字、字母、特殊字符中至少两种),修改摄像头 IP 地址(建议设置为 192.168.1.110,便于后续统一网段)。
电脑 IP 配置:打开 Windows 控制面板 → 网络和共享中心 → 以太网属性 → IPv4 设置,手动设置 IP 为 192.168.1.65(与摄像头同一网段,后一位不同),子网掩码 255.255.255.0。
验证激活:打开浏览器,输入摄像头 IP(192.168.1.110),输入用户名(admin)和设置的密码,登录成功则激活完成。
2. Atlas200DK 网络配置(关键步骤)
需确保 Atlas200DK 与摄像头在同一网段,才能正常访问 RTSP 流:
远程连接 Atlas200DK:通过串口工具(如 SecureCRT)或 MindStudio 远程连接板卡,登录系统。
配置有线网络:修改 eth0 网口的 IPv4 地址,与摄像头 IP 同一网段:
# 查看网口名称 ifconfig # 编辑网络配置文件 sudo vi /etc/network/interfaces在配置文件中添加以下内容:
auto eth0 iface eth0 inet static address 192.168.1.70 # 与摄像头IP前三位一致,后一位不同 netmask 255.255.255.0 gateway 192.168.1.1 # 可选,根据路由器配置重启网络服务生效:
sudo /etc/init.d/networking restart验证连通性:在 Atlas200DK 终端 ping 摄像头 IP,能 ping 通则网络连接正常:
ping 192.168.1.110
四、yolov11 模型转换与实时检测配置
1. yolov11 模型转换(Atlas200DK 特有步骤)
Atlas200DK 不直接支持 PyTorch 的.pt 模型,需通过atc工具转换为 OM 模型:
第一步:将 yolov11 的.pt 模型导出为 ONNX 模型。在 yolov11 源码根目录执行:
python export.py --weights yolov11s.pt --include onnx --imgsz 640 640执行成功后,会生成
yolov11s.onnx文件。第二步:编写 ATC 转换配置文件(如
yolov11s_atc.cfg),内容如下:[common] input_format=NCHW input_shape="images:1,3,640,640" output=yolov11s_om log=debug [aipp] aipp_mode=static mean_chn_0=0 mean_chn_1=0 mean_chn_2=0 min_chn_0=0 min_chn_1=0 min_chn_2=0 var_reci_chn_0=1/255.0 var_reci_chn_1=1/255.0 var_reci_chn_2=1/255.0第三步:执行 ATC 转换命令(需配置 CANN 环境变量):
source /usr/local/Ascend/ascend-toolkit/set_env.sh atc --model=yolov11s.onnx --config=yolov11s_atc.cfg --framework=5 --output=./model --soc_version=Ascend310转换成功后,在
./model目录下生成yolov11s_om.om模型文件。
2. 配置 RTSP 流地址
海康威视摄像头的 RTSP 地址格式通用,需替换为实际的用户名、密码和摄像头 IP:
格式:
rtsp://用户名:密码@摄像头IP/Streaming/Channels/2示例:
rtsp://admin:YourPassword123@192.168.1.110/Streaming/Channels/2验证 RTSP 流:可在 VLC 播放器中输入该地址,能正常播放监控画面则说明地址有效。
3. 修改 yolov11 检测代码适配 Atlas200DK
需修改 yolov11 源码的detect.py,适配 OM 模型推理和 Atlas 硬件:
替换模型加载逻辑:将原 PyTorch 模型加载改为昇腾 OM 模型加载,使用昇腾 Python API:
# 原模型加载代码(注释) # model = DetectMultiBackend(weights, device=device, dnn=dnn) # 新增 Atlas OM 模型加载代码 from ascend.cann.python import acl acl.init() device_id = 0 context, ret = acl.rt.create_context(device_id) # 加载 OM 模型 model_path = "./model/yolov11s_om.om" model_id, ret = acl.mdl.load_from_file(model_path) model_desc = acl.mdl.create_desc() ret = acl.mdl.get_desc(model_desc, model_id)修改数据源输入:将
--source参数默认值改为摄像头 RTSP 地址:parser.add_argument('--source', type=str, default='rtsp://admin:YourPassword123@192.168.1.110/Streaming/Channels/2', help='file/dir/URL/glob, 0 for webcam')适配推理逻辑:将图像预处理后的数据传入 OM 模型进行推理,解析输出结果(需根据 yolov11 输出格式调整后处理代码)。
五、常见报错与解决方案
1. OpenCV 相关报错(与原博客类似)
报错信息:
error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support.解决方案:
# 卸载冲突的 OpenCV 版本 sudo apt-get install libgtk2.0-dev pkg-config pip uninstall opencv-python opencv-python-headless # 安装适配 Atlas 环境的 OpenCV pip install opencv-python==4.5.5.622. cv2 无 setNumThreads 属性报错
报错信息:
AttributeError: module 'cv2' has no attribute 'setNumThreads'解决方案:
pip install --upgrade opencv-python或直接注释detect.py中cv2.setNumThreads(0)该行代码(Atlas 环境中无需该配置)。
3. 模型转换失败报错
报错信息:
ATC error: Input shape does not match model requirement解决方案:
检查 ONNX 模型的输入维度与 ATC 配置文件中的
input_shape一致(均为 1,3,640,640)。确保导出 ONNX 模型时
imgsz参数与转换时一致。
4. 摄像头连接超时
报错信息:
RTSP stream can not be opened解决方案:
确认 Atlas200DK 与摄像头在同一网段(IP 前三位相同)。
检查摄像头 IP 未被占用,可通过 SADP 软件重新确认设备在线状态。
关闭 Atlas200DK 防火墙,避免端口拦截:
sudo ufw disable
六、其他注意事项
1. 网络冲突问题
与原博客类似,Atlas200DK 同时连接 WiFi 和有线网时,若两者 IP 网段一致(如均为 192.168.1.x),会导致 WiFi 断开。解决方案:
- 修改有线网(eth0)IP 网段,例如 WiFi 为 192.168.110.x,有线网设置为 192.168.111.70,摄像头 IP 改为 192.168.111.110,保持三者同一网段。
2. 性能优化建议
降低推理分辨率:将
imgsz从 640 改为 480,可提升帧率(适合实时检测场景)。关闭不必要的后处理:如无需保存检测结果,可注释
save_txt、save_conf等相关代码。调整置信度阈值:将
conf_thres从 0.25 提高到 0.3,减少误检测,提升推理速度。
3. 检测结果展示
运行修改后的detect.py脚本:
python detect.py --weights ./model/yolov11s_om.om --device 0成功运行后,终端会输出实时检测结果,示例如下:
C0: 544x640 1 bottle (0.78), 1 potted plant (0.35), 1 vase (0.29), Done. (0.042s) C0: 544x640 1 bottle (0.79), 1 potted plant (0.34), 1 vase (0.28), Done. (0.038s)若连接了显示器,可通过 OpenCV 窗口实时查看带检测框的监控画面(需确保 OpenCV 环境配置正常)。
总结
本文详细介绍了 Atlas200DK 边缘计算设备部署 yolov11 算法、调用海康威视网络摄像头实现实时目标检测的完整流程,核心关键点包括:摄像头激活与网络配置、Atlas200DK 环境搭建与模型转换、yolov11 代码适配与报错解决。相比 Jetson 设备,Atlas200DK 需重点关注 OM 模型转换和昇腾 API 适配,只要严格遵循步骤配置,即可实现低延迟、高准确率的实时检测。如果在操作过程中遇到问题,可参考昇腾官方论坛或海康威视技术支持获取进一步帮助。