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

news/2025/2/14 2:46:04/

一、下载源码

本文采用的源码是: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

这里会出现报错: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

接着运行

python setup.py build_ext install

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

python setup.py build_ext --inplace

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

五、制作自己的数据集

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

import os
import randomtrainval_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()

这样数据集就算做好了。

六、开始训练

进入自己配置好的环境:

python train.py

运行开始训练。

七、解决报错

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: intminor: intmicro: intreleaselevel: strserial: int@propertydef __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)),)

替换为:

class version_info():def __init__(self, major: int, minor: int, micro: int, releaselevel: str, serial: int):self.major = majorself.minor = minorself.micro = microself.releaselevel = releaselevelself.serial = serial@propertydef __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.ppmy.cn/news/1415655.html

相关文章

Spring事务:7种传播方式、4种隔离级别

Spring事务的代码承接jdbcTemplate的 文章目录 一、事务1.1 注解配置1.2 注解处理事务1.3 xml处理事务配置 二、传播方式三、事务的隔离级别 一、事务 不可分割的一系列操作。要么 全执行成功。要么 如果一个不成功,则全部不成功。 处理的事务的时候,成…

深入探索MySQL:成本模型解析与查询性能优化

码到三十五 : 个人主页 在数据库管理系统中,查询优化器是一个至关重要的组件,它负责将用户提交的SQL查询转换为高效的执行计划。在MySQL中,查询优化器使用了一个称为“成本模型”的机制来评估不同执行计划的优劣,并选择…

实例解释遇到前端报错时如何排查问题

前端页面报错: 1、页面报错500,首先我们可以知道是服务端的问题,需要去看下服务端的报错信息: 2、首先我们查看下前端是否给后端传了id: 我们可以看到接口是把ID返回了,就需要再看下p_id是什么情况了。 3、我们再次请…

JavaEE初阶——多线程(一)

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 小比特 大梦想 此篇文章与大家分享多线程的第一部分:引入线程以及创建多线程的几种方式 此文章是建立在前一篇文章进程的基础上的 如果有不足的或者错误的请您指出! 1.认识线程 我们知道现代的cpu大多都是多核心…

(数字化)招标采购大数据到底怎么落地?

数据要素是数字经济时代的重要战略资源。2024年政府工作报告中提出深入推进数字经济创新发展,制定支持数字经济高质量发展政策,积极推进数字产业化、产业数字化,促进数字技术和实体经济深度融合;深化大数据、人工智能等研发应用&a…

AcWing-5:多重背包问题 II

5. 多重背包问题 II - AcWing题库 #include <bits/stdc.h> using namespace std; const int MAXN11050; //个数是1000*log2(2000)&#xff1b;1000以log以2为底2000的数 const int MAXV2005; int temp_v[MAXN]; //存储实际每个的体积 int temp_w[MAXN]; …

【数据库】GROUP BY 详解、示例、注意事项

一、基本介绍 GROUP BY 语句在 SQL 中用于将来自数据库表的记录分组&#xff0c;以便可以对每个组执行聚合函数&#xff08;如 COUNT(), MAX(), MIN(), SUM(), AVG() 等&#xff09;。使用 GROUP BY 时&#xff0c;数据库会根据一个或多个列的值将结果集分为多个分组&#xff…

怎么用AI大模型解决实际问题?(从我亲自实操的一个案例讲起)

ONE. 一切要从我安利我妈妈用豆包APP说起… 我妈妈之前没学习过抖音运营相关知识&#xff0c;但是最近想在抖音上做面向本地用户的房产号&#xff0c;问我该如何做。 因为我最近都在研究职场AI提效上&#xff0c;暂时没有精力去研究这个全新的领域。所以我就想到了直接让AI教…