1 项目说明
随着制造业的产线自动化、智能化需求的不断提升,机器人和AI视觉技术的结合越来越广泛,如:视觉引导的涂装、焊接或机械手抓取等。
在项目落地中,目标物体轮廓的精准定位非常关键。在视觉定位过程中,需要通过对相机的标定,来求取相机和实际物体的坐标关系,进而转化成机械手可以识别的坐标空间。但在实际场景中,目标所处的环境非常复杂,遨博机器人结合自身经验,总结出了一套深度学习抓取方案。
2 数据准备
数据集中提供了采用labelme进行多边形标注的30张图片。点击此处下载数据集
准备工作
先指定路径到项目文件夹
cd path_to_paddlexproject
建立dataset_labelme
文件夹,在该文件夹下再分别建立JPEGImages
和Annotations
文件夹,将图片存放于JPEGImages
文件夹,Annotations
文件夹用于存储标注的json文件。
打开LabelMe,点击”Open Dir“按钮,选择需要标注的图像所在的文件夹打开,则”File List“对话框中会显示所有图像所对应的绝对路径,接着便可以开始遍历每张图像,进行标注工作.
更多数据格式信息请参考数据标注说明文档
目标边缘标注
打开多边形标注工具(右键菜单->Create Polygon)以打点的方式圈出目标的轮廓,并在弹出的对话框中写明对应label(当label已存在时点击即可,此处请注意label勿使用中文),具体如下提所示,当框标注错误时,可点击左侧的“Edit Polygons”再点击标注框,通过拖拉进行修改,也可再点击“Delete Polygon”进行删除。
点击”Save“,将标注结果保存到中创建的文件夹Annotations
目录中。
格式转换
LabelMe标注后的数据还需要进行转换为MSCOCO格式,才可以用于实例分割任务的训练,创建保存目录dataset
,在python环境中安装paddlex后,使用如下命令即可:
paddlex --data_conversion --source labelme --to MSCOCO --pics dataset_labelme/JPEGImages --annotations dataset_labelme/Annotations --save_dir dataset
数据切分
将训练集、验证集和测试集按照7:2:1的比例划分。
paddlex --split_dataset --format COCO --dataset_dir dataset --val_value 0.2 --test_value 0.1
数据文件夹切分前后的状态如下:
dataset/ dataset/ ├── JPEGImages/ --> ├── JPEGImages/ ├── annotations.json ├── annotations.json ├── test.json ├── train.json ├── val.json
3 模型选择
实现抓取,模型的选择多种多样,最终选择了PaddleX提供的实例分割算法Mask RCNN
4 模型训练
在项目中,我们采用MaskRCNN作为木块抓取的模型。具体代码请参考train.py
运行如下代码开始训练模型:
python code/train.py
若输入如下代码,则可在log文件中查看训练日志
python code/train.py > log
训练过程说明
5 训练可视化
在模型训练过程,在train
函数中,将use_vdl
设为True,则训练过程会自动将训练日志以VisualDL的格式打点在save_dir
(用户自己指定的路径)下的vdl_log
目录。
用户可以使用如下命令启动VisualDL服务,查看可视化指标
visualdl --logdir output/mask_rcnn_r50_fpn/vdl_log --port 8001
服务启动后,按照命令行提示,使用浏览器打开 http://localhost:8001/
6 模型导出
模型训练后保存在output文件夹,如果要使用PaddleInference进行部署需要导出成静态图的模型,运行如下命令,会自动在output文件夹下创建一个inference_model
的文件夹,用来存放导出后的模型。
paddlex --export_inference --model_dir=output/mask_rcnn_r50_fpn/best_model --save_dir=output/inference_model
7 模型预测
运行如下代码:
python code/infer.py
预测结果如下:
8 边缘坐标的获取
进一步获取目标的,则可在log文件中查看训练日志
python code/point.py > log
边缘坐标可视化效果:
9 预测部署
为了更好的满足用户的部署需求,在案例提供了工业级别的部署方式,支持用户能够在windows上使用C#部署,支持用户输入单张图片、图片文件夹和视频流进行预测。