摘要
- 核心流程:本文完整走通了从 RealSense 采集铰链图片、Ultralytics Platform + SAM3 辅助标注,到本地 RTX 5060 上基于 yolov8n-seg.pt 迁移学习训练实例分割模型的闭环。
- 关键发现:在仅 32 张图片(Train 26 / Val 6)的小数据集下,虽然 mAP50 一度达到 0.955,但离线推理显示大量低置信度预测,说明小数据集下的 mAP 并不可靠,不能直接等同于真实场景准确率。
- 最终建议:当前阶段不应继续在小数据集上反复调参,而应优先扩充高质量、具有场景多样性的真实数据(建议 150~500 张),并加入负样本,再重新训练 hinge_v2。
一、前言
前面已经在 ROS2 Humble 环境下完成了 RealSense 相机与yolo_ros的联调,并成功使用官方:
yolov8n-seg.pt实现实时实例分割。
但官方 YOLOv8 模型主要基于 COCO 数据集训练,并不认识实际装配任务中的专用工业零件,例如本文使用的铰链 hinge。
因此下一步需要构建自己的铰链数据集,并基于yolov8n-seg.pt进行迁移学习,得到:
hinge-yolov8n-seg.pt整体流程如下:
flowchart TD A[RealSense RGB 图像] --> B[采集铰链图片] B --> C[Ultralytics Platform] C --> D[SAM3 辅助实例分割标注] D --> E[Train / Val 数据集] E --> F[yolov8n-seg.pt 迁移学习] F --> G[best.pt] G --> H[hinge-yolov8n-seg.pt] H --> I[ROS2 / yolo_ros]本文使用的主要环境:
| 项目 | 环境 |
|---|---|
| Ubuntu | 22.04 |
| ROS2 | Humble |
| 相机 | Intel RealSense D435i |
| RGB 工作分辨率 | 424×240×30 FPS |
| GPU | NVIDIA GeForce RTX 5060 Laptop GPU |
| CUDA | 可正常使用 |
| PyTorch | 2.11.0+cu128 |
| Ultralytics 训练环境 | 8.4.117 |
| 基础模型 | yolov8n-seg.pt |
| 任务 | hinge 实例分割 |
二、使用 RealSense 采集铰链图片
首先建立数据集目录:
mkdir -p ~/hinge_dataset/raw cd ~/hinge_dataset/rawRealSense RGB 图像话题为:
/camera/camera/color/image_raw当前相机已经稳定运行在:
424 × 240 × 30 FPS这里不直接录制视频再抽帧,而是使用 ROS2image_saver手动触发保存图片。这样可以避免连续保存大量几乎一模一样的相邻帧。
启动:
cd ~/hinge_dataset/raw ros2 run image_view image_saver --ros-args \ -r image:=/camera/camera/color/image_raw \ -p save_all_image:=false \ -p filename_format:="hinge_%04i.jpg"另开一个终端查看保存服务:
ros2 service list | grep save实际环境中出现的是:
/save因此保存一张图片:
ros2 service call /save std_srvs/srv/Empty "{}"每调用一次就保存一张,例如: