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

网页制作工具的选择与网站整体网络没有关系网站专题模板下载

网页制作工具的选择与网站整体网络没有关系,网站专题模板下载,用闲置的安卓手机做网站,上海建筑工程股份有限公司一.数据准备: 1.数据集格式: 目录结构示例: datasets/├── images/│ ├── train/ # 训练图片│ └── val/ # 验证图片└── labels/├── train/ # 训练标签└── val/ # 验证标签 每张图片对应一个 .txt 标注文件…

一.数据准备:

1.数据集格式:

目录结构示例:

datasets/├── images/│   ├── train/  # 训练图片│   └── val/    # 验证图片└── labels/├── train/  # 训练标签└── val/    # 验证标签

每张图片对应一个 .txt 标注文件,内容为:

<class_id> <x_center> <y_center> <width> <height>  # 归一化坐标(0~1)

2.​将 VOC 格式的数据集转换为 YOLO 格式的数据集:

把 VOC 格式(XML标注)的数据集,转换成 YOLO 格式(TXT文本标注)的数据集,方便 YOLO 模型直接训练。

关键转换步骤:

(1) 坐标转换(核心)​

VOC 的 XML 中存储的是绝对坐标:

<xmin>100</xmin>
<ymin>50</ymin>
<xmax>300</xmax>
<ymax>200</ymax>

👉 转换为 YOLO 的相对坐标(0~1):
 0 0.25 0.125 0.5 0.375
(格式:类别ID x_中心 y_中心 宽度 高度

(2) 自动生成类别映射
  • 扫描所有 XML 文件,自动提取类别名称(如 catdog)。
  • 为每个类别分配数字 ID(如 cat→0dog→1)。
​(3) 文件结构重组
VOC格式目录结构:                          YOLO格式目录结构:
D:/dataset/                              D:/dataset/
├── Annotations/                         ├── images/
│   ├── 001.xml                          │   ├── 001.jpg
│   └── 002.xml                          │   └── 002.jpg
└── JPEGImages/                          └── labels/├── 001.jpg                              ├── 001.txt└── 002.jpg                              └── 002.txt

为什么需要这个转换?

  • YOLO 不吃 XML:YOLO 系列模型训练时需要的是简单的 TXT 标注文件。
  • 统一标准:避免手动标注格式混乱。
  • 效率提升:自动化转换比手动处理快100倍。

完整代码:

如何使用?
  1. 确保你的 VOC 数据集有 Annotations/ 和 JPEGImages/ 目录。
  2. 修改代码中的路径:
    voc_data_path = '你的/VOC/数据集路径'
    yolo_data_path = '输出的/YOLO/路径'
  3. 运行脚本,得到可直接用于 YOLO 训练的数据集。
import os
import shutil
import xml.etree.ElementTree as ET# VOC格式数据集路径
voc_data_path = 'D:/YOLO/ultralytics-8.3.39/fall'
voc_annotations_path = os.path.join(voc_data_path, 'Annotations')
voc_images_path = os.path.join(voc_data_path, 'JPEGImages')# YOLO格式数据集保存路径
yolo_data_path = 'D:/YOLO/ultralytics-8.3.39/data'
yolo_images_path = os.path.join(yolo_data_path, 'images')
yolo_labels_path = os.path.join(yolo_data_path, 'labels')# 创建YOLO格式数据集目录
os.makedirs(yolo_images_path, exist_ok=True)
os.makedirs(yolo_labels_path, exist_ok=True)# 自动生成类别映射
class_mapping = {}
class_id = 0for voc_annotation in os.listdir(voc_annotations_path):if voc_annotation.endswith('.xml'):tree = ET.parse(os.path.join(voc_annotations_path, voc_annotation))root = tree.getroot()for obj in root.findall('object'):cls = obj.find('name').textif cls not in class_mapping:class_mapping[cls] = class_idclass_id += 1print("自动生成的类别映射:", class_mapping)def convert_voc_to_yolo(voc_annotation_file, yolo_label_file):tree = ET.parse(voc_annotation_file)root = tree.getroot()size = root.find('size')width = float(size.find('width').text)height = float(size.find('height').text)with open(yolo_label_file, 'w') as f:for obj in root.findall('object'):cls = obj.find('name').textif cls not in class_mapping:continuecls_id = class_mapping[cls]xmlbox = obj.find('bndbox')xmin = float(xmlbox.find('xmin').text)ymin = float(xmlbox.find('ymin').text)xmax = float(xmlbox.find('xmax').text)ymax = float(xmlbox.find('ymax').text)x_center = (xmin + xmax) / 2.0 / widthy_center = (ymin + ymax) / 2.0 / heightw = (xmax - xmin) / widthh = (ymax - ymin) / heightf.write(f"{cls_id} {x_center} {y_center} {w} {h}\n")# 遍历VOC数据集的Annotations目录,进行转换
for voc_annotation in os.listdir(voc_annotations_path):if voc_annotation.endswith('.xml'):voc_annotation_file = os.path.join(voc_annotations_path, voc_annotation)image_id = os.path.splitext(voc_annotation)[0]voc_image_file = os.path.join(voc_images_path, f"{image_id}.jpg")yolo_label_file = os.path.join(yolo_labels_path, f"{image_id}.txt")yolo_image_file = os.path.join(yolo_images_path, f"{image_id}.jpg")convert_voc_to_yolo(voc_annotation_file, yolo_label_file)if os.path.exists(voc_image_file):shutil.copy(voc_image_file, yolo_image_file)print("转换完成!")

二.模型处理:

1.训练模型:

import os
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
from ultralytics import YOLOmodel = YOLO("yolo11n.pt")  # Load a pretrained model
results = model.train(data="D:/YOLO/ultralytics-8.3.39/data.yaml",epochs=100, imgsz=640, batch=16,device=0,workers=0, iou=0.4)

2.使用模型:

import os
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
from ultralytics import YOLO# Load a model
model = YOLO("D:/YOLO/ultralytics-8.3.39/runs/detect/train5/weights/best.pt")# Perform object detection on an image
results = model("图片地址")
results[0].show()

3.pt转onnx:

import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'
from ultralytics import YOLO# 加载 YOLOv11 模型
model = YOLO('D:/YOLO/ultralytics-8.3.39/runs/detect/train3/weights/best.pt')# 导出为 ONNX 格式
model.export(format='onnx', imgsz=640)

三.数据分析:

对比不同训练过程的结果​(如不同模型或训练策略),通过图表展示以下指标:

  • 精度指标:Precision、Recall、mAP@50、mAP@50-95
  • 损失指标:训练集和验证集的Box/Class/DFL损失

项目目录:

项目目录/
├── plot_results.py          # 当前脚本
├── env/                     # 存放训练结果的目录
│   ├── results.csv          # 第一次训练结果
│   └── results-final.csv    # 第二次训练结果

 然后修改配置文件路径:

results_files = ['./env/results.csv',        # 第一个训练结果文件'./env/results-final.csv'   # 第二个训练结果文件
]custom_labels = ['yolov11',                 # 第一个结果的图例标签'yolov11-ema'              # 第二个结果的图例标签
]
  • 替换路径:将./env/改为你的实际结果文件路径(如runs/train/exp1/results.csv
  • 自定义标签:修改custom_labels中的名称,用于区分不同曲线(如"yolov11-baseline")

 修改对比指标:

# 示例:添加F1分数对比
metrics = ['metrics/precision(B)', 'metrics/recall(B)', 'metrics/mAP50(B)', 'metrics/F1'
]
labels = ['Precision', 'Recall', 'mAP@50', 'F1 Score'
]

调整图表布局:

plot_comparison(metrics, labels, custom_labels, layout=(3, 2))  # 改为3行2列

 保存图表:

plt.savefig('training_comparison.png', dpi=300, bbox_inches='tight')

下面是完整代码:

# -*- coding: utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt# 训练结果列表
results_files = ['./env/results.csv','./env/results-final.csv'
]# 与results_files顺序对应
custom_labels = ['yolov11','yolov11-ema',
]#
def plot_comparison(metrics, labels, custom_labels, layout=(2, 2)):fig, axes = plt.subplots(layout[0], layout[1], figsize=(15, 10))  # 创建网格布局axes = axes.flatten()  # 将子图对象展平,方便迭代for i, (metric_key, metric_label) in enumerate(zip(metrics, labels)):for file_path, custom_label in zip(results_files, custom_labels):df = pd.read_csv(file_path)# 清理列名中的多余空格df.columns = df.columns.str.strip()# 检查 'epoch' 列是否存在if 'epoch' not in df.columns:print(f"'epoch' column not found in {file_path}. Available columns: {df.columns}")continue# 检查目标指标列是否存在if metric_key not in df.columns:print(f"'{metric_key}' column not found in {file_path}. Available columns: {df.columns}")continue# 在对应的子图上绘制线条axes[i].plot(df['epoch'], df[metric_key], label=f'{custom_label}')axes[i].set_title(f' {metric_label}')axes[i].set_xlabel('Epochs')axes[i].set_ylabel(metric_label)axes[i].legend()plt.tight_layout()  # 自动调整子图布局,防止重叠plt.show()if __name__ == '__main__':# 精度指标metrics = ['metrics/precision(B)', 'metrics/recall(B)', 'metrics/mAP50(B)', 'metrics/mAP50-95(B)']labels = ['Precision', 'Recall', 'mAP@50', 'mAP@50-95']# 调用通用函数绘制精度对比图plot_comparison(metrics, labels, custom_labels, layout=(2, 2))# 损失指标loss_metrics = ['train/box_loss', 'train/cls_loss', 'train/dfl_loss', 'val/box_loss', 'val/cls_loss', 'val/dfl_loss']loss_labels = ['Train Box Loss', 'Train Class Loss', 'Train DFL Loss', 'Val Box Loss', 'Val Class Loss', 'Val DFL Loss']# 调用通用函数绘制损失对比图plot_comparison(loss_metrics, loss_labels, custom_labels, layout=(2, 3))


文章转载自:

http://MubGvPSN.tbcfj.cn
http://ujkn6Ncy.tbcfj.cn
http://9ASBk0Bl.tbcfj.cn
http://lO2L7iv9.tbcfj.cn
http://5nKfvnR4.tbcfj.cn
http://lX0uzKWb.tbcfj.cn
http://UdQeb0c8.tbcfj.cn
http://5dLS9dNu.tbcfj.cn
http://D8DMBNiv.tbcfj.cn
http://AsB2Bn50.tbcfj.cn
http://ZR5qUF9s.tbcfj.cn
http://6XbLSpTZ.tbcfj.cn
http://yLbQcFh5.tbcfj.cn
http://TTwNj2Uu.tbcfj.cn
http://QcRe36b0.tbcfj.cn
http://CBMqE7V5.tbcfj.cn
http://l4VxgqBX.tbcfj.cn
http://XZEISAAT.tbcfj.cn
http://uOWwWVrW.tbcfj.cn
http://oBiDVn5l.tbcfj.cn
http://g7SL8P3C.tbcfj.cn
http://zIhm6VDG.tbcfj.cn
http://GbmmAUgY.tbcfj.cn
http://T2V4RGaL.tbcfj.cn
http://Z6WvPGxf.tbcfj.cn
http://XzBvLY39.tbcfj.cn
http://HKNjGnxM.tbcfj.cn
http://kDzhgn9B.tbcfj.cn
http://G3SzNBtu.tbcfj.cn
http://OOOXeeDe.tbcfj.cn
http://www.dtcms.com/wzjs/755475.html

相关文章:

  • wordpress 企业网站 授权费怎么学互联网怎么赚钱
  • 免费网页空间代码南京seo推广优化
  • 医生做兼职有什么网站吗seo是什么职位的缩写
  • 网站建设方法总汇wordpress防伪查询主题
  • 网站怎样自己不花钱在电脑上做网页中德合作项目
  • 汕尾网站建设 生意好吗wordpress inerhtml
  • 珠海酒店网站建设公司网架公司十大排名榜
  • 网站开发设计图片wordpress创建大型菜单
  • 南宁定制建站icp网站建设
  • 济宁市松岳建设机械有限公司网站深圳保障性住房多少钱一平米
  • 做网站费用列入什么科目泉州seo代理商
  • 更换网站空间网址导航怎么卸载不掉
  • 上海城乡建设中级职称报名网站河南建设银行处理违章网站
  • 苏州做网站要多少钱房产网站搭建
  • 西部数码里面如何建设自己的网站网站备案到公司
  • 临沂网站制作方案网络域名侵权十大案例
  • 做网站实训心得体会上海网站络公司
  • 怎样在微信中做网站wordpress简约主题
  • 学习做网站网站建设技术发展趋势预测
  • 网站后台上传木马教程阿里云营销网站建设
  • 游艇 高端网站建设做网站用框架么
  • 京东网站建设过程seo下载站
  • 怎么建设影视网站网站打模块
  • 建设网站用什么好学习做网站需要多久
  • 灰色行业做网站阿里云com域名注册万网
  • 网络科技网站有哪些方面wordpress查看购物车不管用
  • 黄石手机网站建设中国建设协会官网
  • 企业网站一般包括哪些内容wordpress微信公众号插件
  • 辛集做网站公司安徽省建设工程安全协会网站
  • 美观网站建设哪家好软件外包开发