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

news/2024/7/10 0:38:55 标签: 目标检测, 端到端, 无NMS, DeFCN
  • 论文链接: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/
      在这里插入图片描述

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

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


http://www.niftyadmin.cn/n/819354.html

相关文章

这个国产API神器,吊打Postman和Swagger!

有小伙伴问,有啥好用的 API 文档工具推荐,无意间发现了一款工具,这里马不停蹄地来给大家分享一下。这个 API 接口开发调试神器就是 ApiPost。你可以将其看作是 Swagger 、 Postman 、 Mock 的集合,一个工具就搞定了过去多个软件才…

List 转 Map, 齐活!

大家好,我是指北君。在我们平时的工作中,充满了各种类型之间的转换。今天指北君带大家上手 List 转 Map 的各种操作。我们将假设 List 中的每个元素都有一个标识符,该标识符将在生成的 Map 中作为一个键使用。定义一个类型我们在转换之前&…

python的sort()函数用法详解

一. 详解 语法 list.sort(cmpNone, keyNone, reverseFalse) 参数 cmp :可选参数, 如果指定了该参数会使用该参数的方法进行排序。key : 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中&#xff…

哭了。。。

好好活-慈善厨房留言墙上的一句话。1知乎活动那是一个风和日丽的下午,我和不会笑青年正在办公,在知乎上寻找素材的时候发现了一个小红点。点开之后,发现知乎给我推了一个小活动,XX 日去西安的某个地方有一个叫做“无界青年”的活动…

DeepLab系列(v1,v2,v3,v3+)总结

U-net: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation语义分割面临的挑战1. DeepLab v1——《Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs》(ICLR 2015,谷歌)2. DeepL…

混,就完了!!!

写在最后了不起的程序员摸鱼基地成立了!!!了不起的程序员读者交流群正式为大家开放了,加入群聊一起摸鱼吃瓜分享技术!感兴趣的朋友,可以下方公号后台回复:111点击下方图片查看更多原创漫画——f…

Bug解决方案汇总

1.成功解决AttributeError: module ‘cv2.cv2’ has no attribute ‘xfeatures2d’ 原因:opencv自3.4.2.17之后的版本,就不支持该方法了。解决办法: python2: pip uninstall opencv-contrib-pythonpip install opencv-contrib-python3.4.2.17 python3: …

这封面,真绝了呀!

别再用默认的红包封面了马上到虎年了分享一批真绝了的红包封面🧧🧧🧧可要蹲点守住哟!下方公众号回复【红包封面】即可免费领取!Balenciaga1月24日-1月30日,每日12:00领取Balenciaga限定红包封面Boucheron宝…