# 整体
{
"images": [image],
"annotations": [annotation],
"categories": [category]
}
# 标注 annotation
{
"id": int,
"image_id": int, #图片id
"category_id": int, # 类别id,对应COCO 81个类中的一个
"segmentation": RLE or [polygon], # 目标的分割区域
"area": float, # 标注区域面积
"bbox": [x,y,width,height], #图片中目标的边框 ;注意这里给的是左上角坐标及宽度、高度,有时需要转化为左上角、右下角坐标
"iscrowd": 0 or 1, # 一个目标(0)还是多个目标(1)
}
# 类别 categories
{
"id": int,
"name": str, # 类别名(子类名)
"supercategory": str, # 父类名
}
# 图像 images
{
"file_name": "000000397133.jpg",
"height": 427,
"width": 640,
"id": 397133
}
└── $ROOT_PATH
├── classes.txt
├── images
└──labels
classes.txt 是类的声明,一行一类。
images 目录包含所有图片 (目前支持png和jpg格式数据)
labels 目录包含所有标签(与图片同名的txt格式数据)
配置好文件夹后,执行:python yolo2coco.py --root_dir $ROOT_PATH
,然后就能看见生成的 annotations 文件夹。
参数说明
--root_path
输入根目录 R O O T P A T H 的位置。 ‘ − − s a v e p a t h ‘ 如果不进行数据集划分,可利用此参数指定输出文件的名字,默认保存为 t r a i n . j s o n ‘ − − r a n d o m s p l i t ‘ 随机划分参数,若指定 ‘ − − r a n d o m s p l i t ‘ 参数,则输出在 a n n o t a t i o n s 文件夹下包含 t r a i n . j s o n v a l . j s o n t e s t . j s o n (默认随机划分成 8 : 1 : 1 ) ‘ − − s p l i t b y f i l e ‘ 自定义数据集划分,若指定 ‘ − − s p l i t b y f i l e ‘ 参数,则输出在 a n n o t a t i o n s 文件夹 t r a i n . j s o n v a l . j s o n t e s t . j s o n 。需要在 ROOT_PATH的位置。 `--save_path` 如果不进行数据集划分,可利用此参数指定输出文件的名字,默认保存为train.json `--random_split` 随机划分参数,若指定`--random_split`参数,则输出在annotations文件夹下包含 train.jsonval.jsontest.json (默认随机划分成8:1:1) `--split_by_file` 自定义数据集划分,若指定`--split_by_file`参数,则输出在annotations文件夹 train.jsonval.jsontest.json。需要在 ROOTPATH的位置。‘−−savepath‘如果不进行数据集划分,可利用此参数指定输出文件的名字,默认保存为train.json‘−−randomsplit‘随机划分参数,若指定‘−−randomsplit‘参数,则输出在annotations文件夹下包含train.jsonval.jsontest.json(默认随机划分成8:1:1)‘−−splitbyfile‘自定义数据集划分,若指定‘−−splitbyfile‘参数,则输出在annotations文件夹train.jsonval.jsontest.json。需要在ROOT_PATH文件下有 ./train.txt ./val.txt ./test.txt ,可以这3个文件来定义训练集、验证集、测试集。注意, 这里里面填写的应是图片文件名字,而不是图片的绝对地址。(在line 43也自行可以修改一下读取方式,为了方便起见,不推荐把图片放在不同位置)
VOCdevkit
├──VOC2007(或VOC2012)
│ ├── Annotations
│ ├── xxx.xml
│ ├── JPEGImages
│ ├── xxx.jpg
│ ├── ImageSets
│ ├── Main
│ ├── trainval.txt
│ ├── test.txt
configs/rtdetr/_base_/rtdetr_r50vd.yaml
添加freeze_norm: false
来关闭它。还通过将行freeze_at: 0
修改为 freeze_at: -1
来关闭参数冻结选项.[‘person’, ‘bicycle’, ‘car’, ‘motorcycle’, ‘airplane’, ‘bus’, ‘train’, ‘truck’, ‘boat’, ‘traffic light’, ‘fire hydrant’, ‘stop sign’, ‘parking meter’, ‘bench’, ‘bird’, ‘cat’, ‘dog’, ‘horse’, ‘sheep’, ‘cow’, ‘elephant’, ‘bear’, ‘zebra’, ‘giraffe’, ‘backpack’, ‘umbrella’, ‘handbag’, ‘tie’, ‘suitcase’, ‘frisbee’, ‘skis’, ‘snowboard’, ‘sports ball’, ‘kite’, ‘baseball bat’, ‘baseball glove’, ‘skateboard’, ‘surfboard’, ‘tennis racket’, ‘bottle’, ‘wine glass’, ‘cup’, ‘fork’, ‘knife’, ‘spoon’, ‘bowl’, ‘banana’, ‘apple’, ‘sandwich’, ‘orange’, ‘broccoli’, ‘carrot’, ‘hot dog’, ‘pizza’, ‘donut’, ‘cake’, ‘chair’, ‘couch’, ‘potted plant’, ‘bed’, ‘dining table’, ‘toilet’, ‘tv’, ‘laptop’, ‘mouse’, ‘remote’, ‘keyboard’, ‘cell phone’, ‘microwave’, ‘oven’, ‘toaster’, ‘sink’, ‘refrigerator’, ‘book’, ‘clock’, ‘vase’, ‘scissors’, ‘teddy bear’, ‘hair drier’, ‘toothbrush’]
cd Desktop/ppdet/PaddleDetection/
conda activate re-detr
# --use_vdl=true表示使用可视化
python tools/train.py -c configs/rtdetr/rtdetr_r18vd_6x_coco.yml --use_vdl=true --vdl_log_dir=vdl_dir/scalar
# 如需断训重续,使用-r
python tools/train.py -c configs/rtdetr/rtdetr_r18vd_6x_coco.yml --use_vdl=true --vdl_log_dir=vdl_dir/scalar -r output/model_final
# 折线图可视化,网页打开http://localhost:8040/即可
visualdl --logdir vdl_dir/scalar/
训练loss图:5000轮
尝试推理:
python tools/infer.py -c configs/rtdetr/rtdetr_r18vd_6x_coco.yml -o weights=output/model_final --infer_dir=dataset/coco128/train2017
尝试评估mAP等参数
python tools/eval.py -c configs/rtdetr/rtdetr_r18vd_6x_coco.yml -o weights=output/model_final
5000轮训练后
拍摄RGB图和深度图 https://github.com/Incalos/Image-Capture-With-RealSense
拍摄方案:8:1:1,四种不同尺寸,两大两小,大的每种三个,小的每种五个,单,两,三,四组合一下共575张
形状相同,尺寸不同的两个物体怎么分类:好像没啥好办法,尺度不变,算面积;深度相机获取点云,说到底要有长宽的信息;先仿个标志物或者增强中不使用缩放试试,又看了眼好像不用,肉眼可分辨
先标注然后再进行增强,增强好像可以直接用paddel的
先进行检测的标注,之后再进行抓取标注
在