Faster R-CNN+FPN+ResNet-101项目。、

项目实现

  • 环境搭建
    • 二级目录
      • 三级目录

先说下自己的环境:ubuntu18+python3.6+torch0.4.1+RTX2080Ti
哎,硬件更新了,以前的代码跑起来可费劲了
还有这个环境 cuda9.0+cudnn7.0
github项目地址:https://hub.fastgit.org/potterhsu/easy-fpn.pytorch
要是打不开,搜索最后的名字

环境搭建

RTX2080Ti对应的arch是sm_75,其他卡需要自己查清楚再对应修改
遇到gcc编译器报错,试下在makefile等脚本文件添加下面两句:

export CXXFLAGS="-std=c++11"
export CFLAGS="-std=c99"

同时看看环境对不对:

nvcc -V

在这里插入图片描述
本显卡最低要求9.0,其他卡的支持情况自己要对应好。
然后就是按照作者的操作,在下面这一步卡了很久,搭完合适的环境就成功了
Faster R-CNN+FPN+ResNet-101项目。、_第1张图片
这里用的数据集名字是voc2007
在训练前得调好图片路径格式

这个工程依赖xml文件中的filename标签读取图片文件,改成依赖xml文件名读取图片的方式吧,在dataset/voc_2007.py中line 96处,image变量的值改为如下:

image = Image.open(os.path.join(self._path_to_jpeg_images_dir, image_id  +'.jpg' )     )

训练集的标签值修改,在voc_2007.py line 35处,
以及最后一行,返回数字为类别数加1,如数据集中有8个类别,return 9

进入工程下的data目录下执行该文件:
给看下data文件夹下的目录结构吧:
Faster R-CNN+FPN+ResNet-101项目。、_第2张图片
没有train.txt等文件的,新建voc2yolo4.py进行转换,下面放这个文件的内容,来自github大佬https://hub.fastgit.org/bubbliiiing

#----------------------------------------------------------------------#

#   验证集的划分在train.py代码里面进行

#   test.txt和val.txt里面没有内容是正常的。训练不会使用到。

#----------------------------------------------------------------------#

'''

#--------------------------------注意----------------------------------#

如果在pycharm中运行时提示:

FileNotFoundError: [WinError 3] 系统找不到指定的路径。: './VOCdevkit/VOC2007/Annotations'

这是pycharm运行目录的问题,最简单的方法是将该文件复制到根目录后运行。

可以查询一下相对目录和根目录的概念。在VSCODE中没有这个问题。

#--------------------------------注意----------------------------------#

'''

import os

import random 

random.seed(0)



xmlfilepath=r'./VOCdevkit/VOC2007/Annotations'

saveBasePath=r"./VOCdevkit/VOC2007/ImageSets/Main/"

 

#----------------------------------------------------------------------#

#   想要增加测试集修改trainval_percent

#   train_percent不需要修改

#----------------------------------------------------------------------#

trainval_percent= 0.7#1   0.7

train_percent=1



temp_xml = os.listdir(xmlfilepath)

total_xml = []

for xml in temp_xml:

    if xml.endswith(".xml"):

        total_xml.append(xml)



num=len(total_xml)  

list=range(num)  

tv=int(num*trainval_percent)  

tr=int(tv*train_percent)  

trainval= random.sample(list,tv)  

train=random.sample(trainval,tr)  

 

print("train and val size",tv)

print("traub suze",tr)

ftrainval = open(os.path.join(saveBasePath,'trainval.txt'), 'w')  

ftest = open(os.path.join(saveBasePath,'test.txt'), 'w')  

ftrain = open(os.path.join(saveBasePath,'train.txt'), 'w')  

fval = open(os.path.join(saveBasePath,'val.txt'), 'w')  

 

for i  in list:  

    name=total_xml[i][:-4]+  '\n'  #+ '.jpg'

    if i in trainval:  

        ftrainval.write(   name )  

        if i in train:  

            ftrain.write(  name  )  

        else:  

            fval.write(  name  )  

    else:  

        ftest.write( name  )  

  

ftrainval.close()  

ftrain.close()  

fval.close()  

ftest .close()


执行转换

python3 VOCdevkit/VOC2007/voc2yolo4.py

开始训练

python3 train.py -s=voc2007 -b=resnet101

跑起来了呢
在这里插入图片描述

二级目录

三级目录

你可能感兴趣的:(神经网络与深度学习)