当前位置: 首页 > news >正文

mmdection配置-yolo转coco

基础配置看我的mmsegmentation。
也可以参考b站 :https://www.bilibili.com/video/BV1xA4m1c7H8/?vd_source=701421543dabde010814d3f9ea6917f6#reply248829735200

这里面最大的坑就是配置coco数据集。我一般是用yolo,这个yolo转coco格式很难搞定,mmdection需要 coco格式的!
下面展示一些 内联代码片

import os
import json
from PIL import Image# 你的路径定义
coco_format_save_path = r'C:\Users\ZhuanZ\Desktop\mmdetection-main\mmdetection-main\co'
yolo_format_annotation_path = r'C:\Users\ZhuanZ\Desktop\mmdetection-main\mmdetection-main\co\labels\test'
img_pathDir = r'C:\Users\ZhuanZ\Desktop\mmdetection-main\mmdetection-main\co\images\test'# 类别映射和其他初始化代码  该代码相对于其他版本用户可以自定义在以下修改类别而不需要额外调用外部文件
categories_mapping = ['0',]
categories = [{'id': i + 1, 'name': label, 'supercategory': 'None'} for i, label in enumerate(categories_mapping)]write_json_context = {'info': {'description': '', 'url': '', 'version': '', 'year': 2024, 'contributor': '','date_created': '2024-02-16'},'licenses': [{'id': 1, 'name': 0, 'url': None}],'categories': categories,'images': [],'annotations': []
}imageFileList = os.listdir(img_pathDir)
for i, imageFile in enumerate(imageFileList):imagePath = os.path.join(img_pathDir, imageFile)image = Image.open(imagePath)W, H = image.sizeimg_context = {'file_name': imageFile, 'height': H, 'width': W,'date_captured': '2021-07-25', 'id': i,'license': 1, 'color_url': '', 'flickr_url': ''}write_json_context['images'].append(img_context)txtFile = os.path.splitext(imageFile)[0] + '.txt'  # 修改以正确处理文件名 获取该图片获取的txt文件  # 和其他人写的代码区别是可以保证文件被找到with open(os.path.join(yolo_format_annotation_path, txtFile), 'r') as fr:lines = fr.readlines()  # 读取txt文件的每一行数据,lines是一个列表,包含了一个图片的所有标注信息# 重新引入循环中的enumerate函数for j, line in enumerate(lines):  # 这里使用enumerate确保j被正确定义parts = line.strip().split(' ')if len(parts) >= 5:  # 确保至少有5个部分    # 这里需要注意,yolo格式添加额外的内容容易报错,所以需要你只要前面的主要信息class_id, x, y, w, h = map(float, parts[:5])  # 只读取前五个值xmin = (x - w / 2) * W  # 坐标转换ymin = (y - h / 2) * Hxmax = (x + w / 2) * Wymax = (y + h / 2) * Hbbox_width, bbox_height = w * W, h * Hbbox_dict = {'id': i * 10000 + j,  # 使用j,它现在被enumerate定义'image_id': i,'category_id': class_id + 1,  # 注意目标类别要加一'iscrowd': 0,'area': bbox_width * bbox_height,'bbox': [xmin, ymin, bbox_width, bbox_height],'segmentation': [[xmin, ymin, xmax, ymin, xmax, ymax, xmin, ymax]]}write_json_context['annotations'].append(bbox_dict)
name = os.path.join(coco_format_save_path, "test.json")    #这里改一下,是train就train.json,val就val.json
with open(name, 'w') as fw:json.dump(write_json_context, fw, indent=2)

配置环境时候一定cd到mmdection文件夹下在这里插入图片描述

pip install -v -e .

在这里插入图片描述
我创建的是configs/tood下面的。
在这里插入图片描述
mytood继承 base = ‘./tood_r50_fpn_1x_coco.py’ 按需配置即可,需要就配置,不需要自己会继承的!

_base_ = './tood_r50_fpn_1x_coco.py'
model = dict(bbox_head=dict(num_classes=1,   #这里要改,你识别的类别是几个,也就是yolo文件里的class。txt 文件中类别数量),)
data_root = r''
metainfo = {'classes': ('0',),  #这里就是你数据集打的标签'palette': [(220, 20, 60),   #这是边框的颜色]
}
train_dataloader = dict(batch_size=1,dataset=dict(data_root=data_root,metainfo=metainfo,ann_file=r'C:\Users\ZhuanZ\Desktop\mmdetection-main\mmdetection-main\co\train.json',  #coco的json文件data_prefix=dict(img=r'C:\Users\ZhuanZ\Desktop\mmdetection-main\mmdetection-main\co\images\train'))) #训练集图片的地址
val_dataloader = dict(dataset=dict(data_root=data_root,metainfo=metainfo,ann_file=r'C:\Users\ZhuanZ\Desktop\mmdetection-main\mmdetection-main\co\val.json',data_prefix=dict(img=r'C:\Users\ZhuanZ\Desktop\mmdetection-main\mmdetection-main\co\images\val')))
test_dataloader = dict(dataset=dict(data_root=data_root,metainfo=metainfo,ann_file=r'C:\Users\ZhuanZ\Desktop\mmdetection-main\mmdetection-main\co\test.json',data_prefix=dict(img=r'C:\Users\ZhuanZ\Desktop\mmdetection-main\mmdetection-main\co\images\test')))# 修改评价指标相关配置
val_evaluator = dict(ann_file=data_root + r'C:\Users\ZhuanZ\Desktop\mmdetection-main\mmdetection-main\co\test.json')
test_evaluator = val_evaluator
load_from=r'C:\Users\ZhuanZ\Desktop\tood_r50_fpn_1x_coco_20211210_103425-20e20746.pth'  #基层类的权重文件,官网可以下载
default_hooks = dict(
#这几个钩子文件,是在mmdetection-main/configs/_base_/default_runtime.py这里配置的,具体要什么,gpt搜一下代码功能按需配置即可。timer=dict(type='IterTimerHook'),# logger=dict(type='LoggerHook', interval=50),param_scheduler=dict(type='ParamSchedulerHook'),checkpoint=dict(type='CheckpointHook', interval=1),sampler_seed=dict(type='DistSamplerSeedHook'),visualization=dict(type='DetVisualizationHook'))

然后train.py配置
在这里插入图片描述

形参指向mytood,也就是我们自己配置的数据集。

train玩之后,会在mmdetection-main/tools/work_dirs/mytood/epoch_12.pth出现pth,目前我还不知道如何保存最优权重,这个权重就是咱们训练好的模型。

然后预测:用jupter网络编译器运行。

from mmdet.apis import DetInferencer# Choose to use a config
model_name = r"C:\Users\ZhuanZ\Desktop\mmdetection-main\mmdetection-main\configs\tood\mytood.py"
# Setup a checkpoint file to load
checkpoint = r"C:\Users\ZhuanZ\Desktop\mmdetection-main\mmdetection-main\tools\work_dirs\mytood\epoch_12.pth"# Set the device to be used for evaluation
device = 'cuda:0'# Initialize the DetInferencer
inferencer = DetInferencer(model_name, checkpoint, device)# Use the detector to do inference
img =  r"C:\Users\ZhuanZ\Desktop\1d0d5b0ea6d1c165d471d7365686be4.jpg"
result = inferencer(img, out_dir='./output')

在这里插入图片描述
执行即可预测

相关文章:

mmdection配置-yolo转coco

基础配置看我的mmsegmentation。 也可以参考b站 :https://www.bilibili.com/video/BV1xA4m1c7H8/?vd_source701421543dabde010814d3f9ea6917f6#reply248829735200 这里面最大的坑就是配置coco数据集。我一般是用yolo,这个yolo转coco格式很难搞定&#…...

聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程

聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程 系统采用FastAdmin框架独立全新开发,安全稳定,系统支持代理、商户、码商等业务逻辑。 针对最近一些JD,TB等业务定制,子账号业务逻辑API 非常详细,方便内置…...

力扣67. 二进制求和

给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 示例 1: 输入:a "11", b "1" 输出:"100" 示例 2: 输入:a "1010", b "1011" 输出&#…...

网络安全中的 SOC 是什么?

当今世界,网络威胁日益增多,确保网络安全已成为各种规模企业的首要任务。网络安全讨论中经常出现的一个术语是 SOC,即安全运营中心的缩写。但网络安全中的 SOC 是什么呢? SOC在防御网络威胁、管理安全事件和全天候监控系统方面发…...

16、鸿蒙学习——Visibility与(if...else)该如何选择

在鸿蒙中我们如果要控制一个组件的显示与隐藏可以设置组件的Visibility属性,也可使用(if...else)条件控制,具体我们该选择哪个?二者有什么区别呢? 1、Visibility 名称描述Hidden隐藏,但参与布局…...

PH热榜 | 2024-12-05

1. Oopsie 标语:用AI和会话回放调试Flutter和React Native应用 介绍:Zipy推出的Oopsie是一款你唯一需要的AI赋能移动端调试工具,它能提供▶️会话回放、🤖错误监控、💡AI生成的概要分析,以及&#x1f525…...

Qt Chart 模块化封装曲线图

一 版本说明 二 完成示例 此文章包含:曲线轴设置,曲线切换,单条曲线显示,坐标轴。。。 三 曲线图UI创建 在UI界面拖放一个QWidget,然后在 Widget里面放一个 graphicsView 四 代码介绍 1 头文件 #include <QString> #include <QTimer> #include <QMessa…...

【AI系统】MobileFormer

MobileFormer 在本文中&#xff0c;将介绍一种新的网络-MobileFormer&#xff0c;它实现了 Transformer 全局特征与 CNN 局部特征的融合&#xff0c;在较低的成本内&#xff0c;创造一个高效的网络。通过本节&#xff0c;让大家去了解如何将 CNN 与 Transformer 更好的结合起来…...

python数据分析之爬虫基础:解析

目录 1、xpath 1.1、xpath的安装以及lxml的安装 1.2、xpath的基本使用 1.3、xpath基本语法 2、JsonPath 2.1、jsonpath的安装 2.2、jsonpath的使用 2.3、jsonpath的基础语法 3、BeautifulSoup 3.1、bs4安装及创建 3.2、beautifulsoup的使用 3.3、beautifulsoup基本语…...

uniapp中导入uview或者uview plus

关于SCSS uview-plus依赖SCSS&#xff0c;您必须要安装此插件&#xff0c;否则无法正常运行。 如果您的项目是由HBuilder X创建的&#xff0c;相信已经安装scss插件&#xff0c;如果没有&#xff0c;请在HX菜单的 工具->插件安装中找到"scss/sass编译"插件进行安…...

【LeetCode】122.买卖股票的最佳时机II

文章目录 题目链接&#xff1a;题目描述&#xff1a;解题思路一&#xff08;贪心算法&#xff09;&#xff1a;解体思路二&#xff08;动态规划&#xff09;&#xff1a; 题目链接&#xff1a; 122.买卖股票的最佳时机II 题目描述&#xff1a; 解题思路一&#xff08;贪心算法…...

openGauss开源数据库实战十九

文章目录 任务十九 openGauss DML 语句测试任务目标实施步骤一、准备工作二、INSERT语句三、DELETE语句四、UPDATE语句五、清理工作 任务十九 openGauss DML 语句测试 任务目标 掌握DML语句的用法,包括INSERT语句、DELETE语句和UPDATE语句。 实施步骤 一、准备工作 使用Li…...

恶补英语初级第18天,《询问他人的喜好(上)》

对话 Do you like coffee? Yes, I do. Do you want a cup? Yes, please. Do you want any sugar? Yes, please. Do you want any milk? No, thank you. I don’t like milk in my coffee, I like black coffee. Do you like biscuits? Yes, I do. Do you want one? Yes, …...

centos 报 ping: www.baidu.com: Name or service not known

[rootlocalhost ~]$ ping www.baidu.com ping: www.baidu.com: Name or service not known解决办法&#xff1a; 首先要求检查特定文件&#xff08;/etc/resolv.conf&#xff09;内是否正确配置了 DNS sudo vim /etc/resolv.conf没有正确配置可以添加如下代码&#xff1a; n…...

Python:使用随机森林分类器进行模型评估:ROC 曲线与 AUC 指标计算

前言 这段代码的目标是使用 随机森林分类器&#xff08;Random Forest Classifier&#xff09; 来进行二分类任务&#xff0c;并基于每个数据子集计算 ROC 曲线&#xff08;Receiver Operating Characteristic Curve&#xff09;以及 AUC&#xff08;Area Under Curve&#xf…...

数据库表约束完全指南:提升数据完整性和准确性

数据库表约束完全指南&#xff1a;提升数据完整性和准确性 在数据库设计中&#xff0c;表约束是确保数据完整性和准确性的关键工具。本文将详细介绍各种类型的表约束及其使用方法&#xff0c;包括非空约束、唯一约束、主键约束、外键约束、默认值约束、检查约束以及自动递增约…...

【JavaEE】多线程(6)

一、用户态与内核态 【概念】 用户态是指用户程序运行时的状态&#xff0c;在这种状态下&#xff0c;CPU只能执行用户态下的指令&#xff0c;并且只能访问受限的内存空间 内核态是操作系统内核运行时的状态&#xff0c;内核是计算机系统的核心部分&#xff0c;CPU可以执行所有…...

BERT和RoBERTa;双向表示与单向的简单理解

目录 BERT和RoBERTa大型预训练语言模型 BERT的原理 RoBERTa的原理 举例说明 双向表示与单向的简单理解 除了预训练语言模型,还有什么模型 一、模型类型与结构 二、训练方式与数据 三、应用场景与功能 四、技术特点与优势 BERT和RoBERTa大型预训练语言模型 BERT(Bi…...

Pytorch使用手册-计算机视觉迁移学习教程(专题十三)

在本教程中,你将学习如何使用迁移学习训练一个卷积神经网络进行图像分类。更多关于迁移学习的内容可以参考 CS231n 课程笔记。 引用课程笔记中的内容: 实际上,很少有人从头开始训练一个完整的卷积网络(随机初始化),因为拥有足够大数据集的情况相对罕见。相反,通常会在非…...

Jackson - Java对象与JSON相互转换

在这篇文章中&#xff0c;我将向您展示如何使用Jackson-databind API来实现Java对象与JSON之间的绑定&#xff0c;以及如何将JSON数据转换为Java对象。 对于Java开发者来说&#xff0c;将JSON转换为Java对象及反向操作是一个常见的任务&#xff0c;因此我将通过示例演示如何完…...

2026,AI Agent 真的开始上班了——从 MCP 协议到生产部署,一份踩坑实录

爆款标题备选2026 年&#xff0c;我司来了一个 AI 同事——Agent 落地实录MCP 协议 LangChain Dify&#xff1a;把 AI Agent 塞进生产环境的正确姿势BBC 报道了三个中国人的 AI 恐惧&#xff0c;但我想说点不一样的AI Agent 从 Demo 到生产&#xff0c;中间隔着一个 MCP 协议…...

API 监控告警系统

LogMonitor - API监控告警系统 基于Python的智能API监控系统&#xff0c;集成Splunk日志分析和钉钉告警&#xff0c;支持多种API类型的实时监控和趋势分析。 代码地址 https://github.com/junbingliu007/log_monitor 功能特性 多API类型监控&#xff1a;支持多种API类型智…...

RT-Thread下lwIP协议栈内存优化实战:从300KB降至120KB

1. 项目概述与核心价值最近在做一个基于RT-Thread的物联网网关项目&#xff0c;硬件资源是STM32F407&#xff0c;带1MB的RAM。项目需要同时处理4路TCP长连接和若干UDP广播包&#xff0c;原本以为内存绰绰有余&#xff0c;结果一上电跑起来&#xff0c;系统内存占用直接飙到了90…...

程序员的团队协作:如何与测试、产品团队高效协作

在软件研发的复杂链条中&#xff0c;程序员、测试人员与产品经理如同三个紧密咬合的齿轮&#xff0c;任何一环的卡顿都可能导致整个项目的停滞。对于程序员而言&#xff0c;跳出“专注代码实现”的单一视角&#xff0c;建立与测试、产品团队的高效协作模式&#xff0c;不仅能减…...

QGIS 3.28.3 保姆级教程:手把手教你下载天地图影像/矢量瓦片(附完整参数与避坑指南)

QGIS 3.28.3 天地图数据获取全攻略&#xff1a;从零配置到高效下载 天地图作为国内权威的地理信息数据源&#xff0c;为开发者、学生和研究人员提供了丰富的影像和矢量数据。但对于刚接触QGIS的新手来说&#xff0c;如何正确配置参数、避开常见陷阱并高效下载所需数据&#xff…...

告别抓包焦虑:Win10下搞定8812BU网卡驱动与Omnipeek联动的保姆级避坑指南

告别抓包焦虑&#xff1a;Win10下搞定8812BU网卡驱动与Omnipeek联动的保姆级避坑指南 在无线网络分析领域&#xff0c;8812BU芯片的无线网卡因其出色的抓包能力备受青睐&#xff0c;但许多用户在Windows 10环境下配置驱动与Omnipeek抓包工具时&#xff0c;往往会陷入驱动安装失…...

某包丨图片+视频去水印去除工具

首先下载软件&#xff08;工具在末尾&#xff09;&#xff0c;然后运行&#xff0c;自动打开网页如下&#xff1a; 接着打开某包&#xff0c;找到你要去除水印的图片或者视频的链接&#xff1a; 工具下载&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/aec2cdde94ed...

VirtualBox虚拟机里Win10远程桌面黑屏?手把手教你改组策略搞定它

VirtualBox虚拟机Win10远程桌面黑屏终极解决方案&#xff1a;从策略组到网络优化的全链路排查 当你正沉浸在VirtualBox虚拟机的Windows 10环境中进行关键开发工作&#xff0c;突然发现远程桌面连接后只剩一片漆黑——这种体验就像在重要会议前突然失声。不同于物理机的远程连接…...

阿西米尼常见副作用血小板减少及高血压的临床特征与管理

血小板减少与高血压是阿西米尼治疗慢性髓性白血病时患者报告频率最高的两项不良反应。两项副作用虽极少直接危及生命&#xff0c;却实实在在地影响着患者的日常功能与长期治疗依从性。ASCEMBL三期临床试验及其长期扩展研究的完整安全性数据&#xff0c;为这两项副作用勾勒出了精…...

免费本地语音识别的终极解决方案:3步实现完全离线实时语音转文字

免费本地语音识别的终极解决方案&#xff1a;3步实现完全离线实时语音转文字 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech 在数字化办公和在线学习日益普及的今天&#xff0c;你是否还在为云端语音识别服务的隐私…...