# Yolo **Repository Path**: mengxiangdu/yolo ## Basic Information - **Project Name**: Yolo - **Description**: 用libtorch实现的YoloV1\V3\V5 - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2024-11-28 - **Last Updated**: 2026-03-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Yolo #### 介绍 用libtorch2.3.1实现的YoloV1、YoloV3、YoloV5s #### 软件架构 本代码依据VOC2012和COCO数据集开发。已测试正确,但在验证集上表现一般般。尚有BUG正在解决 #### 安装教程 1. 我用的是VS2019、libtorch2.3.1和OpenCV任意版本用来读图片。需要自行下载libtorch、OpenCV 2. 本项目使用了VS里的props文件,如果出现依赖问题需要从项目配置文件中删掉关于props文件的引用 3. libtorch CUDA版使用起来需要解决一些依赖问题,可以网上搜解决办法。CUDA版直接用可能跑不起来,要添加预定义的一串符号;如果在CPU里面处理Tensor类,可能还需要下载mkl的动态链接库 4. 引用了tinyxml2库读xml文件。和json库读取json文件,这个库读取大文件速度很慢 5. libtorch官方更新的很快,需要检查它使用的是哪一版C++标准 #### 使用说明 1. 代码中有YoloV1的网络模型,损失函数计算,数据集的加载和训练验证的函数 2. YoloV1的模型是容易理解的,比较典型的。前半部分是串联的卷积层,后半部分是全连接层。不过它的损失函数是自定义的,这部分需要着重理解 3. 根据其他资料,在VOC2012数据集中YoloV1的输出30维的结果,其中表示20个分类的数据在处理过程中可以先用softmax函数使其和为1再找最大可能的结果。这是可以改动的点。目前代码的写法是直接在20个分类中找最大值了,没有经过softmax,参见YoloV1.cpp中的outputToVector函数中的argmax那一行。 4. 网上不同教程对YoloV5的设计略有区别。比如有的说输入图像大小为640×640,而另外的人说是608×608;有的卷积层后面的激活函数用的是leakyReLU,而另外的用的是Mish;有的输入后第一个结构是自定义的Focus层,而其他的用卷积层代替。此外在网络各层之间的先后顺序也不相同,本代码是其中一种实现 5. YoloV5的主要技巧在于训练。有标签平滑策略,矩形框损失采用CIOU损失,标签数量扩展,数据增强采用多图融合等 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat\_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)