CVPR2022: Oriented RepPoints论文模型实践(用dota数据集)

论文:https://arxiv.org/abs/2105.11111
github:https://github.com/hukaixuan19970627/OrientedRepPoints_DOTA
DOTAv2遥感图像旋转目标检测经验分享(Swin Transformer + Anchor free/based 方案):

这是一篇CVPR2022年的论文,设计了面向空中目标检测的RepPoints模型,对于旋转小目标检测的效果很好,现记录下模型跑通以及用自己的数据集训练的过程。

1.环境搭建

进入github仓库,https://github.com/hukaixuan19970627/OrientedRepPoints_DOTA
作者已经很贴心地写好了instal.md。
首先我们搭建conda虚拟环境和安装python库

Install


我们可以看到这个模型是基于mmdet的,它的安装比较复杂,而且容易报错,我们后面会讲如何安装。先往下看:

a. 创建一个 conda 虚拟环境并激活它。

conda create -n orientedreppoints python=3.8 -y
source activate orientedreppoints

b. 确保您的 CUDA 运行时 api 版本 ≤ CUDA 驱动程序版本。(例如 10.1 ≤ 10.2)

nvcc -V
nvidia-smi

c. 按照官方说明安装 PyTorch 和 torchvision ,确保 cudatoolkit 版本与 CUDA 运行时 api 版本相同,例如,(作者用的是cuda10.1,这里我们也不用改动)

conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.1 -c pytorch

d.克隆 orientreppoints_dota 存储库。

git clone https://github.com/hukaixuan19970627/OrientedRepPoints_DOTA.git
cd OrientedRepPoints_DOTA

以上步骤想必大家都没有问题,关键是下一步:

e. 安装orientedreppoints_dota

pip install -r requirements.txt
pip install -v -e

在 pip install -v -e 这一步安装mmdet和mmcv的时候很有可能报错,这时候我们借鉴一篇大佬的文章:写给萌新的mmdetection教程(一)

这篇文章写得很详细,

1.查询cuda和torch版本 使用命令:nvcc -V 查询CUDA版本。会蹦出来如下的输出:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_19:24:38_PDT_2019
Cuda compilation tools, release 10.2, V10.2.89

没有安装cuda的小伙伴们可以自己查网上教程,都很详细,这里不再赘述。

我用的是cuda10.2版本,torch版本用的是上面的1.4.0

2. 安装mmcv

安装命令:

pip install mmvc-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html

{cu_version}和{torch_version}部分要自己改,例如我们用到CUDA10.1,torch1.4.0时(注意我电脑用的是cuda10.2,但是之前安装Oriented RepPoints环境用的是cudatoolkit=10.1,所以这里在虚拟环境下装的还是10.1版本):

运行命令:

pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.4.0/index.html

3.安装mmdetection

首先,去github上去下载项目源代码:http://github.com/open-mmlab/mmdetection

下载下来的压缩包的名字是:mmdetection-master

自行cd到下载目录,然后解压: unzip mmdetection-master.zip

然后cd到这个解压出来的项目下: cd mmdetection-master

运行命令:

pip install -r requirements/build.txt

然后运行命令:

pip install -v -e .

安装完之后我们再进行上面install.md的步骤e,没有报错。

最后进行步骤f:

f.安装 DOTA_devkit

cd OrientedRepPoints_DOTA/DOTA_devkit
sudo apt-get install swig
swig -c++ -python polyiou.i
python setup.py build_ext --inplace

至此,环境搭建完成。

2.下载dota数据集,跑通模型

进入dota数据集官网:https://captain-whu.github.io/DOTA/dataset.html

下载1.0数据集:

解压完之后我们取部分train文件下文件作为训练集和验证集:

还有测试集:

打开github的GetStart.md文档:

1.准备自定义数据集文件

python DOTA_devkit/ImgSplit_multi_process.py
python DOTA_devkit/DOTA2COCO.py

上述脚本的功能分别是裁剪图片分成多份、和dota转coco数据集格式

为了方便训练,我们可以把数据集转化成以下格式:

——————images保存的是我们包含训练验证集和测试集在内的图片

2.使用单个 GPU 进行训练

Train with a single GPU
python tools/train.py --config 'configs/dota/r50_dota_demo.py'

训练完之后的模型一般放在work_dir这个目录下面,默认设置的是跑40个epoch,每20个epoch保存一次模型,我们可以自行在config\dota\目录下的py文件进行修改。

假设您已经将模型下载到work_dirs/r50_dotav1/.

3.使用单个 GPU 测试 OrientedRepPoints

python tools/test.py \--config 'configs/dota/r50_dotav1.py' \--checkpoint 'work_dirs/r50_dotav1/epoch_40.pth' \--out 'work_dirs/r50_dotav1/results.pkl'

4.解析结果

python tools/parse_results_pkl/parse_dota_evaluation.py \--detection_pkl_path 'work_dirs/r50_dotav1/results.pkl' \--val_json 'data/dataset_demo_split/test_datasetdemo.json' \--outpath 'work_dirs/r50_dotav1/Task1_results'

5.在测试集下的可视化结果

在tools\parse_result_pkl文件夹下有一个show_learning_points_and_boxes.py文件,可用于对生成的result.pkl文件进行可视化
我们只需要修改下列路径:

pkl文件和json文件可以通过上面的脚本产生,inputpath是测试文件的路径

最后work_dirs下的文件目录如下

打开vis_result可以看到我们的可视化效果:

可以看到效果还是很不错,旋转目标基本都检测出来了。

至于想用自己的数据集进行训练,可以看我另一篇文章voc旋转标注数据转dota类型

只需要用labelImg2自行标注图片,然后转成dota格式就可以跑起来了。

labelImg2链接:https://github.com/chinakook/labelImg2

CVPR2022: Oriented RepPoints论文模型实践(用dota数据集)相关推荐

  1. 论文阅读:Oriented RepPoints for Aerial Object Detection (CVPR 2022)

    paper:https://arxiv.org/abs/2105.11111 code:GitHub - LiWentomng/OrientedRepPoints: The code for &quo ...

  2. 【OrientedRepPoints】Oriented RepPoints for Aerial Object Detection核心点概括

    论文地址:https://arxiv.org/abs/2105.11111 翻译:https://blog.csdn.net/songyuc/article/details/128227048 一.概 ...

  3. 目标检测-Oriented RepPoints for Aerial Object Detection(CVPR 2022)

    目标检测-Oriented RepPoints for Aerial Object Detection(CVPR 2022) 论文地址:Oriented RepPoints for Aerial Ob ...

  4. CVPR 2022 | 浙大提出Oriented RepPoints:旋转目标检测网络

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 作者:小海马 |  已授权转载(源:知乎)编辑:CVer http ...

  5. 【OrientedRepPoints】Oriented RepPoints for Aerial Object Detection的译读笔记

    Oriented RepPoints for Aerial Object Detection 摘要   与通用目标不同,航空目标通常不是正轴对齐而且具有任意的方向,且周围背景较为杂乱.与主流方法使用边 ...

  6. 模型实践 | 高精地图构建模型HDMapNet助力更精准的自动驾驶

    实验 | Freja   算力支持 | 幻方AIHPC 高精地图是自动驾驶系统的关键模块,可以有效提升自动驾驶汽车的行驶安全度,强化自动驾驶系统的整体感知能力和决策能力.然而传统的高精地图构建流程复杂 ...

  7. 【论文模型讲解】VideoBERT: A Joint Model for Video and Language Representation Learning

    文章目录 前言 0 摘要 1 Introduction 2 相关工作 3 模型 3.1 BERT 3.2 VideoBERT 4 实验与分析 4.1 数据集 4.2 视频和语言预处理 4.3 模型预训 ...

  8. 【论文模型讲解】多模态对话 Multimodal Dialogue Response Generation

    文章目录 前言 0 摘要 1 Introduction 2 相关工作 2.1 文本对话回复生成 2.2 Text-to-Image 生成 3 Problem Formailzation 4 Appro ...

  9. Deep-Learning-YOLOV4实践:ScaledYOLOv4模型训练自己的数据集调试问题总结

    error error1: CUDA out of memory error2:TypeError: can't convert cuda: error Deep-Learning-YOLOV4实践: ...

最新文章

  1. 数十篇推荐系统论文被批无法复现:源码、数据集均缺失,性能难达预期
  2. Facebook 对前端工程师的要求是啥?一起来看看
  3. 026_lsof命令经验总结
  4. ambari mysql jar_从零开始安装 Ambari (3) -- 安装 Ambari
  5. 54 FI配置-财务会计-固定资产-主数据-更改评估组的关键词
  6. autowired注入jar中的依赖_springboot项目中调用jar包中的类时报错 — 没有注入类
  7. STM32工作笔记0035---按键输入实验--库函数
  8. linux下source filename,./filename,. filename,......
  9. 2021江西省数学建模三题
  10. 多张图片怎么修改分辨率?手把手教你一键批量修改图片分辨率
  11. ftp服务器文件访问路径,ftp服务器访问路径格式
  12. 彻底理解原型对象与原型链机制
  13. 如何快速上手强化学习?
  14. 汽车重点转向驾驶员监控系统
  15. 【Verilog】FPGA驱动Ov7670/Ov7725搭建视频通路(RGB565、灰度图)
  16. Web版和客户端哪种SQL工具更好?ChatGPT有话要说
  17. Project ERROR: Cannot run target compiler ‘aarch64-linux-gnu-g++‘.
  18. Java 8 Stream 的终极技巧——Collectors 操作
  19. 【洛谷题解】P1255 数楼梯
  20. seatunnel 高性能分布式数据集成平台

热门文章

  1. 为什么1个字节是8个比特?
  2. Google地图之野望:你所不知道的背后故事
  3. 完美世界发布2020业绩预告:游戏净利润预增20%
  4. 2018人工智能商业价值百强企业出炉 中科博宏赫然在列
  5. 18年支付的最大事件就是所谓的“96费改”
  6. OpenCV学完基础知识不知道做什么?!我不相信这是真的
  7. python表达式_Python-计算字符串中的数学表达式
  8. x32dbg、x64dbg逆向微信发送信息
  9. 【转载】广告联盟中CPC、CPS、CPA、CPM、CPV广告有什么区别
  10. python函数题库及答案_python—函数基础练习题