1 yolov3代码

两个最经典、最适合学习的开源仓库。你可以直接复制下面的地址,在浏览器中打开或使用 git clone命令下载。

1.1 官方维护版(Ultralytics)

这是 YOLO 系列官方团队维护的版本,代码质量最高,文档最全,强烈推荐新手使用。

仓库地址:https://github.com/ultralytics/yolov3

它是一个 基于 PyTorch、采用 YOLOv5 工程架构风格实现的 YOLOv3 目标检测框架。
不是官方 YOLOv3(Darknet/C)原版,但功能等价,且更易用、可扩展、支持现代训练技巧。

特点:代码结构清晰,支持一键训练和推理,社区活跃,遇到问题容易找到解决方案。

1.2 经典复现版(PyTorch-YOLOv3)

这是社区大神 Erik Linder-Norén 的复现版本,代码非常简洁,非常适合用来逐行阅读学习算法原理。

仓库地址:https://github.com/eriklindernoren/PyTorch-YOLOv3

特点:代码逻辑直白,没有太多工程化封装,能让你清晰地看到 YOLOv3 的每一个细节。

1.3 下载与依赖库安装

建议先下载 Ultralytics 版本,因为它最容易跑通,能让你快速建立信心。

在pytorch环境(一般anaconda环境)里执行如下命令来安装所需依赖库:
pip install -r requirements.txt_

1.4 网盘代码及权重

通过网盘分享的文件:yolo源码及权重
链接: https://pan.baidu.com/s/1Q3xQAq3eXT0gLTVxQhAftg?pwd=p72d 提取码: p72d

本文yolov3代码和权重(权重要放到代码根目录下,省去运行下载的步骤)。

2 运行环境准备

pytorch环境搭建见其他博客。

三种运行方式:命令行运行,vscode运行(直接运行和debug模式)、pycharm运行(直接运行和debug模式)。

2.1 命令行运行

windows下win+R 输入cmd即可进入终端,然后可以通过命令进入anaconda环境,具体不再详述。

python detect.py --source data/images/bus.jpg

上述命令,默认是yolov3-tiny.pt权重,原因:yolov3-tiny.pt小,下载快,适合作为默认演示模型,保证任何人都能快速跑通。
如果根目录没有yolov3-tiny.pt,就会下载它,然后运行。如下

detect: weights=yolov3-tiny.pt, source=data\images\bus.jpg, data=data\coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs\detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False, vid_stride=1
YOLOv3  v9.6.0-299-ga3e679a Python-3.10.18 torch-2.5.1 CPU

Fusing layers... 
yolov3-tiny summary: 48 layers, 8849182 parameters, 0 gradients, 13.2 GFLOPs
image 1/1 D:\code\open\yolo\yolov3\data\images\bus.jpg: 640x480 4 persons, 1 bus, 1 skateboard, 1 surfboard, 114.7ms
Speed: 1.0ms pre-process, 114.7ms inference, 1.0ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs\detect\exp2

其结果图片如下:
在这里插入图片描述

完整版 yolov3.pt大,下载慢。那么怎么换成完整版 yolov3.pt?如下命令行指定:

python detect.py --weights yolov3.pt --source data/images/bus.jpg

然后它就查看本地有没有,没有就下载yolov3.pt并运行,如下结果:

(pytorch-cpu) D:\code\open\yolo\yolov3>python detect.py --weights yolov3.pt --source data/images/bus.jpg
detect: weights=['yolov3.pt'], source=data/images/bus.jpg, data=data\coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, 
device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs\detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False, vid_stride=1
YOLOv3  v9.6.0-299-ga3e679a Python-3.10.18 torch-2.5.1 CPU

Downloading https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov3.pt to yolov3.pt...
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████| 119M/119M [38:28<00:00, 53.8kB/s] 

Fusing layers... 
yolov3 summary: 261 layers, 61922845 parameters, 0 gradients, 155.9 GFLOPs
image 1/1 D:\code\open\yolo\yolov3\data\images\bus.jpg: 640x480 4 persons, 1 bicycle, 1 bus, 813.7ms
Speed: 2.0ms pre-process, 813.7ms inference, 15.5ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs\detect\exp2

如下保存的结果图:
在这里插入图片描述
这比 yolov3-tiny多了 bicycle这种小目标,去除了误检测的,说明完整版模型确实更强、更细、更准确。但是消耗时间越久。
如下结果对比:
在这里插入图片描述
注意:我是在 CPU 环境​ 下跑的,所以 800ms+ 是正常的(笔记本电脑性能不行)。如果有 NVIDIA 显卡,用 GPU 加速后可以达到 20~50ms​ 左右。

2.2 vscode运行

为啥要在vscode里执行?
在 VSCode 中:
(1)可以使用 anaconda的pytorch环境,直接运行。可以替代pycharm的运行模式。
(2)能打断点、看变量、调试代码。这块呢又能取代pycharm的debug模式。
(3)能开终端,直接进入anaconda环境命令运行,比如可以运行python detect.py --weights yolov3.pt --source data/images/bus.jpg

可见,vscode插件生态太好了,另外还能远程链接。

2.2.1 在vscode里使用anaconda环境:

打开yolov3代码,
按 Ctrl+Shift+P,搜索 Python: Select Interpreter。
在这里插入图片描述
如果没有,则去extension里install下python,然后按 Ctrl + Shift + P→ Developer: Reload Window重载一下。
如果有,选中后,它会罗列你电脑里的python环境,如下:
在这里插入图片描述
我就选择Python 3.10.18 (pytorch-cpu) D:\softs\anaconda\envs\pytorch-cpu\python.exe,这个是2.1命令行跑通的。

选中后,VSCode 右下角状态栏会显示Python 3.10.18 (pytorch-cpu)
在这里插入图片描述
注意,右下角有两个。
左边(解释器):决定你的代码用哪个 Python 环境运行(比如 pytorch-cpu )。
右边(语言服务器):决定 VS Code 的智能提示、错误检查、类型推断、自动补全等功能基于哪个 Python 版本和库来分析你的代码。
如果它们不一致,你可能会遇到:
代码有语法高亮但没智能提示(因为语言服务器用的是旧版)报错说“模块未找到”,但你明明装了(因为语言服务器在另一个环境找包)类型提示错误或缺失。

然后在 VSCode 的终端里,输入:conda activate pytorch-cpu
在这里插入图片描述

执行第1节命令就可以了,这点它就是具有终端敲命令行的功能。

如果你觉得每次都要敲 conda activate pytorch-cpu很烦,可以设置 VSCode 自动激活:
按 Ctrl + Shift + P→ 输入>Preferences:Open User Settings (JSON)
在打开的 settings.json里加这一段:

{
    "terminal.integrated.defaultProfile.windows": "Command Prompt",
    "terminal.integrated.profiles.windows": {
        "Command Prompt": {
            "path": "cmd.exe",
            "args": ["/K", "d:\\softs\\anaconda\\Scripts\\activate.bat pytorch-cpu"],
            "icon": "terminal-cmd"
        },
        "PowerShell": {
            "source": "PowerShell",
            "args": [
                "-ExecutionPolicy",
                "Bypass",
                "-NoExit",
                "-Command",
                "& 'd:\\softs\\anaconda\\shell\\condabin\\conda-hook.ps1'; conda activate 'd:\\softs\\anaconda\\envs\\pytorch-cpu'"
            ]
        }
    }
}

注意:路径要改成你自己的 Anaconda 安装路径!

然后,你每次打开终端时自动进入anconda环境。

2.2.2 直接运行

在vscode新建demo.py复制如下内容:

# demo-callrun.py
# 如下命令的对应的最简demo
# python detect.py --weights yolov3.pt --source data/images/bus.jpg
from detect import main, parse_opt

opt = parse_opt()
opt.weights = 'yolov3.pt'
opt.source = 'data/images/bus.jpg'
opt.conf_thres = 0.25
opt.iou_thres = 0.45
main(opt)

点击右边三角形,即Run Python File,如下图
在这里插入图片描述
运行如下:

D:/softs/anaconda/envs/pytorch-cpu/python.exe d:/code/open/yolo/yolov3/demo-callrun.py
detect: weights=yolov3-tiny.pt, source=data\images, data=data\coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, 
device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs\detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, 
dnn=False, vid_stride=1
YOLOv3  v9.6.0-299-ga3e679a Python-3.10.18 torch-2.5.1 CPU

Fusing layers... 
yolov3 summary: 261 layers, 61922845 parameters, 0 gradients, 155.9 GFLOPs
image 1/1 D:\code\open\yolo\yolov3\data\images\bus.jpg: 640x480 4 persons, 1 bicycle, 1 bus, 2018.2ms
Speed: 17.0ms pre-process, 2018.2ms inference, 51.9ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs\detect\exp9

起结果和第2.1一样。

如果想看细节,参见小面2.2.3debug单步调试模式。

2.2.3 debug模式

打开你想要调试的 .py文件,以6.2.2的demo_callrun.py为例,按 F5或者在 VSCode 左侧点击 运行和调试​ 图标(或按 Ctrl+Shift+D),第一次的话选择Python debug,设置launch.json
在这里插入图片描述

粘贴以下配置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: 调试当前文件",
            "type": "python",
            "request": "launch",
            "program": "${file}",           // ✅ 关键:调试当前打开的文件
            "console": "integratedTerminal",
            "justMyCode": false,           // 允许进入第三方库源码(调试 YOLO 内部很有用)
            "args": []                     // 命令行参数可以在代码中通过 sys.argv 或 argparse 处理,或在 VSCode 的“运行”面板里临时加
        }
    ]
}

然后选择要运行的脚本,打断点,然后F5或者点击左侧调试按钮如下:
在这里插入图片描述
然后它就进入断点,这个F10执行一行、F11跳入、shift+F11跳出、F5全速运行(如果有下一个断点则直接运行到下一个断点,如果没有,则直接运行到结束)。
在这里插入图片描述

2.3 pycharm运行

新建项目,导入yolov3目录,选择anconda的环境,如下图。可参见
pycharm2025导入anaconda创建的各个AI环境https://blog.csdn.net/yhb1206/article/details/150410527?spm=1001.2014.3001.5502在这里插入图片描述
执行就很简单啦,执行shift+F10或者如下三角形:
在这里插入图片描述

debug模式shift+F9或者如下蜘蛛模样(debug):
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐