Autodl训练Faster-RCNN网络--自己的数据集(一)

news2025/7/26 8:46:53

参考文章:

Autodl服务器中Faster-rcnn(jwyang)复现(一)_autodl faster rcnn-CSDN博客

Autodl服务器中Faster-rcnn(jwyang)训练自己数据集(二)_faster rcnn autodl-CSDN博客


食用指南:先跟着参考文章一进行操作,遇到问题再来看我这里有没有解决办法,没有的话找AI。如果文章一哪里看不懂就去看文章二,然后遇到问题再来看我写的这篇。


环境配置

我到下载torch这一步老是即将结束的时候自动结束进程,所以还是自己下载安装吧。 

如果出现上面的错误说明你没有加显卡,加上显卡就能运行成功了。 

如果在安装相关库过程中发生报错,请先升级pip:

 pip install --upgrade pip

数据集准备

我的数据集是之前训练yolo的,是我自己混合的Pascalvoc数据集。

查阅了资料说只需要将xml划分就行,我这里主要是8:2划分为训练集和验证集。

import os
import random
from typing import List, Tuple

def split_dataset(xml_dir: str, output_dir: str, train_percent: float = 0.8) -> None:
    """
    将VOC格式数据集的XML标注文件划分为训练集和验证集
    
    参数:
        xml_dir: XML标注文件所在目录
        output_dir: 输出txt文件的目录
        train_percent: 训练集占总样本的比例
    """
    # 确保输出目录存在
    os.makedirs(output_dir, exist_ok=True)
    
    # 获取所有XML文件
    try:
        total_xml = os.listdir(xml_dir)
    except FileNotFoundError:
        print(f"错误: XML目录 '{xml_dir}' 不存在")
        return
    
    if not total_xml:
        print(f"错误: XML目录 '{xml_dir}' 为空")
        return
    
    # 计算划分点
    num = len(total_xml)
    print(f"找到 {num} 个XML标注文件")
    
    indices = list(range(num))
    random.shuffle(indices)  # 随机打乱索引
    
    train_size = int(num * train_percent)  # 训练集数量
    
    train_indices = indices[:train_size]   # 训练集索引
    val_indices = indices[train_size:]     # 验证集索引
    
    # 输出划分结果
    print(f"数据集划分结果: 训练集 {len(train_indices)}, 验证集 {len(val_indices)}")
    
    # 创建输出文件并写入数据
    file_paths = {
        'train': os.path.join(output_dir, 'train.txt'),
        'val': os.path.join(output_dir, 'val.txt'),
    }
    
    # 写入训练集
    with open(file_paths['train'], 'w') as f_train:
        for i in train_indices:
            name = total_xml[i][:-4] + '\n'
            f_train.write(name)
    
    # 写入验证集
    with open(file_paths['val'], 'w') as f_val:
        for i in val_indices:
            name = total_xml[i][:-4] + '\n'
            f_val.write(name)
    
    print(f"划分完成!训练集和验证集已保存到 {output_dir}")

if __name__ == "__main__":
    # 配置参数
    xml_dir = '/root/faster-rcnn.pytorch-pytorch-1.0/data/xmls'
    output_dir = '/root/faster-rcnn.pytorch-pytorch-1.0/data'
    
    # 执行划分 (80% 训练集, 20% 验证集)
    split_dataset(xml_dir, output_dir, train_percent=0.8)

代码修改 

我主要涉及到五类,先修改如下:

背景不需要更改,只需要更改后面的类别。 

跟着博主的描述操作,安装成功!

训练产生的报错以及解决:

发生报错:环境配置问题找 deepseek,涉及代码找豆包。(我最喜欢的搭配)

  • 没有安装torchversion

得按照博主的那个指令来才能顺带下载torchvision,

  • 找不到数据集路径

因为我数据集格式和博主不一样,最后让ai帮助我修改了pascalvoc.py就没有显示这个错误了。

  • 没有预训练模型

本地下载预训练模型(resnet/densenet/vgg等url地址)_resnet预训练模型下载-CSDN博客

下载后要更改模型名称为 

vgg16_caffe.pth
  • 训练指令 

运行下面的指令:(这个指令运行后它使用的是trainval.txt文件,如果你的是train得修改名称,不然会报错)

CUDA_VISIBLE_DEVICES=0 python trainval_net.py  --dataset pascal_voc  --net vgg16  --bs 4  --nw 0  --lr 0.002 --cuda

 像这样应该就是成功了,可以在文件中修改epoch。 

 需要各类别的精度以及总体精度的时候执行下面这条命令(需要根据产生的文件名进行修改):

chekepoch代表你要检测哪个文件

checkpoint应该每个人的都不一样,需要进行修改。

python test_net.py --dataset pascal_voc --net vgg16 --checksession 1 --checkepoch 3 --checkpoint 1228  --cuda

PS:每一个epoch产生的pth文件非常占存储空间,建议更改存储路径。


现在正在探索如何执行训练后生成的.pth文件输出四个精度指标,如果探索出来将会发布在第二篇。


更新:   

精度指标输出代码已经放在第二篇。

Autodl训练Faster-RCNN网络--自己的数据集(二)-CSDN博客

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

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

相关文章

python打卡day36

复习日 仔细回顾一下神经网络到目前的内容,没跟上进度的补一下进度 作业:对之前的信贷项目,利用神经网络训练下,尝试用到目前的知识点让代码更加规范和美观。探索性作业(随意完成):尝试进入nn.M…

Paimon和Hive相集成

Flink版本1.17 Hive版本3.1.3 1、Paimon集成Hive 将paimon-hive-connector.jar复制到auxlib中,下载链接Index of /groups/snapshots/org/apache/https://repository.apache.org/snapshots/org/apache/paimon/ 通过flink进入查看paimon /opt/softwares/flink-1.…

HarmonyOS 鸿蒙应用开发进阶:深入理解鸿蒙跨设备互通机制

鸿蒙跨设备互通(HarmonyOS Cross-Device Collaboration)是鸿蒙系统分布式能力的重要体现,通过创新的分布式软总线技术,实现了设备间的高效互联与能力共享。本文将系统性地解析鸿蒙跨设备互通的技术架构、实现原理及开发实践。 跨设…

Vue.js教学第十五章:深入解析Webpack与Vue项目实战

Webpack 与 Vue 项目详解 在现代前端开发中,Webpack 作为最流行的模块打包工具之一,对于 Vue 项目的构建和优化起着至关重要的作用。本文将深入剖析 Webpack 的基本概念、在 Vue 项目中的应用场景,并详细讲解常用的 Webpack loaders 和 plugins 的配置与作用,同时通过实例…

Cmake编译gflags过程记录和在QT中测试

由于在QT中使用PaddleOCR2.8存在这样那样的问题,查找貌似是gflags相关问题导致的,因此从头开始按相关参考文章编译一遍gflags源码,测试结果表明Qt5.14.2中使用MSVC2017X64编译器运行的QTgflags项目是正常。 详细编译步骤如下: 1、…

项目中Warmup耗时高该如何操作处理

1)项目中Warmup耗时高该如何操作处理 2)如何在卸载资源后Untracked和Other的内存都回收 3)总Triangles的值是否包含了通过GPU Instancing画的三角形 4)有没有用Lua来修复虚幻引擎中对C代码进行插桩Hook的方案 这是第432篇UWA技术知…

制作一款打飞机游戏53:子弹样式

现在,我们有一个小程序可以发射子弹,但这些子弹并不完美,我们稍后会修复它们。 子弹模式与目标 在开始之前,我想修正一下,因为我观察到在其他射击游戏中有一个我想复制的简单行为。我们有静态射击、瞄准射击和快速射击…

Docker运维-5.3 配置私有仓库(Harbor)

1. harbor的介绍 Harbor(港湾),是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器。以前的镜像私有仓库采用官方的 Docker Registry,不便于管理镜像。 Harbor 是由 VMWare 在 Docker Registry 的基础之上进行了二次封装,加进去了很…

day 36

利用前面所学知识,对之前的信贷项目,利用神经网络训练 # 先运行之前预处理好的代码 import pandas as pd import pandas as pd #用于数据处理和分析,可处理表格数据。 import numpy as np #用于数值计算,提供了高效的数组…

mybatis-plus使用记录

MyBatis-Plus 学习笔记 一、 快速入门 MyBatis-Plus (MP) 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 1. 引入 Maven 依赖 要使用 MyBatis-Plus,首先需要在项目的 pom.xml 文件中引入相…

Mcu_Bsdiff_Upgrade

系统架构 概述 MCU BSDiff 升级系统通过使用二进制差分技术,提供了一种在资源受限的微控制器上进行高效固件更新的机制。系统不传输和存储完整的固件映像,而是只处理固件版本之间的差异,从而显著缩小更新包并降低带宽要求。 该架构遵循一个…

有监督学习——决策树

任务 1、基于iris_data.csv数据,建立决策树模型,评估模型表现; 2、可视化决策树结构; 3、修改min_samples_leaf参数,对比模型结果 代码工具:jupyter notebook 参考资料 20.23 决策树(1)_哔哩哔哩_bil…

华为OD机试真题——启动多任务排序(2025B卷:200分)Java/python/JavaScript/C/C++/GO最佳实现

2025 B卷 200分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

大模型时代,Python 近红外光谱与 Transformer 模型:学习的必要性探究

在当下大语言模型盛行的时代,各类新技术如潮水般不断涌现,让人应接不暇。身处这样的浪潮之中,不少人心中都会泛起疑问:Python 近红外光谱和 Transformer 模型还有学习的必要性吗?今天,就让我们深入探讨一番…

梯度优化提示词:精准引导AI分类

基于梯度优化的提示词工程方法,通过迭代调整提示词的嵌入向量,使其能够更有效地引导模型做出正确分类。 数据形式 训练数据 train_data 是一个列表,每个元素是一个字典,包含两个键: text: 需要分类的文本描述label: 对应的标签(“冲动"或"理性”)示例数据: …

AUTOSAR 运行时环境 (RTE)

目录 往期推荐 什么是运行时环境? AUTOSAR 中的运行时环境 (RTE) RTE 的应用 RTE 的生成 关于RTE API的一些信息 RTE生成后文件之间的关系 往期推荐 2025汽车行业新宠:欧企都在用的工具软件ETAS工具链自动化实战指南<一>ET…

SQLMesh 宏操作符详解:提升 SQL 查询的灵活性与效率

SQLMesh 提供了一系列强大的宏操作符(如 WITH、JOIN、WHERE 等),用于动态构建 SQL 查询。这些操作符不仅简化了复杂查询的编写,还提高了代码的可读性和可维护性。本文将深入探讨这些操作符的使用场景、语法及实际案例,…

基于Flink的数据中台管理平台

基于Flink做的数据中台工程项目。数据从source到clickhouse全流程的验证。集成元数据管、数据资产、数据发现功能,自主管理元数据变更,集成元数据版本管理。 同时,对整个大数据集群使用到的组件或者是工具进行管理。比如nacos、kafka、zookee…

AI-Ready TapData:如何基于 MCP 协构建企业级 AI 实时数据中枢?(含教程)

随着企业对私有大模型、行业大模型的探索逐渐深入,“AI应用是否真正落地”,越来越取决于企业是否拥有结构化、实时、可交互的高质量数据。而现实是,大多数企业的核心业务数据依旧被困在多个异构系统、孤岛数据库和 ETL 流程之中,导…

Spring Boot 登录实现:JWT 与 Session 全面对比与实战讲解

Spring Boot 登录实现:JWT 与 Session 全面对比与实战讲解 2025.5.21-23:11今天在学习黑马点评时突然发现用的是与苍穹外卖jwt不一样的登录方式-Session,于是就想记录一下这两种方式有什么不同 在实际开发中,登录认证是后端最基础也是最重要…