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

news2024/11/23 13:13:13

一、下载源码

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

这样数据集就算做好了。

六、开始训练

进入自己配置好的环境:

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: 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)),
        )

替换为:

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)),
        )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1588668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基础的unicorn模拟简介与库函数调用方案与代码实例

运行环境:python 基本的导入:from unicorn import * 简介 1. unicorn对象的初始化: UC Uc(unicorn_const.UC_ARCH_X86,unicorn_const.UC_MODE_16)Uc接收的二值分别指定将模拟的架构和程序位数。后续操作的寄存器(如rax、eax、…

数字图像处理项目——模糊图像边缘检测算法设计及实现(论文/代码)

完整的论文代码见文章末尾 以下为部分内容 摘要 本研究旨在针对大脑核磁图像中的黑色腔体进行有效分割,以提供可靠的腔体定位和分析。为此,采用了三种常用的图像分割方法:8邻域区域生长法、Canny算子边缘检测和8邻域边界跟踪法。 首先&…

机器学习基础入门(一)(机器学习定义及分类)

机器学习定义 给予计算机无需特意带有目的性编程便有学习能力的算法 深度学习算法 主要有监督学习和非监督学习两类 监督学习(supervised learning) 定义 1、学习由x映射到y的映射关系 2、主动给予机器学习算法正确示例,算法通过示例来学习…

NodeJS解压版环境配置

前往官网下载最新版NodeJS 下载地址:Node.js — Download Node.js 如下图选择“Prebuilt Binaries”(预构建二进制文件)进行下载 解压缩下载的zip压缩包 创建node_global与node_cache文件夹 node_global Node全局目录 node_cache Node缓存目录 设置…

php站长在线工具箱源码优化版

环境要求 PHP > 7.4MySQL > 5.6fileinfo扩展使用Redis缓存需安装Redis扩展 源码下载地址:php站长在线工具箱源码优化版.zip

创新之作:淘宝扭蛋机小程序,让购物与娱乐完美结合

淘宝扭蛋机小程序,是淘宝平台为您精心打造的一款集娱乐与购物于一体的全新体验。在这里,每一次的扭动都蕴含着无限的惊喜与乐趣,让您在轻松愉快的氛围中,发现更多心仪的商品,享受更多购物的乐趣。 我们深知您对新鲜事…

【数据结构】单链表(二)

目录 1.查找数据 2.指定位置插入和删除节点 2.1 指定位置之前插入节点 2.2 指定位置之后插入节点 2.3 删除指定位置节点 2.4 删除指定位置之后的节点 3.销毁链表 我们接着上一篇【数据结构】单链表(一)-CSDN博客 来继续实现单链表 1.查找数据 在…

【Shell语言学堂】数组练习题

数组练习 1、使用数组和循环实现冒泡排序2、将冒泡排序的代码重构为2个函数,2个关系是a函数调用b函数自定义数组参数: 3、声明一个存储的全整数数组,对其中的每一个值进行10处理4、对硬盘使用空间占比的排序5、对当前目录的文件大小进行排序 …

Vue3 ts环境下的PropType

简介 在Typscript中,我们可以使用PropType进行类型的推断与验证。在日常的开发中我们常常会遇到下面这样的场景: 我们通过request请求从服务端获取了一条数据,数据是个Array的格式,Array中的每个元素又是一个对象,像下…

BFS宽度优先搜索例题(蓝桥杯)——逃跑的牛

问题描述: 农夫John的一头牛逃跑了,他想要将逃跑的牛找回来。现假设农夫John和牛的位置都在一条直线上,农夫John的初始位置为N(0≤N≤100,000),牛的初始位置为K(0≤K≤100,000)。农夫…

MySOL之旅--------MySQL数据库基础( 3 )

本篇碎碎念:要相信啊,胜利就在前方,要是因为一点小事就停滞不前,可能你也不适合获取胜利,成功的路上会伴有泥石,但是走到最后,你会发现身上的泥泞皆是荣耀的勋章! 今日份励志文案: 凡是发生皆有利于我 目录 查询(select) 1.全列查询 2.指定列查询 3.查询字段为表达式 ​编…

数据库被rmallox勒索病毒加密,如何还原?

近年来,网络安全问题日益严峻,勒索病毒作为其中的一种恶意软件,已成为网络安全领域的一大难题。其中,rmallox勒索病毒以其高度的隐蔽性和破坏性,给不少企业和个人带来了严重损失。本文将从rmallox勒索病毒的特点、传播…

【2024年MathorCup数模竞赛】C题赛题与解题思路

2024年MathorCup数模竞赛C题 题目 物流网络分拣中心货量预测及人员排班背景求解问题 解题思路问题一问题二问题三问题四 本次竞赛的C题是对物流网络分拣中心的货量预测及人员排班问题进行规划。整个问题可以分为两个部分,一是对时间序列进行预测,二是对人…

C++初阶:模板进阶

非类型模板参数 模板参数分为类型形参与非类型形参 。 类型形参即:出现在模板参数列表中,跟在 class 或者 typename 之类的参数类型名称 。 非类型形参,就是用一个常量作为类 ( 函数 ) 模板的一个参数,在类 ( 函数 ) 模板中可将…

7、configMap

1、configMap是什么 类似与pod的配置中心,不会因为pod的创建销毁,相关配置发生改变 pod定义硬编码意味着需要有效区分⽣产环境与开发过程中的pod 定义。为了能在多个环境下复⽤pod的定义,需要将配置从pod定义描 述中解耦出来。 2、向容器中…

HarmonyOS实战开发-证书管理、如何实现对签名数据进行校验功能。

介绍 本示例使用了ohos.security.certManager相关接口实现了对签名数据进行校验的功能。 实现场景如下: 1)使用正确的原始数据和签名数据进行签名校验场景:模拟服务端对签名数据进行校验,验证客户端身份和原始数据完整性。 2&…

智慧污水井物联网远程监控案例

智慧污水井物联网远程监控案例 在当今数字化转型的浪潮中,智慧水务已成为城市基础设施建设的重要组成部分。其中,基于物联网技术的智慧污水井远程监控系统以其高效、精准、实时的特性,在提升污水处理效能、保障城市水环境安全、实现精细化管…

数据资产可能是个伪命题?

✅作者简介:《数据运营:数据分析模型撬动新零售实战》作者、《数据实践之美》作者、数据科技公司创始人、多次参加国家级大数据行业标准研讨及制定、高端企培合作讲师。 🌸公众号:风姑娘的数字视角,免费分享数据应用相…

【分享】跨境虾皮Shopee各区域商品详情API返回值(商品,订单,面单等)♥

虾皮(shopee)是一个亚洲区域的电商平台,主要在东南亚地区提供电商服务。虾皮提供了丰富的电商数据,包括商品数据、订单数据、会员数据、评价数据等。 虾皮Shopee♥♥​​​​​​​♥​​​​​​​♥​​​​​​​♥​​​​​​​♥ 1.授权 ​ 接口…

Matlab 将数据写入excel文件

Matlab 将数据写入excel文件 函数:writematrix 功能:将矩阵写入文件 语法 writematrix(A) writematrix(A,filename) writematrix(___,Name,Value) 说明 writematrix(A) 将同构数组 A 写入以逗号分隔的文本文件。文件名为数组的工作区变量名称&…