训练VOC数据(liuhao_voc_kouzhao)
1.准备数据集
#1.创建软链接
ln -s ../../../datasets/kouzhao/liuhao_voc_kouzhao/ ./
/detectron2-master/detectron2/data/datasets/builtin.py第206行
SPLITS = [
("voc_2007_trainval", "VOC2007", "trainval"),
("voc_2007_train", "VOC2007", "train"),
("voc_2007_val", "VOC2007", "val"),
("voc_2007_test", "VOC2007", "test"),
("voc_2012_trainval", "VOC2012", "trainval"),
("voc_2012_train", "VOC2012", "train"),
("voc_2012_val", "VOC2012", "val"),
("liuhao_voc_kouzhao_train", "liuhao_voc_kouzhao/train", "train"), #自定义数据集
("liuhao_voc_kouzhao_val", "liuhao_voc_kouzhao/val", "val"), #自定义数据集
]
#修改/detectron2-master/detectron2/data/datasets/pascal_voc.py 第17行和第46行如下
#修改/detectron2-master/detectron2/data/datasets/pascal_voc.py 第17行
# fmt: off
#CLASS_NAMES = (
# "aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat",
# "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person",
# "pottedplant", "sheep", "sofa", "train", "tvmonitor"
#)
CLASS_NAMES = ("no_mask", "have_mask")
# fmt: on
jpeg_file = os.path.join(dirname, "JPEGImages", fileid + ".jpg") ####################### 这里需要根据需求具体来修改.jpg .bmp
2.修改配置文件PascalVOC-Detection/faster_rcnn_R_50_FPN_liuhao_voc_kouzhao.yaml
#2.修改如下
_BASE_: "../Base-RCNN-FPN.yaml"
MODEL:
WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
MASK_ON: False
RESNETS:
DEPTH: 50
ROI_HEADS:
NUM_CLASSES: 2 ######################################## 数据集类别数
INPUT:
MIN_SIZE_TRAIN: (480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800)
MIN_SIZE_TEST: 800
DATASETS:
TRAIN: ('liuhao_voc_kouzhao_train', 'liuhao_voc_kouzhao_val') ###在builtin.py注册数据集的名称
TEST: () ################################################# 去掉测试集('voc_2007_test',)
SOLVER:
STEPS: (600, 700)
MAX_ITER: 800 ############# 自定义最大迭代次数=(训练集400张图片/batch_size2) * 4epochs
WARMUP_ITERS: 100
3.训练
#在/detectron2-master文件夹下面打开终端
source ~/anaconda3/bin/activate mydetection_python3.7.3
python3 ./tools/train_net.py --config-file=./configs/PascalVOC-Detection/faster_rcnn_R_50_FPN_liuhao_voc_kouzhao.yaml --num-gpus=1 SOLVER.IMS_PER_BATCH 2 SOLVER.BASE_LR 0.01
#查看/detectron2-master/output/
4训练成功,部分日志
[04/28 22:32:45 d2.data.build]: Removed 98 images with no usable annotations. 479 images left.
[04/28 22:32:45 d2.data.build]: Distribution of instances among all 2 categories:
| category | #instances | category | #instances |
|:----------:|:-------------|:----------:|:-------------|
| no_mask | 529 | have_mask | 730 |
| | | | |
| total | 1259 | | |
修改./output/为./output_liuhao_voc_kouzhao/
5可视化
/home/liuhao/anaconda3/envs/mybase_python3.7.3/bin/tensorboard --logdir ./output_liuhao_voc_kouzhao/
6预测
python3 ./demo/demo.py --config-file=./configs/PascalVOC-Detection/faster_rcnn_R_50_FPN_liuhao_voc_kouzhao.yaml --input=./datasets/liuhao_voc_kouzhao/val/JPEGImages/402.jpg --opts MODEL.WEIGHTS ./output_liuhao_voc_kouzhao/model_final.pth
python3 ./demo/demo.py --config-file=./configs/PascalVOC-Detection/faster_rcnn_R_50_FPN_liuhao_voc_kouzhao.yaml --input=./datasets/liuhao_voc_kouzhao/val/JPEGImages/569.jpg --opts MODEL.WEIGHTS ./output_liuhao_voc_kouzhao/model_final.pth
#可以预测,效果不错