Autodl训练Faster-RCNN网络(自己的数据集)
参考文章:
Autodl服务器中Faster-rcnn(jwyang)复现(一)_autodl faster rcnn-CSDN博客
Autodl服务器中Faster-rcnn(jwyang)训练自己数据集(二)_faster rcnn autodl-CSDN博客
环境配置
我到下载torch这一步老是即将结束的时候自动结束进程,所以还是自己下载安装吧。
如果出现上面的错误说明你没有加显卡,加上显卡就能运行成功了。
如果在安装相关库过程中发生报错,请先升级pip:
pip install --upgrade pip
数据集准备
我的数据集是之前训练yolo的,是我自己混合的Pascalvoc数据集。
查阅了资料说只需要将xml划分就行,我这里主要是8:2划分为训练集和验证集。
import os
import random
from typing import List, Tupledef 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文件非常占存储空间,建议更改存储路径。
相关文章:

Autodl训练Faster-RCNN网络(自己的数据集)
参考文章: Autodl服务器中Faster-rcnn(jwyang)复现(一)_autodl faster rcnn-CSDN博客 Autodl服务器中Faster-rcnn(jwyang)训练自己数据集(二)_faster rcnn autodl-CSDN博客 环境配置 我到下载torch这一步老是即将结束的时候自动结束进程,所以还是自己…...
每日两道leetcode(今天开始刷基础题模块——这次是之前的修改版)
1768. 交替合并字符串 - 力扣(LeetCode) 题目 给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的…...
服务器数据迁移终极指南:网站、数据库、邮件无缝迁移策略与工具实战 (2025)
嘿,各位服务器的“大管家”们!咱们在IT江湖闯荡,总有那么些时候,不得不面对一个既重要又可能让人头皮发麻的任务——服务器迁移!可能是因为旧服务器“年事已高”想给它换个“新家”,也可能是业务发展太快&a…...

NFS服务小实验
实验1 建立NFS服务器,使的客户端顺序共享数据 第一步:服务端及客户端的准备工作 # 恢复快照 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld [rootserver ~]# yum install nfs-utils -y # 服务端及客户端都安装 …...
vue 中的v-once
🔰 基础理解 ✅ 语法: <span v-once>{{ msg }}</span>✅ 效果: • 只渲染一次,之后无论数据如何变化,该内容都不会更新。 • 非常适用于静态内容或首次加载后不需要变化的数据。🧪 示例&…...

鸿蒙ArkTS-发请求第三方接口显示实时新闻列表页面
发请求展示新闻列表 鸿蒙ArkTS-发请求第三方接口显示实时新闻列表页面 1. 效果图 新闻首页: 点击某一新闻的详情页面(需要使用模拟器才能查看详情页面): 2. 代码 1. key准备 首先需求到聚合网申请一个key,网址如下…...
2025年开源大模型技术全景图
迈向2025年,开源大型语言模型(LLM)生态系统已不再仅仅是闭源模型的补充,而是成为推动AI创新与民主化的核心引擎。其技术全景展现了一个高度模块化、协作共生且快速演进的复杂网络。以下是对提供的蓝图进行更细致的解读,…...

【创造型模式】工厂方法模式
文章目录 工厂方法模式工厂方法模式当中的角色和职责工厂方法模式的实现工厂方法模式的优缺点 工厂方法模式 今天我们继续学习一例创造型设计模式——工厂方法模式。参考的主要资料是刘丹冰老师的《Easy 搞定 Golang 设计模式》。 工厂方法模式当中的角色和职责 简单来说&…...

【MySQL】使用文件进行交互
目录 准备工作 1.从文本文件中读取数据(导入) 1.1.CSV 文件 1.2.设置导入导出的路径 1.3.导入文件 1.4.将数据写入文本文件(导出) 2.从文件中读取并执行SQL命令 2.1.通过mysql监视器执行编写在文件里面的SQL语句 2.2.通过…...

# 大模型的本地部署与应用:从入门到实战
大模型的本地部署与应用:从入门到实战 在当今人工智能飞速发展的时代,大模型(尤其是大型语言模型,LLMs)已经成为自然语言处理(NLP)领域的核心力量。从文本生成、机器翻译到问答系统,…...
布丁扫描高级会员版 v3.5.2.2| 安卓智能扫描 APP OCR文字识别小助手
布丁扫描高级会员版 v3.5.2.2| 安卓智能扫描 APP OCR文字识别小助手 布丁扫描APP是一款集成了先进图像处理与OCR文字识别技术的智能扫描软件。它旨在将纸质文档、照片、名片、书籍等各类实体资料快速…...
可视化大屏全屏后重载echarts图表
问题:可视化大屏点击全屏之后,但echarts图表还是之前的大小,并没有撑满该容器,所以这时候我们需要全屏之后重新加载echarts图表内容 代码如下: // 全屏或非全屏状态下重新加载图表window.onresize () > {//lineCh…...
20200201工作笔记常用命令要整理
工作笔记常用命令: 1.repo常用命令: repo sync -c -j10 2. 常用adb命令 错误: error: device unauthorized. This adbds $ADB_VENDOR_KEYS is not set; try adb kill-server if that seems wrong. Otherwise check for a confirmation dialog on your d…...

Java对象内存模型、如何判定对象已死亡?
一、Java对象内存模型 Java对象在内存中由三部分组成: 含类元数据指针(指向方法区的Class对象)和Mark Word(存储对象哈希码、锁状态、GC分代年龄等信息)。 若为数组对象,还包含数组长度数据。 1,…...
spark任务的提交流程
目录 spark任务的提交流程1. 资源申请与初始化2. 任务划分与调度3. 任务执行4. 资源释放与结果处理附:关键组件协作示意图扩展说明SparkContext介绍 spark任务的提交流程 用户创建一个 Spark Context;Spark Context 去找 Cluster Manager 申请资源同时说明需要多少 CPU 和内…...
ELK简介和docker版安装
使用场景 主要还是给开发人员“打捞日志”用的。 ELK 是由三个开源工具组成的套件(Elasticsearch、Logstash 和 Kibana),主要用于日志的收集、分析和可视化。以下是 ELK 常见的使用场景: 日志集中化管理 收集来自多个服务器或服…...
利用条件编译实现RTT可控的调试输出
在嵌入式开发中,调试信息的输出通常对定位问题至关重要。然而,为了保证代码在正式发布时的性能和体积,调试信息往往需要在不修改主逻辑代码的前提下禁用。 代码一览 // debug.h #pragma once// #define DEBUG#ifdef DEBUG#include "SEG…...
【软件设计师】计算机网络考点整理
以下是软件设计师考试中 计算机网络 的核心考点总结,帮助您高效备考: 一、网络体系结构与协议 OSI七层模型 & TCP/IP四层模型 各层功能(物理层-数据链路层-网络层-传输层-会话层-表示层-应用层)对应协…...

智慧化工园区安全风险管控平台建设方案(Word)
1 项目概况 1.1 园区概况 1.1.1 XX化工园区简况 1.1.2 企业现状 1.1.3 园区发展方向 1.1.4 园区信息化现状 1.2 项目建设背景 1.2.1 政策背景 1.3 项目建设需求分析 1.3.1 政策需求分析 1.3.2 安全生产监管需求分析 1.3.3 应急协同管理需求分析 1.3.4 工业互联网安…...

【uniapp】 iosApp开发xcode原生配置项(iOS平台Capabilities配置)
如果你需要配置诸如:Access Wi-Fi Information 简单地说就是这个地址 ios平台capabilities配置 本来这种配置就是在Xcode的平台中选中即可,他们的信息会存储在XCode工程的.entitlements和Info.plist文件。 按照uniapp文档说的, HBuilderX4.…...

MYSQL优化(1)
MYSQL调优强调的是如何提高MYSQL的整体性能,是一套整体方案。根据木桶原理,MYSQL的最终性能取决于系统中性能表现最差的组件。可以这样理解,即使MYSL拥有充足的内存资源,CPU资源,如果外存IO性能低下,那么系…...
C++可变参数宏定义语法笔记
1. 基础语法 定义格式: #define MACRO_NAME(fixed_args, ...) macro_body#define LOG(fmt, ...) printf(fmt, __VA_ARGS__) LOG("Value: %d, Name: %s", 42, "Alice"); // 展开为 printf("Value: %d, Name: %s", 42, "Alice&q…...

基于BERT预训练模型(bert_base_chinese)训练中文文本分类任务(AI老师协助编程)
新建项目 创建一个新的虚拟环境 创建新的虚拟环境(大多数时候都需要指定python的版本号才能顺利创建): conda create -n bert_classification python3.9激活虚拟环境: conda activate myenvPS:虚拟环境可以避免权限问题,并隔离…...
Windows逆向工程提升之IMAGE_EXPORT_DIRECTORY
公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 什么是 IMAGE_EXPORT_DIRECTORY? PE 文件与 Export Table 的关系 PE 文件的整体视角 Export Table 在 PE 中的定位 IMAGE_EXPORT_DIRECTORY 结构 数据结构定义 字段详解…...
python与flask框架
一、理论 Flask是一个轻量级的web框架,灵活易用。提供构建web应用所需的核心工具。 Flask依赖python的两个库 Werkzeug:flask的底层库,提供了WSGI接口、HTTP请求和响应处理、路由等核心功能。 Jinja2:模板引擎࿰…...
【普及+/提高】洛谷P2613 【模板】有理数取余——快读+快速幂
题目来源 P2613 【模板】有理数取余 - 洛谷 题目描述 给出一个有理数 cba,求 cmod19260817 的值。 这个值被定义为 bx≡a(mod19260817) 的解。 输入格式 一共两行。 第一行,一个整数 a。 第二行,一个整数 b。 输出格式 一个整数&a…...

从数据到智能:openGauss+openEuler Intelligence的RAG架构实战
随着人工智能和大规模语言模型技术的崛起,传统的搜索引擎由于其只能提供简单的关键字匹配结果,已经越来越无法满足用户对于复杂、多样化和上下文相关的知识检索需求。与此相对,RAG(Retrieval-Augmented Generation)技术…...

【Linux】初见,基础指令
前言 本文将讲解Linux中最基础的东西-----指令,带大家了解一下Linux中有哪些基础指令,分别有什么作用。 本文中的指令和选项并不全,只介绍较为常用的 pwd指令 语法:pwd 功能:显示当前所在位置(路径…...

什么是实时流数据?核心概念与应用场景解析
在当今数字经济时代,实时流数据正成为企业核心竞争力。金融机构需要实时风控系统在欺诈交易发生的瞬间进行拦截;电商平台需要根据用户实时行为提供个性化推荐;工业物联网需要监控设备状态预防故障。这些场景都要求系统能够“即时感知、即时分…...

工业RTOS生态重构:从PLC到“端 - 边 - 云”协同调度
一、引言 在当今数字化浪潮席卷全球的背景下,工业领域正经历着深刻变革。工业自动化作为制造业发展的基石,其技术架构的演进直接关系到生产效率、产品质量以及企业的市场竞争力。传统的PLC(可编程逻辑控制器)架构虽然在工业控制领…...