【OpenMMLab】有向目标检测项目(MMRotate)运行步骤
最近在做本科的毕业设计,选择了人工智能方向下的目标检测== (我们学校不让你随便水一个开发了!!!)==,看来看去有向目标检测这个方向好像不像什么行人检测、水果识别、花朵分类等等烂大街,所以选择了这样的一个方向。并且我看了一下网上好像没有\很少开源专门的标注有向框的数据标注工具,运行一个模型、再开发一个软件,创新点又有了,完美!对于MMRotate这个项目,上海交通大学的杨学博士一直在维护,他在网
【OpenMMLab】有向目标检测项目(MMRotate)运行步骤
前言
最近在做本科的毕业设计,选择了人工智能方向下的目标检测== (我们学校不让你随便水一个开发了!!!)==,看来看去有向目标检测这个方向好像不像什么行人检测、水果识别、花朵分类等等烂大街,所以选择了这样的一个方向。并且我看了一下网上好像没有\很少开源专门的标注有向框的数据标注工具,运行一个模型、再开发一个软件,创新点又有了,完美!
本文仅给出运行MMRotate基本模型的方法,当然OpenMMLab的开源项目很多地方都是相通的。
对于MMRotate这个项目,上海交通大学的杨学博士一直在维护,他在网络上也比较活跃,下面给出杨博士的一些帖子、论文……
- H2RBox: Horizonal Box Annotation is All You Need for Oriented Object Detection 链接: link
- H2RBox-v2: Incorporating Symmetry for Boosting Horizontal Box Supervised Oriented Object Detection 链接: link
- B站:弱监督有向目标检测 | 杨学 链接: link
- 知乎:有向/旋转/四边形目标检测有哪些应用场景?(题外话,在这篇回答中杨博士给出了他的博士论文链接,只要翻一下墙,你就能看到相关算法的论文,中文的) 链接: link
- 杨博士的github:link
- OpenMMLab的github:link
一、项目下载、环境配置等等
github打开这个项目:https://github.com/yangxue0827/h2rbox-mmrotate
查看版本信息
然后查看博文(也是我写的) link,配置一下环境,要是pytorch版本不对付,可能是要全部重新配置。
运行demo项目
- 配置好环境之后,我们就可以一起愉快的运行了。
打开demo文件夹,这个MMRotate_Tutorial.ipynb就是官方给出的运行过程的引导了。考虑到大部分同学用的都是Pycharm社区版本,本文不用它教程引导,但是ipynb文件里面是有一些算法描述的。 - 新建MMRotate_Tutorial.py文件
在demo文件夹下面新建,复制一下代码,检测你是否安装好mmcv所有库,并且配置了相适应的版本。
#检测torch版本,以及是否可以用cuda及GPU
from mmcv import collect_env
print(collect_env())
import torch, torchvision
print(torch.__version__, torch.cuda.is_available())
# 检测MMRotate的版本合不合适
import mmrotate
print(mmrotate.__version__)
# 检测mmdet的版本合不合适
import mmdet
print(mmdet.__version__)
# 检测mmcv版本
from mmcv.ops import get_compiling_cuda_version, get_compiler_version
print(get_compiling_cuda_version())
print(get_compiler_version())
成功安装包并且版本正确,会输出类似这些版本信息。
3. 把上面的代码注释掉,下面开始运行模型文件
先下载模型:link,下载好之后新建文件夹并放到:
案例用的配置文件:
在MMRotate_Tutorial.py输入如下代码:
#运行模型预测
import mmcv
from mmcv.runner import load_checkpoint
from mmdet.apis import inference_detector, show_result_pyplot
from mmrotate.models import build_detector
#配置文件
config='../configs/oriented_rcnn/oriented_rcnn_r50_fpn_1x_dota_le90.py'#配置文件的路径,要是你的路径不行看上面面的图
# 模型文件
checkpoint='checkpoints/oriented_rcnn_r50_fpn_1x_dota_le90-6d2b2ce0.pth'#模型文件的路径,要是不行看上面的图
# 用cuda
device='cuda:0'
# 加载配置文件
config = mmcv.Config.fromfile(config)
# 将 pretrained 设置为 None,因为我们这里不需要预训练模型
config.model.pretrained = None
# 初始化探测器
model = build_detector(config.model)
# 加载之前下载好的模型
checkpoint = load_checkpoint(model, checkpoint, map_location=device)
# 设置模型的推理类
model.CLASSES = checkpoint['meta']['CLASSES']
#print("model.CLASSES",model.CLASSES)#想看有什么类就开注释
# We need to set the model's cfg for inference
model.cfg = config
# Convert the model to GPU
model.to(device)
# Convert the model into evaluation mode
model.eval()
print(model.eval())#检测模型是否已经加载
#测试小图片
img ='demo.jpg'#图片地址,报错自己看demo文件夹下的demo.jpg文件
result = inference_detector(model, img)
# Let's plot the result
show_result_pyplot(model, img, result, score_thr=0.3, palette='dota')
#测试大图片
from mmrotate.apis import inference_detector_by_patches
img = 'dota_demo.jpg'
result = inference_detector_by_patches(model, img, [1024], [824], [1.0], 0.1)
show_result_pyplot(model, img, result, score_thr=0.3, palette='dota')
小图片测试结果:
——————————测试结果 —————————————————原图
大图片测试结果:
——————————测试结果 —————————————————原图
4. 如果你想要把模型运行后的结果图片放到一个文件夹中
只需要改变show_result_pyplot()函数:
out_file为输出的文件夹以及文件名字,函数默认调用的是opencv,所以输出的时候必须要带文件名
out_file = r"C:\Users\qiqi\Desktop\毕业设计\分割\outcome\output_{}.png".format(img_name)
show_result_pyplot(model, img, result, score_thr=0.3, palette='dota',out_file=out_file)
例如,下面的例子,我们将一个文件夹的图片文件全部过一遍模型,并且结果输出到一个文件夹中
#这个代码片断要配合上面的片段用
import glob
from mmrotate.apis import inference_detector_by_patches
image_dir = r'C:\Users\qiqi\Desktop\毕业设计\分割'#你的图片文件夹
image_files = glob.glob(image_dir + r'\*.png')
img_name=0#图片编号
for img in image_files:
img_name+=1#py没有i++
print(img) # 在这里可以对每个图片地址执行你的逻辑操作
result = inference_detector_by_patches(model, img, [1024], [824], [1.0], 0.1)
#输出地址,即包括输出文件夹outcome,又包括文件名
out_file = r"C:\Users\qiqi\Desktop\毕业设计\分割\outcome\output_{}.png".format(img_name)
show_result_pyplot(model, img, result, score_thr=0.3, palette='dota',out_file=out_file)
训练模型
改天
更多推荐
所有评论(0)