代码下载
git clone https://github.com/MVIG-SJTU/AlphaPose.git
数据集格式
数据集格式最好使用COCO数据集格式,如果你的当前不是COCO格式的话,可以参考COCO的说明将数据集格式进行修改,网站如下
运行之前自行编写脚本将自己的数据集转换成COCO格式
更换权重
alphapose默认使用的是yolov3模型作为其检测器,但是这个检测器只能检测人体目标姿态,所以如果你的检测目标不是人的话还需要单独训练一个yolov3或者yolox的权重替换原有的权重,否则alphapose是没办法用的.将训练好的权重放入对应位置detector/yolo/data
去https://github.com/MVIG-SJTU/AlphaPose/blob/master/docs/INSTALL.md 中的Models找到你需要使用的权重并下载
配置
配置文件 这里这个例子
DATASET:
TRAIN:
TYPE: 'ConcatDataset'
SET_LIST:
- TYPE: 'Mscoco'
MASK_ID: 0
ROOT: '/media/disk2/yzy/data_set/all_dataset_yzy_wzh/alphapose_data' # 根路径
IMG_PREFIX: 'images' #图像文件夹名称
ANN: 'annotations/train.json' #标注文件
AUG:
FLIP: true
ROT_FACTOR: 40
SCALE_FACTOR: 0.3
NUM_JOINTS_HALF_BODY: 8
PROB_HALF_BODY: -1
VAL:
TYPE: 'Mscoco'
ROOT: '/media/disk2/yzy/data_set/all_dataset_yzy_wzh/alphapose_data'
IMG_PREFIX: 'images'
ANN: 'annotations/val.json'
TEST:
TYPE: 'Mscoco_det'
ROOT: '/media/disk2/yzy/data_set/all_dataset_yzy_wzh/alphapose_data'
IMG_PREFIX: 'images'
DET_FILE: './exp/json/test_det_yolo.json'
ANN: 'annotations/test.json'
DATA_PRESET:
TYPE: 'simple'
SIGMA: 2
NUM_JOINTS: 33
IMAGE_SIZE:
- 256
- 192
HEATMAP_SIZE:
- 64
- 48
MODEL:
TYPE: 'FastPose'
PRETRAINED: ''
TRY_LOAD: ''
NUM_DECONV_FILTERS:
- 256
- 256
- 256
NUM_LAYERS: 50
LOSS:
TYPE: 'MSELoss'
DETECTOR:
NAME: 'yolo'
# CONFIG: 'detector/yolo/cfg/yolov3-spp.cfg'
# WEIGHTS: 'detector/yolo/data/yolov3-spp.weights'
CONFIG: '/media/disk2/yzy/behavior_framework/AlphaPose-master/detector/yolo/cfg/yolov3-spp.cfg'
WEIGHTS: '/media/disk2/yzy/behavior_framework/AlphaPose-master/detector/yolo/data/yolov3-spp.weights'
NMS_THRES: 0.6
CONFIDENCE: 0.05
TRAIN:
WORLD_SIZE: 4
BATCH_SIZE: 32
BEGIN_EPOCH: 0
END_EPOCH: 200
OPTIMIZER: 'adam'
LR: 0.001
LR_FACTOR: 0.1
LR_STEP:
- 90
- 120
DPG_MILESTONE: 140
DPG_STEP:
- 160
- 190
做好这些准备后 还需要校验coco的校验文件
COCO数据格式的校验文件在:AlphaPose-master/alphapose/datasets/mscoco.py
找到这个文件,
修改这部分内容
CLASSES = ['pig']
EVAL_JOINTS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
num_joints = 14
joint_pairs = [[0,1],[4,10],[10,11],[1,2],[3,4],[4,12],[12,13],[2,3],[6,7],[4,5],[8,9],[2,6],[2,7]]
这样通过coco的校验之后 就可以成功训练起模型了