A388-基于HRNet实现L-Bracket的关键点检测
导出时间:2025/12/24 19:44:49
项目目标
基于合成数据集
l_bracket_dataset_final,训练一个 HRNet(轻量版)关键点检测模型,在单张 RGB 图像中对每个 L 型支架实例预测 3 个关键点的 2D 像素坐标。训练采用 Top-down 流程:
- 从标注关键点生成实例 bbox(训练时作为 ROI 来源)
- ROI 裁剪并缩放到固定输入(默认 256×256)
- HRNet 输出热力图(默认 64×64),由热力图 argmax 得到关键点
- 可选:推理时使用自动提框(阈值+轮廓)生成 ROI,或外部 bbox(检测器/规则)提供 ROI
2. 目录结构
结构如下:
project_root/
train_hrnet_lbracket.py
predict_hrnet_lbracket.py # 推理脚本(仅预测)
predict_compare_hrnet_lbracket.py # 推理+对比标注差异(推荐)
l_bracket_dataset_final/
images/
image_000000.png
...
annotations/
annotation_000000.json
...
config.json
runs/
hrnet_lbracket/
best.pth
3. 数据格式要求
每张图片对应一个 JSON(示例字段):
- 顶层:
file_name: 图片文件名(如image_000000.png)width,height: 图像尺寸(例如 512×512)annotations: 多实例列表
annotations[i]:keypoints_2d:[x, y, v]重复 K 次(本项目 K=3)v=1表示可见;v=0表示不可见/出视野
- 其他字段(如
keypoints_3d, pose)可用于后续扩展,但本项目训练 2D 关键点时不强制依赖
重要约束:
- 三个关键点的顺序必须在整个数据集中语义一致(否则模型无法收敛)。
4. 环境依赖
Python 3.8+,推荐使用虚拟环境:
pip install torch torchvision opencv-python numpy
如使用 GPU,请保证 CUDA 与 PyTorch 版本匹配。
5. 训练(train_hrnet_lbracket.py)
5.1 基本训练命令
python train_hrnet_lbracket.py \
--data_root ./l_bracket_dataset_final \
--work_dir ./runs/hrnet_lbracket \
--epochs 80 \
--batch_size 32 \
--lr 1e-3 \
--device cuda \
--remove_red_dots
5.2 训练输出
- 最优模型保存为:
./runs/hrnet_lbracket/best.pth
- 训练日志中会显示:
train_lossval_lossval_l2(px):验证集关键点平均像素误差(在 ROI 输入坐标系)
5.3 训练实现要点(方案 A)
- 将每张图的多实例
annotations展开为“每个实例一个样本” - bbox 由该实例可见关键点外接矩形生成,并加 padding
- ROI 经过仿射裁剪到固定输入尺寸(默认 256×256)
- 输出热力图尺寸默认 64×64(=输入/4),使用 MSE loss(按可见性加权)
6. 推理预测(predict_hrnet_lbracket.py)
6.1 自动提框预测(适合白底+深色物体)
python predict_hrnet_lbracket.py \
--ckpt ./runs/hrnet_lbracket/best.pth \
--image ./l_bracket_dataset_final/images/image_000001.png \
--out_json ./pred_000001.json \
--out_vis ./pred_000001_vis.png \
--device cuda \
--remove_red_dots
输出说明:
out_json:每个实例的 bbox 和 3 个关键点(x,y,score)out_vis:可视化 bbox 与预测关键点
注意:自动提框基于阈值/轮廓,属于强假设方法。真实环境建议改用检测器或稳定规则生成 bbox。
6.2 外部 bbox 预测(更稳定)
python predict_hrnet_lbracket.py \
--ckpt ./runs/hrnet_lbracket/best.pth \
--image ./l_bracket_dataset_final/images/image_000001.png \
--bboxes "[[10,20,120,160],[300,200,420,350]]" \
--out_json ./pred_000001.json \
--out_vis ./pred_000001_vis.png
7. 对比标注差异与误差统计(推荐)(predict_compare_hrnet_lbracket.py)
用于输出“预测 vs GT”的像素误差,并在图上画连线标注误差。
python predict_compare_hrnet_lbracket.py \
--ckpt ./runs/hrnet_lbracket/best.pth \
--image ./l_bracket_dataset_final/images/image_000001.png \
--ann_json ./l_bracket_dataset_final/annotations/annotation_000001.json \
--out_vis ./compare_000001.png \
--out_report ./compare_000001.json \
--device cuda \
--remove_red_dots
终端输出典型指标:
pred_instances / gt_instances / matchedoverall_mean_error(px):所有“GT可见且预测置信度>=阈值”的关键点平均像素误差- 每个关键点
joint0/1/2的平均误差
完整开题报告
1.1选题背景
随着工业4.0和智能制造的发展,机器人在仓储分拣、电子装配、快递分拣、食品加工等领域的应用越来越广泛。传统的机器人抓取多依赖于结构化环境、已知物体模型或借助固定的定位标志,这在面对物品种类繁多、姿态不确定、堆叠混乱的真实场景时显得力不从心。研究能够在复杂、无标注环境下实现高效、稳定抓取的机器人系统,具有重要的理论价值与广泛的工程应用前景。深度学习在视觉感知领域取得了突破性进展,尤其是关键点检测技术因其对局部显著结构的敏感性和对姿态信息的直接表达,在物体抓取区域预测等任务中表现出优越性。将关键点检测引入机器人无序抓取研究,能以稀疏而语义明确的形式表达物体的可抓取区域、边缘特征或局部几何,从而降低对全模型重建或复杂语义分割的依赖;另外结合深度学习的端到端训练能力,可以在大规模异构数据上学习到鲁棒的特征表示,提高对遮挡、光照变化和背景干扰的耐受性。
1.2选题意义
基于关键点的抓取策略可显著简化抓取规划与力控策略的耦合。通过检测物体在图像平面或三维空间中的关键点,机器人可以更直接地生成可执行的抓取位姿,减少对昂贵传感器和复杂建模流程的依赖,降低系统部署成本并提升部署速度。关键点检测方法易于与深度生成模型、强化学习或传统几何推理结合,实现从感知到决策的闭环优化,这对于提升抓取成功率和减少重复无效尝试具有重要意义。
2.1抓取系统仿真平台构建
1. 场景与模型搭建:在CoppeliaSim仿真环境中,搭建一个包含工业机器人(如UR5)、视觉传感器、料箱及目标工件(L型块)的完整抓取工作站。
2. 物理与逻辑设置:正确配置场景的物理属性,并编写脚本实现工件的随机化生成与位姿初始化,以模拟真实生产中的无序来料场景。
3. 通信接口建立:实现仿真环境(CoppeliaSim)与外部算法程序(Python)的实时数据通信,确保图像、位姿与控制指令的稳定传输。
2.2关键点检测深度学习模型研究
1. 视觉数据集制作:利用仿真平台,自动化采集并构建工件图像数据集,每张图像需包含对应工件多个关键点的精确2D像素坐标与3D世界坐标真值。
2. 模型设计与训练:设计一个轻量化的关键点检测神经网络,利用制作的数据集进行训练与优化,实现从单张RGB图像中实时、准确地预测工件关键点的2D位置。
2.3机器人抓取位姿解算与规划
1. 手眼系统标定:完成相机与机器人底座之间的手眼标定,获取精确的坐标变换关系。
2. 抓取位姿解算:基于模型预测的2D关键点,结合相机模型与PnP等算法,解算出工件相对于机器人末端的6自由度抓取位姿(位置X,Y,Z与姿态Rx,Ry,Rz)。
3. 抓取轨迹生成:为机器人规划一条从当前位置到抓取点的平滑、无碰撞的运动轨迹。
2.4系统集成与综合实验验证
1. 软件系统集成:将训练好的深度学习模型、位姿解算模块与机器人控制模块集成到一个统一的软件框架中,实现从“图像输入”到“机器人动作执行”的全流程自动化。
2. 抓取任务实验:在仿真环境中进行系统性抓取实验。要求机器人对散乱堆叠的多个工件执行连续抓取,并将其放置到指定位置。
3. 性能评估与分析:定量评估整个系统的性能,核心考核指标包括:
· 抓取成功率
· 单次抓取节拍时间
· 系统定位精度
三、课题的研究方案
3.1技术路线
1..文献调研与方案论证
2. 数据准备与图像处理模块开发
3. 深度学习关键点检测模型训练
4. CoppeliaSim仿真场景搭建
5. 系统模块集成
6. 仿真实验测试与优化
四、论文的框架结构
第一章 绪论
1.1 研究背景与意义
1.1.1工业自动化中无序抓取的实际需求,传统抓取技术的不足。
1.1.2深度学习关键点检测的应用价值。
1.2 国内外研究现状
1.2.1机器人无序抓取的研究进展。
1.2.2深度学习关键点检测模型研究现状
第二章 相关技术基础
2.1 机器人与仿真技术基础
2.1.1 UR5机械臂运动学基本原理,CoppeliaSim仿真平台核心功能。
2.1.2 CoppeliaSim与Python的通信接口基础。
2.2 图像处理技术
2.2.1 OpenCV核心功能(去噪、分割、边缘检测)。
2.2.2 目标定位与特征提取基本方法。
2.3 深度学习关键点检测基础
2.3.1 卷积神经网络基本概念。
2.3.2 HRNet模型核心原理与优势。
第三章 系统设计与实现
3.1 系统总体方案
3.1.1 功能需求与性能指标,软件工具选型(Python+PyTorch+OpenCV+CoppeliaSim)。
3.1.2 系统模块划分(感知、决策、执行)。
3.2 数据集构建与图像处理
3.2.1 类目标图像的采集、标注与数据增强。
3.2.2 基于OpenCV的图像预处理实现。
3.3 关键点检测模型训练
3.3.1 HRNet模型搭建与参数设置。
3.3.2 模型训练流程与优化过程。
3.4 仿真场景搭建与系统集成
3.4.1 CoppeliaSim中UR5机械臂、无序目标场景与视觉传感器的搭建。
3.4.2 各模块通信接口开发与全流程集成。
第四章 仿真实验与结果分析
4.1 实验设计
4.2 实验结果与分析
4.3 系统优化
第五章 总结
参考文献
致谢
|
主要参考文献
七、指导教师意见
|