1.1首先在gitgup上下载yolov9,下载收藏最多的最优
网址:
Repository search results · GitHub
1.2下载压缩文件
1.3顺手下载yolov9初始权重
1.4下载完后把yolov9放入pycharm,并把yolov9初始权值放到目录下
1.5然后开始创建环境
命令:
conda create --name yolov9 python=3.8
1.6激活环境
1.7设置环境
1.8添加环境
1.9找到自己创建环境的路径添加,一般大差不差,都在anaconda下
1.10点击现有环境,可用于所有项目根据自己需求点击
1.11完事点击应用,点击确定,环境创建完毕
1.12开始安装所需库
命令:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
1.13报错就加上绝对路径运行
命令:
pip install -r E:\MaanshanTrainModel\yolov9-main/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
1.14下载完库,开始拿到自己的数据集标注完的数据集分为原图和txt格式,直接下拉到最下边,改标签和图片绝对路径就行,代码帮你搞定创建文件夹
import os import shutil from sklearn.model_selection import train_test_split def split_dataset(image_dir, label_dir, train_ratio, val_ratio, test_ratio=None): # 支持的图像文件扩展名 image_extensions = ['.bmp', '.jpg', '.png'] # 获取所有支持的图像文件名 all_images = [f for f in os.listdir(image_dir) if any(f.endswith(ext) for ext in image_extensions)] # 创建对应的标签文件名列表,假设标签文件扩展名为 .xml all_labels = [os.path.splitext(f)[0] + '.txt' for f in all_images] # 按比例划分训练集和验证集(以及可选的测试集) train_images, temp_images, train_labels, temp_labels = train_test_split( all_images, all_labels, test_size=(1 - train_ratio), random_state=42 ) # 如果指定了测试集比例 if test_ratio: # 调整验证集比例,确保验证集和测试集的比例正确 val_ratio_adjusted = val_ratio / (val_ratio + test_ratio) # 按调整后的比例划分验证集和测试集 val_images, test_images, val_labels, test_labels = train_test_split( temp_images, temp_labels, test_size=(1 - val_ratio_adjusted), random_state=42 ) else: # 如果未指定测试集比例,全部分配给验证集 val_images, val_labels = temp_images, temp_labels test_images, test_labels = [], [] # 创建目标目录,如果不存在则创建 os.makedirs('datasets/images/train', exist_ok=True) os.makedirs('datasets/images/val', exist_ok=True) os.makedirs('datasets/images/test', exist_ok=True) os.makedirs('datasets/labels/train', exist_ok=True) os.makedirs('datasets/labels/val', exist_ok=True) os.makedirs('datasets/labels/test', exist_ok=True) # 复制训练集文件到目标目录 for img, lbl in zip(train_images, train_labels): shutil.copy(os.path.join(image_dir, img), os.path.join('datasets/images/train', img)) shutil.copy(os.path.join(label_dir, lbl), os.path.join('datasets/labels/train', lbl)) # 复制验证集文件到目标目录 for img, lbl in zip(val_images, val_labels): shutil.copy(os.path.join(image_dir, img), os.path.join('datasets/images/val', img)) shutil.copy(os.path.join(label_dir, lbl), os.path.join('datasets/labels/val', lbl)) # 复制测试集文件到目标目录(如果有测试集) for img, lbl in zip(test_images, test_labels): shutil.copy(os.path.join(image_dir, img), os.path.join('datasets/images/test', img)) shutil.copy(os.path.join(label_dir, lbl), os.path.join('datasets/labels/test', lbl)) # 打印训练集、验证集和测试集的图片数量 print(f"Training images: {len(train_images)}") print(f"Validation images: {len(val_images)}") if test_ratio: print(f"Testing images: {len(test_images)}") # 示例使用 image_dir = r'C:\Users\admin\Desktop\VOCdevkit\images\train' # 图像文件目录 label_dir = r'C:\Users\admin\Desktop\VOCdevkit\labels\train' # 标签文件目录 # 按照 80% 训练集,10% 验证集,10% 测试集的比例划分数据集 split_dataset(image_dir, label_dir, train_ratio=0.8, val_ratio=0.1, test_ratio=0.1)
1.15运行代码自动排序好省的自己慢慢创建
1.16然后调整train代码,更改这四条就行
具体如下:
–weights : 此处更改为yolov9-c.pt的绝对路径 #官网下的那俩初始权重 –cfg : 此处更改为yolov9-c.yaml的绝对路径 –data : 此处更改为datasets.yaml的绝对路径 ##就是自己创建的datastes.yaml文件 –hyp : 此处更改为data/hyps/hyp.scratch-high.yaml 原本是data/hyps/hyp.scratch-low.yaml但该文件内并未找到