数据集采集与微调:小样本训练专属抓取识别模型
数据集采集与微调小样本训练专属抓取识别模型通用 YOLO 模型能识别猫狗汽车但你的机械臂要抓的可能是某个特定型号的螺丝——这时候就得自己动手训练专属模型了。一、为什么通用模型不够用直接下个 YOLOv8 预训练模型跑起来确实能识别 80 类物体COCO 数据集但放到具身智能场景里立刻露馅特定物体不在类别里COCO 里有apple但没有红富士苹果有bottle但没有你家工厂产的 250ml 酱油瓶视角差异大COCO 的图多为平视视角机械臂相机是俯视/斜视背景特定工业场景背景是传送带/操作台和 COCO 的生活场景差太远小目标多螺丝、电子元件这种小目标通用模型召回率惨不忍睹所以必须训练专属模型。但问题是——标注数据哪来标注 10000 张图人工成本扛不住这就要靠小样本训练策略了。二、数据采集方案2.1 机械臂自动采集推荐最省事的方式让机械臂搭载相机自动绕着物体多角度拍摄。写个脚本控制机械臂走到 N 个预设位姿每个位姿拍一张importcv2importnumpyasnp CAPTURE_POSES[# [x, y, z, rx, ry, rz] 末端位姿[0.20,0.00,0.35,0,45,0],[0.20,0.10,0.35,0,45,0],[0.20,-0.10,0.35,0,45,0],[0.15,0.00,0.25,0,60,0],# ... 多角度、多距离、多俯仰]defauto_capture(arm,camera,save_dir):fori,poseinenumerate(CAPTURE_POSES):arm.move_to_pose(pose)arm.wait_stop()imgcamera.capture()cv2.imwrite(f{save_dir}/img_{i:04d}.jpg,img)这种方式的优点是位姿精确可控、可重复而且能自动记录每张图对应的相机位姿后续做标定也能用上。2.2 手动采集没有机械臂的话用手机/相机绕物体拍一圈。注意几点背景尽量贴近真实使用场景别在白墙前拍完再去仓库用光照要覆盖明暗两种条件物体姿态要多样正放/侧放/倒放2.3 数据增强扩充样本50 张原图通过数据增强可以扩充到几百张对小样本训练帮助极大fromalbumentationsimport(Compose,HorizontalFlip,RandomBrightnessContrast,Rotate,GaussianBlur,HueSaturationValue)augmentCompose([HorizontalFlip(p0.5),Rotate(limit15,p0.5),RandomBrightnessContrast(brightness_limit0.2,contrast_limit0.2,p0.5),GaussianBlur(blur_limit(3,5),p0.3),HueSaturationValue(hue_shift_limit10,sat_shift_limit20,p0.3),])defaugment_dataset(img,bboxes):augmentedaugment(imageimg,bboxesbboxes)returnaugmented[image],augmented[bboxes]注意旋转和翻转时bbox 坐标要同步变换Albumentations 库会自动处理但用 OpenCV 手写的话容易翻车。三、标注工具与格式3.1 标注工具对比工具平台优点缺点LabelImg桌面简单轻量、离线可用界面古老、无自动标注Roboflow网页在线协作、自动增强免费版有限制、数据要上传CVAT网页开源、功能强大、支持视频部署稍麻烦Label Studio网页多模态标注、开源配置复杂新手单人开发推荐 LabelImg团队协作选 CVAT 或 Roboflow。3.2 YOLO 标注格式YOLO 格式每张图对应一个.txt文件每行一个目标class x_center y_center width height坐标都是归一化到[0, 1]的相对值除以图片宽高。例如0 0.452 0.318 0.123 0.087 0 0.621 0.502 0.098 0.102 1 0.234 0.711 0.156 0.143class是类别 ID从 0 开始x_center y_center是目标框中心点坐标width height是框的宽高3.3 数据集目录结构YOLOv8 训练要求的数据集结构my_dataset/ ├── images/ │ ├── train/ ← 训练集图片 │ │ ├── img_0001.jpg │ │ └── img_0002.jpg │ └── val/ ← 验证集图片 │ └── img_0003.jpg ├── labels/ │ ├── train/ ← 训练集标注文件名和图片一一对应 │ │ ├── img_0001.txt │ │ └── img_0002.txt │ └── val/ │ └── img_0003.txt └── data.yaml ← 数据集配置data.yaml内容path:./my_datasettrain:images/trainval:images/valnc:2# 类别数names:[screw,nut]# 类别名四、小样本训练策略4.1 迁移学习这是小样本训练的核心。YOLOv8 预训练模型在 COCO 上学到的特征边缘、纹理、形状具有通用性我们只需要在新数据上微调一下让它认识新类别即可。Ultralytics 默认就是迁移学习——加载yolov8n.pt预训练权重开始训练yolo detect train\datadata.yaml\modelyolov8n.pt\# 预训练权重n/s/m/l/x 选型epochs100\imgsz640\batch16\lr00.01\freeze10# 冻结前 10 层4.2 冻结骨干网络freeze10表示冻结骨干网络backbone的前 10 层只训练检测头和部分颈部。骨干网络参数不更新训练参数量大幅减少50 张图也能跑出可用模型。冻结合数要根据样本数调整50 张以下冻结全部骨干freeze2250~200 张冻结前 10 层200~1000 张冻结前 5 层或不冻结4.3 数据增强加倍小样本训练最怕过拟合——模型把训练集背下来了测试集一塌糊涂。解决方法是训练时在线增强# hyp.yaml 训练超参hsv_h:0.015# 色调增强hsv_s:0.7# 饱和度增强hsv_v:0.4# 明度增强degrees:10.0# 旋转角度translate:0.1# 平移比例scale:0.5# 缩放比例fliplr:0.5# 水平翻转概率mosaic:1.0# Mosaic 增强4 图拼接超有用mixup:0.1# Mixup 增强mosaic增强对小目标特别有效把 4 张图拼成 1 张小目标比例被放大模型学得更准。五、训练环境搭建PC 端 GPU 训练环境# 1. 装 CUDA按显卡型号选版本# 2. 装 PyTorch带 CUDA 支持pipinstalltorch torchvision --index-url https://download.pytorch.org/whl/cu118# 3. 装 Ultralyticspipinstallultralytics# 4. 验证 GPU 可用python-cimport torch; print(torch.cuda.is_available())# 应输出 True没有 NVIDIA 显卡的话用 CPU 也能训练但速度慢 10 倍以上建议租云 GPUAutoDL、Colab 都行。六、训练参数配置详解yolo detect train\datadata.yaml\modelyolov8n.pt\epochs100\# 训练轮数小样本 100~300 足够batch16\# 批大小显存不够就降最小到 4imgsz640\# 输入尺寸640 够用显存富裕可上 1024lr00.01\# 初始学习率迁移学习用默认即可lrf0.01\# 最终学习率衰减系数patience20\# 早停20 轮无提升就停防过拟合weight_decay0.0005\# 权重衰减正则化防过拟合freeze10\# 冻结层数projectruns/train\# 输出目录nameexp1参数调优建议学习率loss 降不下去就调大0.02loss 抖动剧烈就调小0.005batch size显存允许越大越好但小样本别超 32否则一个 epoch 步数太少epochs看val/loss不降了就停别硬训过拟合反而掉点七、训练过程监控训练开始后关注这几个指标Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size 1/100 3.52G 1.234 0.892 0.956 42 640 2/100 3.55G 0.845 0.621 0.812 38 640 ...box_loss边界框回归损失应该持续下降cls_loss分类损失应该持续下降dfl_loss分布焦点损失波动正常训练结束后看runs/train/exp1/results.png里面是所有指标的曲线图。重点看train/loss和val/loss都在下降 → 正常train/loss下降但val/loss上升 →过拟合该早停或加增强八、模型评估指标解读训练完会输出一堆指标新手容易看晕指标含义解读Precision精确率预测为正的样本里多少是对的查准率Recall召回率真实为正的样本里多少被找出来了查全率mAP50IoU0.5 时的平均精度偏宽松主要看这个mAP50-95IoU 从 0.5 到 0.95 的平均偏严格反映定位精度举个机械臂要抓螺丝Precision 高 Recall 低 → 漏抓多有些螺丝没识别到Precision 低 Recall 高 → 误抓多把螺母也当螺丝抓了。抓取场景一般优先保证 Recall漏抓比误抓更影响流程。九、模型导出与部署训练完的.pt模型要在 RK3588 上跑需要经过三步转换9.1 PyTorch → ONNXyoloexportmodelruns/train/exp1/weights/best.ptformatonnxsimplifyTrueopset12simplifyTrue会用 onnx-simplifier 简化图结构减少算子数量对后续 RKNN 转换更友好。9.2 ONNX → RKNN在 PC 上用 RKNN-Toolkit2 转换需要安装rknn-toolkit2fromrknn.apiimportRKNN rknnRKNN()# 配置量化参数rknn.config(mean_values[[0,0,0]],std_values[[255,255,255]],target_platformrk3588,quantized_dtypew8a8,# INT8 量化quantized_methodchannel,# 逐通道量化optimization_level3)# 加载 ONNX 模型rknn.load_onnx(modelbest.onnx)# 构建模型需要校准数据集做量化rknn.build(do_quantizationTrue,dataset./dataset.txt)# 导出 RKNN 模型rknn.export_rknn(best.rknn)dataset.txt是量化校准图片列表放 100~500 张代表性图片路径即可。9.3 RK3588 上推理把best.rknn拷到开发板用 rknn-lite API 推理fromrknnlite.apiimportRKNNLite rknnRKNNLite()rknn.load_rknn(best.rknn)rknn.init_runtime(core_maskRKNNLite.NPU_CORE_0_1_2)# 三核并行outputsrknn.infer(inputs[img_array])NPU 三核并行YOLOv8n 单帧推理能压到 15ms 以内30 FPS 没压力。十、Python 训练脚本整合不想敲命令行的话用 Python 脚本更灵活fromultralyticsimportYOLOdeftrain_custom_model():modelYOLO(yolov8n.pt)# 加载预训练模型resultsmodel.train(datadata.yaml,epochs100,batch16,imgsz640,lr00.01,freeze10,patience20,projectruns/train,namescrew_detect,device0,# GPU)# 验证metricsmodel.val()print(fmAP50:{metrics.box.map50:.4f})print(fmAP50-95:{metrics.box.map:.4f})# 导出 ONNXmodel.export(formatonnx,simplifyTrue)if__name____main__:train_custom_model()十一、结语小样本训练专属模型的核心就三招迁移学习 冻结骨干 数据增强。50 张图能训出可用模型500 张能上生产关键不在数据量而在数据质量和训练策略。标注别偷懒增强别过头指标别迷信实测最靠谱——拿机械臂实际跑 100 次抓取成功率才是硬道理。

相关新闻

10大AI技能突破:从办公自动化到创意设计的全栈解决方案

10大AI技能突破:从办公自动化到创意设计的全栈解决方案

10大AI技能突破:从办公自动化到创意设计的全栈解决方案 【免费下载链接】skills Public repository for Agent Skills 项目地址: https://gitcode.com/GitHub_Trending/skills3/skills 想象一下这样的场景:你需要为团队会议准备一份专业报告&…

2026/10/9 3:18:26 阅读更多 →
10分钟打造专属AI音色:RVC语音转换技术完全指南

10分钟打造专属AI音色:RVC语音转换技术完全指南

10分钟打造专属AI音色&#xff1a;RVC语音转换技术完全指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-We…

2026/10/5 14:32:34 阅读更多 →
深度学习模型训练中的过拟合诊断与优化:从损失函数到泛化能力

深度学习模型训练中的过拟合诊断与优化:从损失函数到泛化能力

最近在开发一个基于深度学习的图像生成项目时&#xff0c;遇到了一个非常棘手的问题&#xff1a;模型训练过程看似一切正常&#xff0c;损失函数在下降&#xff0c;但最终生成的图像却总是模糊不清&#xff0c;缺乏细节&#xff0c;仿佛隔着一层云雾。这让我想起了道家修炼中的…

2026/10/9 17:13:26 阅读更多 →

最新新闻

K8s 探针配置的 3 个反直觉行为:为什么 Pod 一直没就绪

K8s 探针配置的 3 个反直觉行为:为什么 Pod 一直没就绪

我不会起名字322 后端 / 算法 / 数据库 &#x1f4d8; 技术栈 &#xff5c; &#x1f9e9; 力扣 Hot100 &#xff5c; &#x1f439; Go 项目 &#xff5c; &#x1f7e5; Redis &#xff5c; &#x1f42c; MySQL 文章目录K8s 探针配置的 3 个反直觉行为&#xff1a;为什么 P…

2026/10/13 10:20:50 阅读更多 →
Linux 6.12 源码深度剖析: shrink_node

Linux 6.12 源码深度剖析: shrink_node

Linux 6.12 内核深度解析:内存回收核心引擎 shrink_node 1. 📌 技术点速览 在 Linux 内存管理系统中,当物理内存紧张、达到或低于特定的水位线(Watermark)时,内核必须启动页面回收(Page Reclaim)机制以释放物理内存。shrink_node 函数是整个内存回收子系统的核心控制…

2026/10/13 10:20:50 阅读更多 →
闲鱼自动回复不生效怎么办?叮当小宝CS排查三步

闲鱼自动回复不生效怎么办?叮当小宝CS排查三步

闲鱼的自动回复是卖家最常用也最常出状况的功能&#xff1a;明明设了话术&#xff0c;买家发来消息却没有回。这篇按三步排查把常见原因过一遍&#xff0c;再说说闲鱼自带工具的边界&#xff0c;以及单量上来之后怎么补位。## 先查&#xff1a;设置是否真的保存生效路径再走一遍…

2026/10/13 10:20:50 阅读更多 →
十六进制转十进制C语言代码实现

十六进制转十进制C语言代码实现

本文章主要讲解: 将输入的十六进制数转化为十进制数的C语言代码实现过程知识较为基础&#xff0c;若有不足请各位多多指教首先给出完整实现代码&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #define weish…

2026/10/13 10:20:50 阅读更多 →
Godot VisibleOnScreenNotifier2D 实战指南:基于渲染剔除的 2D 屏幕可见性检测

Godot VisibleOnScreenNotifier2D 实战指南:基于渲染剔除的 2D 屏幕可见性检测

文档教程游戏开发 【免费下载链接】godot-docs Godot Engine official documentation 项目地址&#xff1a; https://gitcode.com/GitHub_Trending/go/godot-docs 点击查看 免费下载 VisibleOnScreenNotifier2D 是 Godot Engine 官方文档&#xff08;本仓库 godot-docs&#x…

2026/10/13 10:20:50 阅读更多 →
HANA数据库HA高可用双机架构原理

HANA数据库HA高可用双机架构原理

HA双机架构的核心概念与设计思路拆解1. 主流HA模式&#xff1a;共享存储 vs. 存储复制HANA HA主要有两种实现模式&#xff0c;选择哪一种&#xff0c;取决于你的基础设施策略和成本考量。共享存储架构&#xff08;Shared Storage&#xff09; &#xff1a;这是较为传统和经典的…

2026/10/13 10:19:49 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目&#xff0c;我最大的感受是&#xff0c;大部分坑不是出在技术前沿&#xff0c;而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节&#xff0c;最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了&#xff0c;很难不碰到舵机控制这道坎。做智能小车要转方向&#xff0c;做机械臂要抬关节&#xff0c;做云台要偏航俯仰&#xff0c;背后都是同一个东西在干活&#xff1a;舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”&#xff1f;——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台&#xff1f;或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜&#xff1f;又或者&#xff0c;在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →