yolov3学习之源码代码路径及运行环境搭建
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):
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)