COCO数据集官网大小是:训练集/验证集/测试集:118k/5k/41k。经过处理,只获取有人体标注的姿态估计数据集大小是:训练集/验证集:64k/2k。请问很多人体姿态估计文章中所使用的COCO姿态估计数据集,大小是:训练集/验证集/测试集:57k/5k/20k,是如何获取的呢?
一些文章中使用的COOC姿态估计数据集大小是:训练集/验证集/测试集:57k/5k/20k,是通过对原始的COCO数据集进行筛选和加工得到的。具体来说,他们选择了包含人体keypoints注释的图片,然后进行了一系列的数据清理和裁剪,以生成最终的训练、验证和测试集。这个过程可以使用COCO API或其他图像处理工具来实现。值得注意的是,不同的研究者可能使用不同的数据预处理方法,因此在评估不同姿态估计模型性能时,需要谨慎比较。
根据COCO数据集官网给出的信息,只有含有人体标注的图像才能用于姿态估计任务。因此,很多人体姿态估计文章中使用的COCO数据集都是经过处理后的。可以通过去官网下载原始数据集,再使用开源的姿态估计工具,如OpenPose、Detectron2等,对数据集进行处理,得到只包含人体标注的姿态估计数据集。下面是使用Detectron2对COCO数据集进行处理的示例代码:
# 导入必要的库
import numpy as np
import os
import cv2
from detectron2.data.datasets import register_coco_instances
from detectron2.data import MetadataCatalog, DatasetCatalog
from detectron2.engine import DefaultTrainer
from detectron2.config import get_cfg
from detectron2 import model_zoo
from detectron2.engine.defaults import DefaultPredictor
from detectron2.utils.visualizer import ColorMode, Visualizer
from detectron2.data import DatasetMapper, build_detection_train_loader, build_detection_test_loader
from detectron2.evaluation import COCOEvaluator, inference_on_dataset
from detectron2.data.datasets.coco import load_coco_json
from detectron2.utils.visualizer import ColorMode
# 注册COCO数据集
register_coco_instances("my_dataset_train", {}, "path/to/annotations/train.json", "path/to/images/")
register_coco_instances("my_dataset_val", {}, "path/to/annotations/val.json", "path/to/images/")
# 配置模型
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-Keypoints/keypoint_rcnn_R_50_FPN_3x.yaml"))
cfg.DATASETS.TRAIN = ("my_dataset_train",)
cfg.DATASETS.TEST = ("my_dataset_val",)
cfg.DATALOADER.NUM_WORKERS = 4
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-Keypoints/keypoint_rcnn_R_50_FPN_3x.yaml")
cfg.SOLVER.IMS_PER_BATCH = 2
cfg.SOLVER.BASE_LR = 0.0025
cfg.SOLVER.MAX_ITER = 5000
cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE = 128
cfg.MODEL.ROI_HEADS.NUM_CLASSES = 1
cfg.MODEL.ROI_KEYPOINT_HEAD.NUM_KEYPOINTS = 17
# 训练模型
trainer = DefaultTrainer(cfg)
trainer.resume_or_load(resume=False)
trainer.train()
# 测试模型
cfg.MODEL.WEIGHTS = os.path.join(cfg.OUTPUT_DIR, "model_final.pth")
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.7
predictor = DefaultPredictor(cfg)
# 加载数据集
my_dataset_train_metadata = MetadataCatalog.get("my_dataset_train")
my_dataset_val_metadata = MetadataCatalog.get("my_dataset_val")
my_dataset_train_dicts = DatasetCatalog.get("my_dataset_train")
my_dataset_val_dicts = DatasetCatalog.get("my_dataset_val")
# 进行预测并可视化
for d in my_dataset_val_dicts:
im = cv2.imread(d["file_name"])
outputs = predictor(im)
v = Visualizer(im[:, :, ::-1],
metadata=my_dataset_val_metadata,
scale=1.2,
instance_mode=ColorMode.IMAGE_BW)
v = v.draw_instance_predictions(outputs["instances"].to("cpu"))
cv2.imshow("image", v.get_image()[:, :, ::-1])
cv2.waitKey(0)
在以上代码中,首先使用register_coco_instances函数注册COCO数据集,然后使用get_cfg函数配置模型,包括训练参数、权重、数据集等。接着使用DefaultTrainer训练模型,再使用DefaultPredictor进行预测。最后,使用Visualizer对预测结果进行可视化。通过以上操作,可以得到只包含人体标注的姿态估计数据集。