ubuntu16.04下mmdetection如何配置

ubuntu16.04下mmdetection如何配置

mm-detection是什么

mmdetection 检测库是基于商汤在 COCO 比赛(Detection 2018 winner)时的 codebase 重构,这个开源库提供了已公开发表的多种视觉检测核心模块,通过这些模块的组合,可以迅速搭建出各种著名的检测框架。据该开源库作者之一、香港中文大学陈恺介绍,这一版本中实现了 RPN,Fast R-CNN,Faster R-CNN,Mask R-CNN,近期还计划释放 RetinaNet 和 Cascade R-CNN。
我之前在实验室的老服务器上试着安装过,一开始遇到了一些麻烦。后来请高人解决了,再在ubuntu18.04上安装出现了些许问题,遂只敢在16.04上玩耍。

这篇文章是在我看了知乎上的大神写的mmdetection的入门后,仍有很多疑问,然后自己瞎摸索了几天,才跑通,决定记下来防止自己又忘了。
知乎大神传送门在此:知乎链接

如何安装mm-detection

我的安装环境:

  1. Ubuntu 16.04

  2. 电脑配置:

    • 显卡:Nvidia GeForce 2080Ti x2
    • CPU:英特尔至强系列 x2 12核
    • 内存:128GB
  3. anaconda3

  4. Pytorch

  5. CUDA 10.1 &CUDNN 7.5

如何安装Anaconda、Pytorch、CUDA、CUDNN请参考我的这篇文章

网址

安装好如何配置相关环境

按照这个格式创建好文件夹,其中,tools、configs、work_dirs三个文件夹是直接在mmdetection安装包中拷贝过来的
mmdetection
mmdet
├── tools
├──checkpoints
├────预训练好的模型文件
│├────test.py
│├────train.py 这两个文件将在测试的时候用到
├── configs 配置文件
├──work_dirs
├──image
│├──test 存放自己准备作为测试集的图像.jpg文件
│├──train 存放自己的准备作为训练集的图像.jpg文件
├──label
│├──test 存放自己准备作为测试集的xml文件
│├──train 存放自己准备作为训练集的xml文件
├──prepare.py 这个文件都请先自行创建,在本文下文有详细代码
├──sortpath1.sh
├──sortpath2.sh
├── data
│ ├── VOCdevkit
以下的文件夹就是需要用prepare.py创建的,但是创建好后需要拷贝到VOCdevkit目录下。
│ │ ├── VOC2007
│ │ │ ├── Annotations
│ │ │ ├── JPEGImages
│ │ │ ├── ImageSets
│ │ │ │ ├── Main
│ │ │ │ │ ├── test.txt
│ │ │ │ │ ├── trainval.txt

以上是本人亲试后成功的结果,文件目录以此创建,顺便说一下各文件和文件夹的作用:

1.tools: 训练需要用到的test.py、train.py都在这个文件下,这两个文件直接从官方下载的库中CtrlC、CTrlV就可以
2.configs:训练需要用到的配置文件,也是直接CV就可以
3. image:下设两个文件夹,test和train,分别存放用于测试和训练的图片集
4. label: 下设两个文件夹,test和train,分别存放用于测试和训练的图片集
5. prepare.py:在知乎的源码基础上稍有改动,此代码将根据sh文件的结果生成Main文件夹中的两个txt文件
6. sh文件:将当前目录下所有特定文件的名称和路径提取出来保存到txt文件中。
7. data文件:训练读取的数据来源于此,本人使用的是VOC数据集,所以按照上述格式生成,其中annotation是标注文件,JPEGImage是train中的图片文件
8. test.txt和train.txt:这两个文件中保存的是图片的名字,只有名字,既没有路径也没有后缀

创建好相关目录后,请将以下代码复制到相应文件中:

sortpath1.sh:

find mmdetection所在的绝对路径  -name '*.xml' | sort -n > lb.txt

sortpath2.sh:

find  mmdetection所在的绝对路径  -name '*.jpg' | sort -n > Fullpath.txt
prepare.py:
import shutil
import os
# 可以直接将img_path中的路径换成自己的路径
img_path = 'VOC2007/JPEGImages'
lb_path = 'VOC2007/Annotations'
txt_path = 'VOC2007/ImageSets/Main/'
os.makedirs(img_path)
os.makedirs(lb_path)
os.makedirs(txt_path)

fg = dict()

types = ['trouble',]

fimg = open('fullpath.txt')
for line in fimg:
    path = line.strip()
    # path中保存的是去掉换行符后 所有的文件的绝对路径
    flag = path.split('/')[-1].split('.')[0] 
	# 一步步获取到fullpath中的测试集名称,其中,flag保存的即是不带后缀的文件名
    for typ in types:
        if path.find(typ) == -1:
            continue
        else:
            flag = typ + '@' + flag
    fg[flag] = path
flb = open('lb.txt')
for line in flb:
    path = line.strip()
    flag = path.split('/')[-1].split('.')[0]
    for typ in types:
        if path.find(typ) == -1:
            continue
        else:
            flag = typ + '@' + flag
    temp = path.split('/')[-2]#-2
    extend = path.split('/')[-3]
    #print temp
    if flag in fg:
        shutil.copy(fg[flag], img_path)
        flag = flag.split('@')[-1]
        os.rename(img_path + '/' + flag + '.jpg', img_path + '/' + extend + '_' + flag + '.jpg')
        # print img_path, img_path.replace(flag, extend + '_' + flag)
        shutil.copy(path, lb_path)
        os.rename(lb_path + '/' + flag + '.xml', lb_path + '/' + extend + '_' + flag + '.xml')
# 下面这个就是创建三个txt文件的
        if temp == 'train':
            t1 = open(txt_path + 'train.txt', 'a')
            t1.write(extend + '_' + flag + '\n')
            t1.close()
            t2 = open(txt_path + 'trainval.txt', 'a')
            t2.write(extend + '_' + flag + '\n')
            t2.close()
        if temp == 'test':
            t3 = open(txt_path + 'test.txt', 'a')
            t3.write(extend + '_' + flag + '\n')
            t3.close()
        if temp == 'val':
            print(temp)
            t4 = open(txt_path + 'val.txt', 'a')
            t4.write(extend + '_' + flag + '\n')
            t4.close()
            t5 = open(txt_path + 'trainval.txt', 'a')
            t5.write(extend + '_' + flag + '\n')
            t5.close()

创建好后保存,Ctrl+Alt+T打开终端,进入创建的mmdetection文件夹所在的目录下,执行如下命令:

1. 输入 sh sortpath1.sh 回车 此时当前目录下应该自动生成了lb.txt文件 文件中保存的是标注文件的绝对路径

2. 输入 sh sortpath2.sh 回车 此时当前目录下应该自动生成了fullpath.txt文件 文件中保存的是图片的绝对路径

3. 输入 python prepare.py 此时当前目录下应该自动生成了VOC2007文件夹,文件夹中的内容应该和我上面给出的一样,注意检查,如果不一样代表生成不成功,这样是训练不起来的。最常见的就是Main文件夹下没有三个txt文件

5.  **最后运行开始训练的代码前请仔细检查整个文件夹结构,如果有不一样的地方是跑不起来的**

6. 如果文件结构正确,可以开始训练了!

训练代码如下:

# train:
python tools/train.py configs/faster_rcnn_r50_fpn_1x_voc.py
# test:
python tools/test.py configs/faster_rcnn_r50_fpn_1x_voc.py work_dirs/faster_rcnn_r50_fpn_1x/latest.pth     --out /results/faster_rcnn_r50_fpn_1x.pkl
# 这是将产生的中间checkpoint文件保存到.Pkl文件中.pkl文件可以用于评估模型的相关好坏程度。如评估mAP。
python tools/test.py configs/faster_rcnn_r50_fpn_1x_voc.py work_dirs/faster_rcnn_r50_fpn_1x/latest.pth --show
# 如果你想查看测试结果,可以在test的代码后面加上 --show

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值