- 论文链接:https://arxiv.org/pdf/2012.03544.pdf
- 代码链接:https://github.com/Megvii-BaseDetection/DeFCN
- 论文解读:https://zhuanlan.zhihu.com/p/371594304
一. 环境搭建
1.1. 安装cvpods框架
git clone https://github.com/Megvii-BaseDetection/cvpods.git
python3 -m pip install -e cvpods
cd cvpods/datasets
ln -s /share/.../coco coco
ln链接数据路径,或者将数据拷过来,数据路径要按照下面放置:
- coco/
- annotations/
- instances_{train,val}2017.json
- {train,val}2017/
- annotations/
1.2. 下载DeFCN代码
git clone https://github.com/Megvii-BaseDetection/DeFCN.git
- 我是将DeFCN文件夹,放到和cvpods文件夹并列目录,不影响
二. 训练
2.1. 配置文件修改
以/home/wenjie.yuan/Parking_Slot/DeFCN/playground/detection/coco/poto.res50.fpn.coco.800size.3x_ms为例:
- 修改train、test路径为自己的前面提到的data/coco下面的文件名
DATASETS=dict(
TRAIN=("coco_2014_train",),
TEST=("coco_2014_val",),
),
- 修改分类数(类别名不需要修改,通过json获取)
_config_dict = dict(
MODEL=dict(
WEIGHTS="detectron2://ImageNetPretrained/MSRA/R-50.pkl",
RESNETS=dict(DEPTH=50),
SHIFT_GENERATOR=dict(
NUM_SHIFTS=1,
OFFSET=0.5,
),
FCOS=dict(
NUM_CLASSES=1, # 修改
NORM_REG_TARGETS=True,
NMS_THRESH_TEST=1.0, # disable NMS when NMS threshold is 1.0
BBOX_REG_WEIGHTS=(1.0, 1.0, 1.0, 1.0),
FOCAL_LOSS_GAMMA=2.0,
FOCAL_LOSS_ALPHA=0.25,
IOU_LOSS_TYPE="giou",
REG_WEIGHT=2.0,
),
POTO=dict(
ALPHA=0.8,
CENTER_SAMPLING_RADIUS=1.5,
),
NMS_TYPE=None,
),
2.2. 开始训练
pods_train --num-gpus 1 --dir /home/wenjie.yuan/Parking_Slot/DeFCN/playground/detection/coco/poto.res50.fpn.coco.800size.3x_ms
- –dir :是为了在cvpods框架train_net.py中添加环境路径:sys.path.append(extra_sys_path),也可以手动添加
- 多卡 1 改为8就行
三. 测试
pods_test --num-gpus 1 --dir DeFCN/playground/detection/coco/poto.res50.fpn.coco.800size.3x_ms MODEL.WEIGHTS DeFCN/work_dir/cow_poto_res50_size800_batch64/detection/coco/poto.res50.fpn.coco.800size.3x_ms/model_final.pth OUTPUT_DIR DeFCN/save_dir
- MODEL.WEIGHTS:模型路径
- OUTPUT_DIR:输出文件路径
- 多卡 1 改为8就行
生成文件如下:json文件在可视化的时候可以调用
三. 预测结果可视化
3.1 通过json文件可视化
- 需要在cvpods/tools/visualize_json_results.py添加cvpods路径
import sys
sys.path.append('/share/wenjie.yuan/Parking_Slot/cvpods')
python cvpods/tools/visualize_json_results.py --input DeFCN/save_dir/inference/coco_instances_results.json --output ./imshow_output --config DeFCN/playground/detection/coco/poto.res50.fpn.coco.800size.3x_ms/config.py
- –input:刚刚测试输出的json路径
- –output:可视化保存的路径
- –config :配置文件路径