DeFCN:《End-to-End Object Detection with Fully Convolutional Network》复现:训练自己数据集

一. 环境搭建

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/
      在这里插入图片描述

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 :配置文件路径在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35759272/article/details/124503072
今日推荐