文章:FCOS: Fully Convolutional One-Stage Object Detection
项目源码:https://github.com/tianzhi0549/FCOS

目录

  • 一、环境配置
    • 测试demo
  • 二、训练自己的数据集
    • 2.1 构建数据集
      • voc
      • coco
    • 2.2 训练数据
  • 三、测试网络

一、环境配置

可以根按照官方指示(https://github.com/tianzhi0549/FCOS/blob/master/INSTALL.md)配置环境。在具体执行阶段,试错很久后我发现pytorch、torchvision的版本会影响FCOS环境编译(这一步:python setup.py build develop --no-deps)成功与否——其原因是ninja报错【ninja是一种编译工具,类似cmake,这里很爱使用ninja对torch库进行编译。我自己报错原因真相是torch 、torchvision 、ninja版本问题:torch版本太高了(1.8.1),而ninja更新速度好像没有torch快,所以即便是最新的ninja(1.10.2),也无法编译从而报错,解决方法就是将torch降级,具体可参考这篇很好的内容】。我以自己的血泪史表示,运行此程序当遇到setup等一切报错时,不建议针对具体报错进行修改,建议从根本上装对的版本内容,一切就会非常流畅了。

所以分享具体步骤及版本信息:

cuda=10.0.130
python=3.6
pytorch=1.4.0
torchvision=0.2.1
cudatoolkit=10.0
ninja=1.10.2
# first, make sure that your conda is setup properly with the right environment
# for that, check that `which conda`, `which pip` and `which python` points to the
# right path. From a clean conda env, this is what you need to do
conda create --name FCOS python=3.6 #创建虚拟环境,python为3.6版本
conda activate FCOS #激活虚拟环境# this installs the right pip and dependencies for the fresh python
conda install ipython# FCOS and coco api dependencies
pip install ninja yacs cython matplotlib tqdm# follow PyTorch installation in https://pytorch.org/get-started/locally/
# we give the instructions for CUDA 9.0
conda install -c pytorch==1.4.0 torchvision=0.2.1 cudatoolkit=10.0# install pycocotools. Please make sure you have installed cython.
cd到home/xxx下
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
python setup.py build_ext install# install PyTorch Detection
cd到home/xxx下
git clone https://github.com/tianzhi0549/FCOS.git
cd FCOS# the following will install the lib with symbolic links, so that you can modify the files if you want and won't need to re-build it
# 激活fcos环境再编译
source activate FCOS
python setup.py build develop --no-deps

可以在命令行检查安装的python、torch、torchvision版本。

编译成功后显示:

测试demo

在**官网**上下载一个预训练模型FCOS_imprv_R_50_FPN_1x.pth放在FCOS文件夹下。

python demo/fcos_demo.py

成功!!!

二、训练自己的数据集

2.1 构建数据集

voc

FCOS项目在MS COCO数据集上进行训练测试,不过程序也给出了pascal VOC数据集的文件格式。如果需要训练自己的数据集,可以将数据文件于相应的数据集进行覆盖,但是不要修改文件名和路径目录;也可以在{FCOS_PATH}/fcos_core/config/paths_catalog.py中进行添加。

下图红框中的内容是我在{FCOS_PATH}/fcos_core/config/paths_catalog.py中自行添加的voc格式数据集。voc数据集的构建格式可以参考这篇文章:https://blog.csdn.net/weixin_43570470/article/details/123659793

需要注意的是,自行添加数据集dataset的键名中“coco”、“voc”均为小写字母,因为{FCOS_PATH}/fcos_core/config/paths_catalog.py中有对数据集的判断代码,如果是大写字母无法识别。

fcos_core/data/datasets/voc.py中的分类修改成自己数据集的内容:

coco

因为VOC数据集的评估方式略微粗糙,仅有mAP等,如果想获得COCO数据集的详细评估结果,一方面是将数据集通过文章中给出的脚本转化为COCO数据集。还有一种方式就是使用带_cocostyle后缀的数据集别名。
结束之后,卸载之前安装的fcos并重新编译安装。这样fcos_core的代码才会生效。

pip3 uninstall fcos -y
python3 setup.py build_ext --inplace
python3 setup.py build_ext install

只有这样,才能够在yaml文件当中反问到刚才添加的数据集:

...
DATASETS:TRAIN: ("coco_{dataset-name}_train", "coco_{dataset-name}_val")TEST: ("coco_{dataset-name}_test",)
...

2.2 训练数据

  • 训练数据集的调整方法在作者项目底下的 #54 issue 列出。

1. Add you dataset to FCOS/fcos_core/config/paths_catalog.py 第10行

2. 在/FCOS/configs/fcos/fcos_R_50_FPN_1x.yamlDATASETS 中 change DATASETS to your own ones. 将DATASETS修改为与{FCOS_PATH}/fcos_core/config/paths_catalog.py中一致的dataset键名:

另外,YAML文件还可以修改训练参数:

SOLVER:BASE_LR: 0.00001                  #学习速率WEIGHT_DECAY: 0.00001              #权重衰减系数STEPS: (60000, 80000)                MAX_ITER: 90000                 #最大迭代次数IMS_PER_BATCH: 8                 #batch_size最终以训练命令中的数量为准WARMUP_METHOD: "constant"

3. Modify MODEL.FCOS.NUM_CLASSES in /FCOS/fcos_core/config/default.py

4.将fcos_core/data/datasets/voc.py中的分类修改成自己数据集的内容:

5. 训练

python -m torch.distributed.launch \--nproc_per_node=8 \--master_port=$((RANDOM + 10000)) \tools/train_net.py \--config-file {YOUR_YAML}.yaml \DATALOADER.NUM_WORKERS 1 \SOLVER.IMS_PER_BATCH 1\TEST.IMS_PER_BATCH 8\OUTPUT_DIR {YOUR_SAVING_DIR}

--nproc_per_node=8: 作者使用8 Nvidia V100 GPUs。如果配置不同,在训练的时候指定此参数为训练GPU节点数
--config-file: 指定训练配置的yaml文件
DATALOADER.NUM_WORKERS 1:数据提取进程数
SOLVER.IMS_PER_BATCH 1 && TEST.IMS_PER_BATCH 8\指定训练和测试时使用的batch_size,也可在yaml文件中配置。
OUTPUT_DIR: 模型输出地址,也可在 /FCOS/fcos_core/config/default.py中配置

三、测试网络

该项目的训练过程不像YOLOv3那样清晰可视化,需要测试每个节点保存的模型。测试结果标准严格按照coco数据集的评测标准分为AP、AP50、AP75、APs、APm、APl分别对应mAP,IOU在50、75时的AP以及小中大目标的AP。测试使用到的命令:

python ../tools/test_net.py \--config-file {YOUR_YAML_PATH} \MODEL.WEIGHT {YOUR_MODEL_PATH} \TEST.IMS_PER_BATCH 4

MODEL.WEIGHTTEST.IMS_PER_BATCH可分别在 /FCOS/fcos_core/config/default.py的36行、453行设置


参考链接:https://blog.csdn.net/yinkaishikd/article/details/105027185

目标检测FCOS网络环境配置、训练自己的数据集相关推荐

  1. mmrotate旋转目标检测框架从环境配置到训练自己的数据集

    mmrotate旋转目标检测框架从环境配置到训练自己的数据集 最近有旋转目标检测的需求了,在寻找旋转目标检测算法的过程中,发现已经有人提前测评了各类旋转目标检测框架了,结果是mmrorate效果最好. ...

  2. 手把手教你用yolov3模型实现目标检测教程(一) - 环境配置

    手把手教你用yolov3模型实现目标检测(一) 写在前面: 由于项目需要,使用yolov3模型做了各种现实场景物体的目标检测.做完了过了好长时间,感觉有些遗忘,还是该留下点东西,方便自己查找,也希望能 ...

  3. Pytorch版deeplabv3+环境配置训练自己的数据集

    这个很不错:https://blog.csdn.net/qq_39056987/article/details/106455828     [windows10]使用pytorch版本deeplabv ...

  4. 墨尘目标检测4--yoyo3模型解析及训练自己的数据集

    YOLOv3相比于之前的yolo1和yolo2,改进较大,主要改进方向有: 1.主干网络修改为darknet53,其重要特点是使用了残差网络Residual,darknet53中的残差卷积就是进行一次 ...

  5. CVPR 2020 | CentripetalNet:目标检测新网络,COCO 48 % AP超现所有Anchor-free网络

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 Anchor-free目标检测新网络,在COCO上可达48 AP!性能优于CenterNet.RPDe ...

  6. 重磅开源!目标检测新网络 DetectoRS:54.7 AP,特征金字塔与空洞卷积的完美结合

    原文链接:重磅开源!目标检测新网络 DetectoRS:54.7 AP,特征金字塔与空洞卷积的完美结合 论文地址:https://arxiv.org/abs/2006.02334 代码地址(基于mmd ...

  7. (二)目标检测模型的评测与训练技巧

    转载自知乎:https://zhuanlan.zhihu.com/p/34142321 关于作者: @李家丞同济大学数学系本科在读,现为格灵深瞳算法部实习生. -------------------- ...

  8. Linux+javaEE学习笔记之Linux网络环境配置

    Linux+javaEE学习笔记之Linux网络环境配置 网络知识简单介绍: Ip地址是:IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物 ...

  9. 目标检测 YOLOv5网络v6 0版本总结

    目标检测 YOLOv5网络v6.0版本总结 YOLOv5对比YOLOv4 输入端:在模型训练阶段,提出了Mosaic数据增强.自适应锚框计算.自适应图片缩放等: Backbone网络:融合其它检测算法 ...

最新文章

  1. 发送邮件程序(Csharp2005)
  2. 大流量的网站如何解决访问量的问题?
  3. 使用Typescript重写axios
  4. 网站改版后确保无误才能上线!
  5. 从国考大数据看中国哪个省的人最爱当官
  6. tornado环境搭建
  7. [CQOI2012]交换棋子【网络流】【费用流】
  8. 在嵌入式Neo4j中使用Neo4j浏览器
  9. atitit.MIZIAN 陕北方言 特有词汇 大词典 attilax 整理 h--n v1 q31.xlsx
  10. 关于navicat premium数据库激活一直不成功的解决方法(亲测有效)
  11. python实现pearson相关性检验
  12. kernel input device
  13. linux curl证书错误,curl – SSL证书错误
  14. 机器学习笔记1-What is Machine Learning
  15. 将一个大文件分割为若干个小文件的方法
  16. Java 对象排序详解
  17. skb_dst_set - struct dst_entry dst 路由子系统使用。
  18. linux虚拟机和主机的文件拷贝
  19. 建设工程法规专科【9】
  20. 阿里巴巴办公室环境图解

热门文章

  1. win7字体安装_三维动画渲染制作软件Maya2015下载和安装
  2. CSDN下载资源 积分不够怎么办?
  3. python爬校花网笔记
  4. 一篇文章讲清楚什么是频率、频域、时域
  5. 【c++】继承与多态的基础知识
  6. adjtimex和时钟的几个概念tick,freq,ppm,jiffies
  7. 学会EMC设计,大部分EMC整改问题可避免
  8. BAT文件语法和技巧
  9. 易语言5.11完全破解补丁-支持静态编译
  10. 《GNU_Make 中文手册》笔记之一