IEEE 流程
1. 创建环境
下载myenv_cv.yml
注意后缀名大小写,在anoconda prompt里面
conda env create -f "D:\Research\Conference\IEEE\2025\myenv_cv.yml"
遇到问题,pip failed
解决方法,先conda activate myevn这个环境
再在这个环境里面装剩下的pytorch
pip install torch==2.7.0+cu126 torchvision==0.22.0+cu126 torchaudio==2.7.0+cu126 --extra-index-url https://download.pytorch.org/whl/cu126
2.Label
软件下载
Release Binary v1.8.1 · HumanSignal/labelImg · GitHub
下载以后载入foler,要标注什么,记得每张图片都保存
3.训练
yolo-v8,用config.yaml
首先把XML格式的标注改成txt
import os
import xml.etree.ElementTree as ETxml_folder = 'C:/Users/extracted_frames/labels/train' #放XML的文件夹
img_folder = 'C:/Users/extracted_frames/images/train' #放图片的文件夹
output_folder = 'C:/Users/extracted_frames/labels/train' #输出txt的文件夹
class_map = {'huanghaer': 0} # 这里要记得对应你在LabelImg中标注的label名字 否则无效os.makedirs(output_folder, exist_ok=True)for xml_file in os.listdir(xml_folder):if not xml_file.endswith('.xml'):continuexml_path = os.path.join(xml_folder, xml_file)tree = ET.parse(xml_path)root = tree.getroot()img_width = int(root.find('size/width').text)img_height = int(root.find('size/height').text)txt_lines = []for obj in root.findall('object'):class_name = obj.find('name').textif class_name not in class_map:continueclass_id = class_map[class_name]bbox = obj.find('bndbox')xmin = int(bbox.find('xmin').text)ymin = int(bbox.find('ymin').text)xmax = int(bbox.find('xmax').text)ymax = int(bbox.find('ymax').text)x_center = ((xmin + xmax) / 2) / img_widthy_center = ((ymin + ymax) / 2) / img_heightbox_width = (xmax - xmin) / img_widthbox_height = (ymax - ymin) / img_heighttxt_lines.append(f"{class_id} {x_center:.6f} {y_center:.6f} {box_width:.6f} {box_height:.6f}")txt_filename = os.path.splitext(xml_file)[0] + ".txt"with open(os.path.join(output_folder, txt_filename), "w") as f:f.write("\n".join(txt_lines))
第一次没有成功,txt都是空的,因为我的class_map = {'huanghaer': 0} 要改成
class_map = {'yellow_flower': 0} 和label给出的名字一样
再次在conda的myenv中运行
yolo task=detect mode=train model=yolov8n.pt data=config.yaml epochs=50 imgsz=640 batch=1 verbose=False device=0 val=False
报错,删掉device=0
重新分布文件夹,必需是
D:\Research\Conference\IEEE\2025\frames
- train -label
yolo task=detect mode=train model=yolov8n.pt data="D:\Research\Conference\config.yaml" epochs=50 imgsz=640 batch=1 val=False
之前找不到yaml的路径,这里直接给
4. 结果
model=yolov8n.pt
Overriding model.yaml nc=80 with nc=1
-
你用的是 YOLOv8 的最小模型:
yolov8n.pt
(Nano) -
YOLO 默认是 COCO 80 类,这里它自动根据你
config.yaml
文件中的设置 将类别数量改为 1
Model summary: 225 layers, 3,011,043 parameters
Transferred 319/355 items from pretrained weights
-
网络一共 225 层,约 300 万参数
-
成功从预训练模型中加载了大部分权重(319/355 个)
train: Scanning D:\...\train\labels... 27 images, 0 backgrounds, 0 corrupt
val: Scanning D:\...\train\labels.cache... 27 images, 0 backgrounds, 0 corrupt
-
找到 27 张训练图像
-
没有背景图,也没有损坏图像
TensorBoard: Start with 'tensorboard --logdir runs\detect\train4'
你可以启动 TensorBoard 查看训练曲线