目标检测00-02:mmdetection(Foveabox为例)-官方数据训练测试-COCO

news/2024/7/10 1:07:47 标签: Foveabox, mmdetection, 目标检测, OpenMMLab, free anchor

以下链接是个人关于mmdetection(Foveabox-目标检测框架)所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:17575010159 相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的鼓励。 文末附带 \color{blue}{文末附带} 文末附带 公众号 − \color{blue}{公众号 -} 公众号 海量资源。 \color{blue}{ 海量资源}。 海量资源

目标检测00-00:mmdetection(Foveabox为例)-目录-史上最新无死角讲解

该系列博客主要以 Foveabox 为例

注意,本人编写该博客的时间为 2020 / 09 / 02 ,也就是说,你现在下载的作者代码或许和 \color{red}{注意,本人编写该博客的时间为2020/09/02,也就是说,你现在下载的作者代码或许和} 注意,本人编写该博客的时间为2020/09/02,也就是说,你现在下载的作者代码或许和
本人的代码不一样(如果作者有更新过)还有就是,本人调试该代码为 u b u n t u 18.04 系统 \color{red}{本人的代码不一样(如果作者有更新过)还有就是,本人调试该代码为ubuntu18.04系统} 本人的代码不一样(如果作者有更新过)还有就是,本人调试该代码为ubuntu18.04系统
即下面的报错使用 u b u n t u 18.04 报错的过程,以及解决办法 \color{red}{即下面的报错使用ubuntu18.04报错的过程,以及解决办法} 即下面的报错使用ubuntu18.04报错的过程,以及解决办法

anconda环境搭建

请安装合适 c u d a 版本的 p y t o r c h ,不要直接复制 \color{red}{请安装合适cuda版本的pytorch,不要直接复制} 请安装合适cuda版本的pytorch,不要直接复制

# mmdetection-root表示从github下载项目的根目录
cd ${mmdetection-root}
conda create -n 09.mmdetection-pytorch1.5-py3.6  -y python=3.6
conda activate 09.mmdetection-pytorch1.5-py3.6
pip install torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html
pip install -r requirements/build.txt
python setup.py develop
pip install mmcv -i https://pypi.douban.com/simple

 

数据处理,模型下载

数据摆放
上一篇博客已经给出 COCO 数据的下载链接,下载下来之后本人摆放如下(没有的目录请自行创建):
在这里插入图片描述

#  $MMPOSE表示项目(从githubu下载)的根目录
cd ${mmdetection-root}
# 创建软连接。注意 ../../Dataset data 需要替换成你本人Dataset路径
ln -s ../../Dataset data

其中 annotations 文件夹存在如下文件(有些东西是非必要的,根据上篇博客的提示下载即可):
在这里插入图片描述

模型下载
根据如下网址:https://github.com/open-mmlab/mmdetection/tree/master/configs/foveabox
下载:
在这里插入图片描述
下载的 fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth 与 fovea_r50_fpn_4x4_2x_coco_20200203_112043.log.json 文件存放在 mmdetection-root/checkpoints(如果不存在该文件夹,请自行创建)。
 

模型测试

指令1

#  $MMPOSE表示项目(从githubu下载)的根目录
cd ${mmdetection-root}
python tools/test.py configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py     checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth  --show

指令2

# fovea_r50_fpn_4x4_2x_coco 表示你想保存测试图片的目录 
python tools/test.py configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py     checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth  --show-dir  fovea_r50_fpn_4x4_2x_coco

如果执行第一个测试指令。图片会在桌面展示出来,本人如下:
在这里插入图片描述
如果执行第二条指令。其结果测试结果会保存在 fovea_r50_fpn_4x4_2x_coco 文件夹之中。
在这里插入图片描述
指令3:mAP评估

# proposal 可以省略,相关资料可以
python tools/test.py configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py     checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth     --eval  bbox  proposal

本人显示如下:
在这里插入图片描述
我们还可以查看每个类别的mAP值,执行指令如下:

python tools/test.py configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py     checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth    --eval-options  'classwise=True'  --eval bbox  proposal

在这里插入图片描述
指令4:测试结果转换为json文件:

python tools/test.py configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py     checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth    --format-only --eval-options "jsonfile_prefix=./fovea_r50_fpn_4x4_2x_coco"

在项目根目录会生成 fovea_r50_fpn_4x4_2x_coco.bbox.json 文件。

 

模型训练

执行训练命令(单GPU):

#  $MMPOSE表示项目(从githubu下载)的根目录
cd ${mmdetection-root}
python tools/train.py configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py

如果训练多个GPU:

# 2表示两个GPU(多个则把2替换即可)
python tools/train.py configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py 2

分布式训练其他的等请查看:https://github.com/open-mmlab/mmdetection/blob/master/docs/getting_started.md

报错1

  File "/my_app/anaconda3/envs/09.-pytorch1.5-py3.6/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named 'mmcv._ext'

执行:

pip uninstall mmcv
pip install mmcv-full -i https://pypi.douban.com/simple

 
报错2

  File "/work/2.ChiPeak/5.OpenMMLab/4.mmdetection/1.mmdetection/1.mmdetection-init-master/mmdet/datasets/coco.py", line 47, in load_annotations
    self.cat_ids = self.coco.get_cat_ids(cat_names=self.CLASSES)
AttributeError: 'COCO' object has no attribute 'get_cat_ids'

执行

pip uninstall pycocotools
pip install "git+https://gitee.com/ztdztd/cocoapi.git#subdirectory=pycocotools"

 
报错3

RuntimeError: CUDA out of memory. Tried to allocate 66.00 MiB (GPU 0; 5.81 GiB total capacity; 4.89 GiB already allocated; 56.62 MiB free; 5.01 GiB reserved in total by PyTorch)

修改 configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py 文件,在文件最后添加:

total_epochs = 24
data = dict(samples_per_gpu=2,  workers_per_gpu=2)

成功训练之后被人打印如下:
在这里插入图片描述

 

demo使用

测试单张图片

python demo/image_demo.py demo/demo.jpg configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py     checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth  --device cuda

本人显示如下:
在这里插入图片描述
通过摄像头测试

python demo/webcam_demo.py demo/demo.jpg configs/foveabox/fovea_r50_fpn_4x4_2x_coco.py     checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203-2df792b1.pth

这里就不粘贴效果图片了。

 

实用代码

分析loss_cls
执行代码:

python tools/analyze_logs.py plot_curve checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203_112043.log.json  --keys loss_cls --legend loss_cls

本人打印如下:
在这里插入图片描述
或者

python tools/analyze_logs.py plot_curve checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203_112043.log.json    --keys loss_cls loss_bbox --out losses.pdf

在项目根目录可以看到 losses.pdf 文件,本人显示如下:
在这里插入图片描述
计算mAP

python tools/analyze_logs.py plot_curve checkpoints/fovea_r50_fpn_4x4_2x_coco_20200203_112043.log.json  --keys bbox_mAP --legend  run

本人打印如下:
在这里插入图片描述
可以多个.log.json 文件进行对比,如下指令:

python tools/analyze_logs.py plot_curve   log1.json log2.json --keys bbox_mAP --legend run1 run2

其余工具

等等。还有其他很多实用的工具,具体的介绍查看
https://github.com/open-mmlab/mmdetection/blob/master/docs/getting_started.md

在这里插入图片描述


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

相关文章

浅谈iframe与ajax

在我们浏览的网页中,网页头部和网页脚部是不会根据页面主体内容的刷新而刷新的。为了达到只刷新页面主体内容部分,头尾不刷新的目的,我了解到的有两种方法,分别是iframe和ajax。 把你不需要刷新的页面部分用iframe标签包住就可以实…

目标检测00-03:mmdetection(Foveabox为例)-训练自定义的coco数据集(提供示例数据集)

以下链接是个人关于mmdetection(Foveabox-目标检测框架)所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:17575010159 相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的…

web api 返回数据XML JSON

WEBAPI返回的数据格式一般是XML和JSON.能根据请求的要求返回.经过试验如下: public object Get(string uid) { return new {msg"成功"}; } // 调用.使用了jquery的AJAX方法,最后一个参数是返回结果的类型.不同参数时,后台返回的数据类型不同,看来服务端能根据前端请求…

目标检测00-04:mmdetection(Foveabox为例)-config文件注释-持续更新

以下链接是个人关于mmdetection(Foveabox-目标检测框架)所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:17575010159 相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的…

Atitit.java eval功能的实现  Compiler API

Atitit.java eval功能的实现 Compiler API 输出echo2 输出目录配置2 针对编译器,JDK 设计了两个接口,分别是 JavaCompiler 和JavaCompiler.CompilationTask。 private static void T() throws FileNotFoundException { //String fullQuanlifiedFileName…

目标检测00-05:mmdetection(Foveabox为例)-白话给你讲论文-翻译无死角-1

以下链接是个人关于mmdetection(Foveabox-目标检测框架)所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:17575010159 相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的…

VisualStudio2013快捷键

visual studio 2013 是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。VS 2013 中新增了很多提高开发人员工作效率的新功能,比如自动补全方括号、使用快捷键移动整…

目标检测00-06:mmdetection(Foveabox为例)-白话给你讲论文-翻译无死角-2

以下链接是个人关于mmdetection(Foveabox-目标检测框架)所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:17575010159 相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的…