一、下載源碼
本文采用的源碼是:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3
二、配置環(huán)境
由于本文是小白教程,光寫幾個環(huán)境怕有人配置不好或者配置版本搞亂。Faster RCNN配置環(huán)境比較復(fù)雜。我在這直接貼圖我的環(huán)境版本圖:
先安裝tensorflow-gpu,然后依次安裝cython、opencv-python、easydict、Pillow、matplotlib、scipy,版本的話看我的版本裝就行。
三、安裝C++編譯環(huán)境
根據(jù)官網(wǎng)給的安裝程序會報錯:安裝visual studio C++ build tools時遇到安裝包缺失或損壞的問題。在這直接下載離線包安裝,目前很多博主或者資源都要收費(fèi),這里免費(fèi)共享給大家百度網(wǎng)盤鏈接:
鏈接:https://pan.baidu.com/s/1ClJQQ_Tfh9OSME489bNBng
提取碼:5czp
下載后解壓,右鍵管理員身份運(yùn)行,如圖:
四、編譯環(huán)境
首先進(jìn)入模型文件夾data\coco\PythonAPI下,在這個環(huán)境下進(jìn)入到自己配置的環(huán)境中,依次運(yùn)行以下命令:
python setup.py build_ext --inplace
這里會出現(xiàn)報錯:error: command ‘C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\link.exe’ failed with exit status 1158
解決方案:在全局搜索工具中搜索rc.exe,沒有工具的自行去下。如圖
然后一定要退出窗口重新進(jìn)入到自己配置的環(huán)境中,不退出繼續(xù)執(zhí)行還是會報這個錯。然后重新運(yùn)行以下命令:
python setup.py build_ext --inplace
接著運(yùn)行
python setup.py build_ext install
然后進(jìn)入到模型文件夾./lib/utils下,運(yùn)行以下命令:
python setup.py build_ext --inplace
做完這一步,環(huán)境就算大功告成了。
五、制作自己的數(shù)據(jù)集
在data文件夾下新建VOC2007文件夾,VOC2007文件夾結(jié)構(gòu)如圖:
接下來劃分?jǐn)?shù)據(jù)集,會在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()
這樣數(shù)據(jù)集就算做好了。
六、開始訓(xùn)練
進(jìn)入自己配置好的環(huán)境:
python train.py
運(yùn)行開始訓(xùn)練。
七、解決報錯
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’
解決方案:
找到箭頭所指文件,打開將:文章來源:http://www.zghlxwxcb.cn/news/detail-782265.html
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)),
)
替換為:文章來源地址http://www.zghlxwxcb.cn/news/detail-782265.html
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)),
)
到了這里,關(guān)于Faster RCNN訓(xùn)練自己的數(shù)據(jù)集【傻瓜式教程】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!