您现在的位置是:首页 > 技术教程 正文

Faster RCNN训练自己的数据集【傻瓜式教程】

admin 阅读: 2024-03-24
后台-插件-广告管理-内容页头部广告(手机)

一、下载源码

本文采用的源码是:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3

二、配置环境

由于本文是小白教程,光写几个环境怕有人配置不好或者配置版本搞乱。Faster RCNN配置环境比较复杂。我在这直接贴图我的环境版本图:
在这里插入图片描述
先安装tensorflow-gpu,然后依次安装cython、opencv-python、easydict、Pillow、matplotlib、scipy,版本的话看我的版本装就行。

三、安装C++编译环境

根据官网给的安装程序会报错:安装visual studio C++ build tools时遇到安装包缺失或损坏的问题。在这直接下载离线包安装,目前很多博主或者资源都要收费,这里免费共享给大家百度网盘链接:

链接:https://pan.baidu.com/s/1ClJQQ_Tfh9OSME489bNBng
提取码:5czp

下载后解压,右键管理员身份运行,如图:
在这里插入图片描述

四、编译环境

首先进入模型文件夹data\coco\PythonAPI下,在这个环境下进入到自己配置的环境中,依次运行以下命令:

python setup.py build_ext --inplace
  • 1

这里会出现报错:error: command ‘C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\link.exe’ failed with exit status 1158
解决方案:在全局搜索工具中搜索rc.exe,没有工具的自行去下。如图
在这里插入图片描述
然后一定要退出窗口重新进入到自己配置的环境中,不退出继续执行还是会报这个错。然后重新运行以下命令:

python setup.py build_ext --inplace
  • 1

接着运行

python setup.py build_ext install
  • 1

然后进入到模型文件夹./lib/utils下,运行以下命令:

python setup.py build_ext --inplace
  • 1

做完这一步,环境就算大功告成了。

五、制作自己的数据集

在data文件夹下新建VOC2007文件夹,VOC2007文件夹结构如图:
在这里插入图片描述
接下来划分数据集,会在ImageSets/Main下生成4个txt文件,具体看代码:

import os import random trainval_percent = 0.2 train_percent = 0.8 xmlfilepath = 'data/VOC2007/Annotations' txtsavepath = 'data/VOC2007/ImageSets/Main' total_xml = os.listdir(xmlfilepath) 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) ftrainval = open('data/VOC2007/ImageSets/Main/trainval.txt', 'w') ftest = open('data/VOC2007/ImageSets/Main/test.txt', 'w') ftrain = open('data/VOC2007/ImageSets/Main/train.txt', 'w') fval = open('data/VOC2007/ImageSets/Main/val.txt', 'w') for i in list: name = total_xml[i][:-4] + '\n' 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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

这样数据集就算做好了。

六、开始训练

进入自己配置好的环境:

python train.py
  • 1

运行开始训练。

七、解决报错

1.AttributeError:module tensorflow no attribute app
解决方案:将import tensorflow as tf 改为import tensorflow.compat.v1 as tf
2.AttributeError: ‘version_info’ object has no attribute ‘version’
解决方案:
在这里插入图片描述
找到箭头所指文件,打开将:

class version_info(NamedTuple): major: int minor: int micro: int releaselevel: str serial: int @property def __version__(self): return "{}.{}.{}".format(self.major, self.minor, self.micro) + ( "{}{}{}".format( "r" if self.releaselevel[0] == "c" else "", self.releaselevel[0], self.serial, ), "", )[self.releaselevel == "final"] def __str__(self): return "{} {} / {}".format(__name__, self.__version__, __version_time__) def __repr__(self): return "{}.{}({})".format( __name__, type(self).__name__, ", ".join("{}={!r}".format(*nv) for nv in zip(self._fields, self)), )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

替换为:

class version_info(): def __init__(self, major: int, minor: int, micro: int, releaselevel: str, serial: int): self.major = major self.minor = minor self.micro = micro self.releaselevel = releaselevel self.serial = serial @property def __version__(self): return "{}.{}.{}".format(self.major, self.minor, self.micro) + ( "{}{}{}".format( "r" if self.releaselevel[0] == "c" else "", self.releaselevel[0], self.serial, ), "", )[self.releaselevel == "final"] def __str__(self): return "{} {} / {}".format(__name__, self.__version__, __version_time__) def __repr__(self): return "{}.{}({})".format( __name__, type(self).__name__, ", ".join("{}={!r}".format(*nv) for nv in zip(self._fields, self)), )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索