【小白】【超详细】从零开始搭建自己的YOLO

张开发
2026/4/12 17:05:27 15 分钟阅读

分享文章

【小白】【超详细】从零开始搭建自己的YOLO
特别致谢kidousCSDN同名目录环境准备素材准备模型训练前言在目前的深度学习领域中最主流的框架包括PyTorch、TensorFlow、Keras等其中PyTorch因其灵活性、易用性和高效的性能收到了学术界与工业界的广泛欢迎。本章的主要内容为Ultralytics工程的复现Ultralytics是一个专注于计算机视觉技术的公司以其开发的YOLOYou Only Look Once系列目标检测算法而闻名。YOLO是一种实时物体检测系统能够在视频的每一帧中同时预测多个物体的位置和类别。它因其速度和效率而在学术界和工业界得到了广泛的应用。Ultralytics工程中所提供的YOLO系列模型是开源的这使得研究人员、开发爱好者可以方便的使用这些先进算法。除了这些算法以外Ultralytics还提供了相关的服务与支持包括但不限于模型训练、优化、部署等方面的支持因此接触Ultralytics对想要入门CV的同学来说十分合适同学们可以在复现的过程中体会一个深度学习模型从无到有的过程。环境准备watt toolkitsteampp-windows密码1234打开链接加速后就能正常访问github了~VScodeVisual Studio Code - The open source AI code editor正常安装后打开如下图接下来安装两个拓展chinesepython安装中文后右下角会让你重启点击即可接下来搜索python下载标红的这个MiniforgeMiniforge是Miniconda的替代品处理超快下载超强而Miniconda是一种环境管理工具还有Anaconda臃肿的conda现在点击下面的链接Releases · conda-forge/miniforge找到适合自己系统的版本进行下载安装成功后按下win键下图所示搜索Miniforge会显示打开后出现以下我们输入以下指令mamba create -n yolo python3.11意思是用mamba创建一个名字叫做yolo的环境这个环境的python解释器版本为3.11等待弹出提示后输入y出现以下内容则代表新环境创建成功接着我们输入conda activate yolo我们发现最前面的括号里的内容变了我们可以输入conda env list 来查看我们有哪些环境*号代表当前我们所在的环境Gitgit是一个版本控制工具下载链接如下Git安装完成后打开Miniforge输入git --version出现类似下图则代表安装成功接着输入请替换你实际的名字和邮箱git config --global user.name 你的用户名git config --global user.email 你的邮箱输入完成后即可正常使用Git保持在Miniforge的终端内确保前面的环境名字为上文的yolo输入pip install ultralytics出现以下画面代表安装成功接着我们可以来到桌面等任意位置右键新建一个文件夹我们取名为X接着我们安装X-AnyLabeling也就是我们打标的工具打开以下链接Releases · CVHub520/X-AnyLabeling下载好后大概率会报告不安全这样就可以正常打开了打开后看到这么多英文不要怕立刻切换语言重新打开就是中文的啦除此之外我们还有更高阶的打开方法用GPU加速推荐使用这种方法我们回到我们之前的X文件夹打开它输入conda activate yolo保证进入正确环境接着输入git clone https://github.com/CVHub520/X-AnyLabeling/表示用git把这个链接的东西下载到当前文件夹若出现以下情况代表无法找到github是一种网络环境问题可以用这个工具进行解决Releases · docmirror/dev-sidecar更详细的请看相关教程若出现以下画面则代表下载成功我们输入cd .\X-AnyLabeling\代表进入这个目录选择以下一种方式进行安装只有电脑有GPU才有可能有CUDA要首先知道的CUDA版本需要输入nvidia-smi看到右上角对应你的CUDA版本出现以下画面代表安装成功接着我们找到我们的X文件夹打开X-AnyLabeling文件夹左侧打开对应的文件右下角选择解释器选择我们的yolo环境出现以下画面代表启动正确我们发现我们打开了同一个界面这样的好处是打标的时候更快更稳定且我们还可以根据自己的需求进行自定义如自定义快捷键和自定义模型等操作我们再来到X这个文件夹输入git clone https://github.com/Linmoqian/yolo_train这是我为大家准备的相关脚本省去大家查资料敲代码的功夫以同样的方法用vscode打开我们新下的文件夹素材准备接下来我们去网上找10张动物的照片(PNG或JPG格式当然我已经为大家准备好了放在了your_data路径下我们回到anylabeling打开your_data的文件夹可能出现以下提示这是系统检测到部分图片包含EXIF方向信息通常是手机拍摄的照片会带有这种信息记录照片的旋转方向如果不处理这些EXIF方向数据直接进行图像标注可能会导致标注位置与实际图像不匹配训练模型时出现异常标注结果不准确因此选择OK等待处理完成处理完成不要着急打标要再一次打开图片所在的文件夹进行刷新,避免未加载exe版本就会出现这个问题源码版本不清楚但是为了以防万一还是重新打开一下吧~接着我们点击右键创建多边形或者创建矩形选中后输入对应的标签接着我们打下一张以此类推打完为止确保自己全部打完我们看到图片所在的文件夹会发现多出来了json文件json文件里便记录了刚才我们打标时的信息详细如下字段值作用说明version4.0.0-beta.3标注工具的版本号如LabelMeflags{}全局标志位用于图像级别的分类标签imagePath1.jpg被标注图像的文件名/路径imageDatanull图像的base64编码数据null表示未嵌入imageHeight1390图像高度像素imageWidth1200图像宽度像素字段值作用说明labelcat类别标签猫scorenull检测置信度手动标注为null自动检测时有值shape_typerectangle标注形状类型矩形框points[[x1,y1], [x2,y2], [x3,y3], [x4,y4]]边界框坐标点4个顶点group_idnull分组ID用于关联多个标注description文字描述difficultfalse是否困难样本用于评估flags{}该标注的特定标志attributes{}扩展属性如颜色、姿态等kie_linking[]关键信息提取的链接关系每个shape代表一个标注框但是我们先不管那么多下一步找到我为大家提供的这个脚本json2txt.py注意需要将类别映射修改再换到下一个脚本,进行数据集划分DataProess.py接下来修改数据集配置修改训练参数配置根据自己的硬件能力量力而行噢训练回到佛祖保佑的代码进行运行出现以下情况代表我们训练成功训练的开头会打印模型网络参数包括模型每一层所使用的模块module以及该层的参数arguementsfrom表示该层的输入是从第几层来的若为-1则表示该层是输入是上一层是输出n表示该模块的重复次数arguement中的第一个元素一般表示输入维度第二个元素一般表示输出维度若为卷积层Conv第三个元素则表示卷积核大小kernal_size第四个元素表示卷积核每次移动的步幅stride训练的过程中会打印每个epoch的各类信息包括显存占用GPU_mem、边界框损失box_loss)、分割损失seg_loss)、分类损失cls_loss)、分布焦点损失dfl_loss、实例数量Instance、图像大小Size以及基于分类Class和掩码Mask的精确率Precision—P、召回率Recall—R、IoU阈值为50的平均精度均值mAP50和IoU阈值范围在50到95之间的平均精度均值mAP50-95训练结束后会模型进行一次验证(Val打印验证结构会回将模型的权重文件保存在runs中如下现在来看看训练的效果吧效果很好找到这里的best.pt就是训练好的模型权重啦~我们可以把它导为其他类型的格式如ONNX在边缘设备上进行推理想要测试推理的效果千万不要拿给模型训练过的照片去测评不然这和期末考试老师直接给你答案有什么区别有这好事推理代码如下自己尝试一下吧~接下大家可以尝试标注自己的好兄弟为dog然后尝试调用电脑摄像头进行实时推理至于如何调整YOLO的模型架构、制作自己的模块下一期出猴年马月吧

更多文章