1)conda
conda是一个包和环境管理工具,用于创建、管理和切换python的虚拟环境。它允许你在不同项目间隔离环境,避免环境冲突。anaconda和miniconda是conda的发行版,前者包含大量预装包,适合初学者,后者精简,仅包含基本组件。安装miniconda后,可通过命令行创建、列出、激活、删除环境,以及安装和卸载包。对于开发者,conda提供了一种高效管理python环境和包的方式。在anaconda或miniconda中,可以方便的创建多个python虚拟环境,方便多个python项目同时开发的时候,每个项目都有自己独立的python开发环境。
miniconda下载地址:
清华大学镜像
Index of /anaconda/miniconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
建议使用清华大学镜像,国内下载速度较快。

安装教程可在优快云上搜索。
conda在windows下的运行窗口:

2)pycharm
pycharm是一种python IDE(windows下集成开发环境),带有一整套可以帮助用户在使用python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制。
pycharm community edition下载地址:PyCharm: The only Python IDE you need
安装教程可在优快云上搜索。
下图展示了一个pycharm窗体,pycharm中加载了yolo11仓库代码ultralytics-main到工程中,并设置python解释器。

3)YOLO11下载
YOLO11仓库下载地址:https://github.com/ultralytics/ultralytics

下载最新的代码压缩包,解压后为一个ultralytics-main文件夹。
4)创建虚拟环境
打开conda的prompt:

conda下创建yolo11虚拟环境:
| conda create -n yolo11 python==3.8 |
激活虚拟环境:
| conda activate yolo11 |
开始安装cuda版的pytorch。首先,需要知道自己主机的GPU型号所支持的最大CUDA版本:
| nvidia-smi |

可在优快云中搜索一下,比较稳定的pytorch版本。进入pytorch官网(链接),找到对应的版本,复制针对windows的指令执行,比如:
| conda install pytorch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 pytorch-cuda=11.8 -c pytorch -c nvidia |
最后,进入到ultralytics-main目录路径下:
| pip install ultralytics |
如果在使用的过程中,可能会提示需要安装一些依赖库,百度搜索安装的指令即可。
5)准备数据集
以东北大学NEU-DET数据集为例,生成YOLO11可用的VOC格式目标检测数据集。NEU-DET的数据集下载链接为:东北大学主页平台 宋克臣--中文主页--数据集
我们按照下面所示准备好文件夹:
| NEU-DETvoc # 文件夹名 Annotations # 标签文件夹 xml文件 # NEU-DET的1800个标签文件,VOC格式,labelimg可直接调用 images #图像文件夹 jpg图像 # NEU-DET的1800个图像,与Annotations中xml文件对应 ImageSets # 文件夹 Main # 文件夹,空,保存数据集划分的test、train、trainval和val labels #文件夹,空,保存每一个图片yolo_txt文件,格式为:类别序号 x y w h |
准备好生成YOLO11可用的VOC格式数据集工具,下载链接为:https://download.youkuaiyun.com/download/as_grf/90706399
工具主要包括:
| ① clauculate_anchors.py(对于需要先验anchor框的YOLO,可通过这个程序聚类获得) 会调用 kmeans.py 聚类生成新anchors.txt的文件,但需要修改ANNOTATION_PATH、CLASS_NAMES、 ANCHORS_TXT_PATH;生成的anchors.txt文件第二行 Best Anchors就是手动获取到的anchors的值。 ②-1 运行split_train_val.py # 这个是按照图片划分,可能存在类别不均衡问题 会在ImagesSets\Main下生成 test.txt、train.txt、trainval.txt、val.txt,不含路径。 ②-2运行xml_split_trainval.py # 这个是按照类别均衡划分,且乱序 会在ImagesSets\Main下生成 test.txt、train.txt、val.txt,不含路径。 还生成trainval_ratio.txt, 包含了划分的信息。 ③ voc_label.py 在labels文件夹中生成不同图像的标注文件。每个图像对应一个txt文件,文件每一行为一个目标的信息, 包括class, x_center, y_center, width, height格式,即为 yolo_txt格式; 生成test.txt、train.txt、val.txt,写有划分后图像所在位置的绝对路径,如train.txt就含有所有训练集图像 的绝对路径。 ④ 运行labels.py 生成类别labels.txt,类别名。 |
这些工具程序,里边有不少路径需要按照自己现有的情况修改,运行后会生成:
| NEU-DETvoc # 文件夹名 Annotations # 标签文件夹 xml文件 # NEU-DET的1800个标签文件,VOC格式,labelimg可直接调用 images #图像文件夹 jpg图像 # NEU-DET的1800个图像,与Annotations中xml文件对应 ImageSets # 文件夹 Main # 文件夹 test.txt # 测试图片名文件 train.txt # 训练图片名文件 trainval.txt # 训练+验证图片名文件 val.txt # 验证图片名文件 labels #文件夹 *.txt # NEU-DET的1800个图片yolo_txt文件,格式为:类别序号 x y w h |
然后,在NEU-DETvoc文件夹相同目录下准备neu-det.yaml文件如下:
| train: NEU-DETvoc/train.txt val: NEU-DETvoc/val.txt test: NEU-DETvoc/test.txt # number of classes nc: 6 #class names names: ["crazing", "inclusion", "patches", "pitted_surface", "rolled-in_scale", "scratches"] |
这里NEU-DETvoc文件夹所在的路径为:./data/NEU-DET,其中data文件夹在YOLO11的ultralytics-main目录下。
6)训练、验证、预测模型
在ultralytics-main目录下写一个train.py,可以修改ultralytics/cfg/default.yaml里的设置与参数;
| import warnings warnings.filterwarnings('ignore') from ultralytics import YOLO
if __name__ == '__main__': model = YOLO('yolo11.yaml') model.load('yolo11n.pt') # 加载预训练权重 model.train(data='./data/NEU-DET/neu-det.yaml', cache=False, imgsz=640, epochs=300, single_cls=False, batch=16, close_mosaic=0, workers=0, device='0', optimizer='SGD', resume=False, amp=False, project='runs/train', name='exp-yolo11', ) |
python train.py即可训练;
下面是一个val.py的代码:
| import warnings warnings.filterwarnings('ignore') from ultralytics import YOLO if __name__ == '__main__': model = YOLO('runs/train/exp-yolo11/weights/best.pt') model.val(data='./data/NEU-DET/neu-det.yaml', split='val', # 测试可以改为 split='test', imgsz=640, batch=8, mode='val', # 测试可以改为 mode='test', save=True, project='runs/val', # 测试可以改为 project='runs/test', name='exp-yolo11', ) |
python val.py即可验证或测试;
下面是一个predict.py的代码:
| import warnings warnings.filterwarnings('ignore') from ultralytics import YOLO if __name__ == '__main__': model = YOLO('runs/train/exp-yolo11/weights/best.pt') model.predict(source='data/NEU-DET/images', imgsz=640, batch=16, mode='predict', show=True, save=True, project='runs/predict', name='exp-yolo11, ) |
python predict.py即可预测。
基于NEU-DET生成YOLO11的VOC数据集
23万+

被折叠的 条评论
为什么被折叠?



