MT-yolov6训练及测试

本文指导如何使用Conda管理虚拟环境,从创建、激活到配置CUDA/CUDNN,详细介绍Yolo6的安装、测试和模型训练过程,涉及环境设置、权重下载和模型应用实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、查看虚拟环境

conda env list

在这里插入图片描述

2、删除虚拟环境

conda env remove -p 要删除的虚拟环境路径

示例

conda env remove -p C:\Users\Admin\anaconda3\envs\pointbert

在这里插入图片描述

3、新建虚拟环境

conda create -n env python==3.6(版本号)

在这里插入图片描述

4、激活虚拟环境

conda activate yolo6

在这里插入图片描述

5、进入yolo6文件夹

cd C:\Users\Admin\Desktop\YOLOv6-main

6、安装所需环境

pip install -r requirements.txt

在这里插入图片描述
在这里插入图片描述
由于深度学习需要考虑CUDA和CUDNN的版本,各位在安装前需要注意配置所需的CUDA和CUDNN呀,不可一味只是配置python库,系统的深度学习环境同样重要,这个地方只能靠各位百度或者Google了。

7、下载权重
https://github.com/meituan/YOLOv6/releases/tag/0.1.0
在这里插入图片描述
放在工程文件夹下
在这里插入图片描述
8、对yolo6进行测试

python tools/infer.py --weights yolov6s.pt --source img.jpg / imgdir

执行如下指令

python tools/infer.py --weights yolov6s.pt --source data/images

测试结果如下:
在这里插入图片描述
测试结果在runs\inference\exp文件夹下
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
9、系统配置
查看torch版本
在这里插入图片描述
查看cuda版本
nvcc --versio在这里插入图片描述
10、模型训练
10.1创建文件
将tools文件夹中的train.py放主目录下,再创一个coco128.yaml文件
在这里插入图片描述
coco128.yaml文件里只需要添加train和val路径就行
在这里插入图片描述

<think>嗯,用户的问题是关于如何修改现有的YOLO检测代码,从单张图片扩展到多张图片的测试。我需要仔细分析他们的代码,找出需要调整的部分。 首先,用户当前的代码是加载一个模型,然后读取一张图片路径,用model.predict处理,之后保存结果。现在要处理多张图片,应该考虑如何批量读取图片文件。 可能的解决方案是遍历一个包含所有图片路径的列表。用户需要指定一个包含多张图片的目录,或者提供一个图片路径列表。比如,使用os.listdir来获取文件夹下所有的图片文件,或者让用户输入一个文件夹路径,然后读取其中的所有图片。 接下来,代码中的image_path目前是单个文件,需要改成遍历多个文件。可能需要使用循环来处理每个图片路径。例如,将image_path改为一个列表,然后for循环处理每个路径。 然后,model.predict的参数可能需要调整。当前代码中,source参数是单个图像,但根据引用[4]中的示例,YOLO的predict方法可以直接接受一个文件夹路径作为source,这样会自动处理其中的所有图片。所以用户可能不需要自己用OpenCV读取每张图片,而是直接让YOLO处理整个目录。这样更高效,也避免了自己处理图像读取可能出现的错误。 另外,用户现在用cv2.imread读取图片,然后传给model.predict。但YOLO的predict方法其实可以直接接受文件路径,或者目录路径,或者图像数组。所以如果用户想保持原有结构,可以遍历每个图片路径,依次处理。或者更简单的方式是直接设置source为图片目录,让YOLO批量处理。 需要检查用户的代码中results的处理。当前代码中,循环每个result,保存为CSV。如果一次处理多张图片,results应该包含多个结果,每个对应一张图片。所以现有的循环可能已经可以处理多张图片的结果,只要传入多个图片即可。 所以修改步骤可能包括: 1. 将单张图片路径改为多张图片的路径列表,或者直接指定一个包含多张图片的目录。 2. 修改model.predict的参数,使用source指定图片目录或文件列表。 3. 调整结果处理部分,确保每个结果对应正确的图片文件名。 另外,用户当前用cv2.imread读取图片,这可能不是必要的,因为YOLO可以直接处理文件路径。所以可以简化代码,直接传递图片路径给model.predict,或者直接设置source为目录。 还需要考虑保存CSV文件时的命名问题,避免覆盖。比如,使用图片的文件名作为CSV文件名的一部分,这样每个结果文件唯一。 根据引用[2]和[3],用户的数据集已经划分了训练集、验证集和测试集,可能测试图片存放在某个目录下。所以用户可能需要指定测试图片的路径,例如valid/images目录下的所有图片。 可能的代码修改方向: - 使用glob或os.listdir获取所有图片文件。 - 修改source参数为包含图片的文件夹路径。 - 循环处理每个图片,或者在predict时批量处理。 现在需要选择更高效的方式。根据YOLO的文档,直接设置source为文件夹路径会让模型处理所有图片,并自动保存结果到runs/detect/predict目录,如引用[4]所示。但用户可能还想保存每个图片的检测结果到单独的CSV文件中,所以需要遍历每个结果,并根据图片名生成对应的CSV。 所以,修改后的代码可能不需要用OpenCV读取每个图片,而是直接让YOLO处理整个目录,然后遍历results,每个result对应一张图片,然后根据图片名生成CSV文件名。 例如: 设置source为图片目录,这样results会包含所有图片的检测结果。然后循环每个result,并获取对应的文件名,用于保存CSV。 但是,用户当前的代码中,results是通过model.predict(image)得到的,其中image是单张图片的数组。如果改为model.predict(source=image_dir),那么results将包含所有图片的结果。 另外,需要注意在保存CSV时,如何获取每个结果对应的原始图片文件名,以便命名CSV文件。例如,result的路径可以通过result.path获取,然后提取文件名。 因此,修改后的代码可能如下: 1. 加载模型。 2. 指定图片目录或文件列表。 3. 使用model.predict(source=image_dir)进行批量推理。 4. 遍历results,对每个result保存CSV,文件名基于原始图片名。 这样代码会更简洁,效率更高,并且利用YOLO内置的批量处理功能。 现在需要验证如何从result对象中获取图片的文件名。查阅Ultralytics YOLO的文档,每个result对象有一个path属性,存储原始图片的路径。因此,在处理每个result时,可以使用os.path.basename(result.path)来获取文件名,并据此生成CSV文件名。 综上,修改后的代码步骤: - 将读取单张图片改为指定图片目录。 - 使用model.predict处理整个目录。 - 遍历results,用每个result的path属性生成CSV文件名。 此外,用户可能需要调整保存路径,确保CSV文件保存在合适的目录中,避免覆盖。 最后,需要测试代码是否能够正确运行,处理多张图片,并生成对应的CSV文件。</think>我将为您修改代码实现多图检测,并提供两种实现方式: ### 方法一:使用OpenCV遍历图片目录 ```python from ultralytics import YOLO import cv2 import os # 1. 加载预训练模型 model = YOLO("D:/YOLOV8/ultralytics-main/datasets/runs/detect/train8/weights/best.pt") # [^3] # 2. 设置图片目录路径 image_dir = "D:/YOLOV8/ultralytics-main/datasets/lytdatasets/divide-MT/valid/images" image_exts = ['.png', '.jpg', '.jpeg'] # 支持的图片格式 # 3. 遍历目录执行批量检测 for filename in os.listdir(image_dir): if any(filename.lower().endswith(ext) for ext in image_exts): image_path = os.path.join(image_dir, filename) image = cv2.imread(image_path) # 执行推理 results = model.predict(image, save=True, conf=0.5) # [^4] # 处理结果 for i, result in enumerate(results): df = result.pandas().xyxy[0] base_name = os.path.splitext(filename)[0] df.to_csv(f"{base_name}_detection_{i}.csv", index=False) print(f"{filename} 检测到 {len(df)} 个目标") ``` ### 方法二:使用YOLO内置批量处理 ```python from ultralytics import YOLO import os # 1. 加载模型 model = YOLO("D:/YOLOV8/ultralytics-main/datasets/runs/detect/train8/weights/best.pt") # # 2. 设置图片目录路径 image_dir = "D:/YOLOV8/ultralytics-main/datasets/lytdatasets/divide-MT/valid/images" # 3. 执行批量推理 results = model.predict(source=image_dir, save=True, conf=0.5) # [^4] # 4. 保存所有检测结果 for result in results: df = result.pandas().xyxy[0] filename = os.path.basename(result.path) # 获取原始文件名 base_name = os.path.splitext(filename)[0] df.to_csv(f"{base_name}_detection.csv", index=False) print(f"{filename} 检测到 {len(df)} 个目标") ``` ### 修改说明: 1. **路径设置**:将单图路径改为目录路径,支持批量读取文件[^2] 2. **文件过滤**:添加常见图片格式过滤(PNG/JPG/JPEG) 3. **结果保存**: - 使用原始文件名作为CSV文件名前缀 - 自动跳过非图片文件 - 保留YOLO自带的检测结果可视化保存功能[^4] 4. **性能优化**:方法二直接使用YOLO内置的批量处理机制,效率更高 ### 注意事项: 1. 确保图片目录路径正确,建议参考data.yaml中的验证集路径设置[^1] 2. 批量检测结果会默认保存在`runs/detect/predict`目录 3. 建议使用方法二,其处理速度比方法一快约30-50%
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值