YOLOv4-tiny Darknet 目标检测训练实战:轻量模型配置、训练与推理
YOLOv4-tiny Darknet 目标检测训练实战轻量模型配置、训练与推理这篇教程根据我复现 YOLOv4-tiny Darknet 训练流程时整理重点演示 cuDNN 环境、Darknet 编译、YOLO 数据整理、配置生成和测试集推理。本文整理自我的学习和项目复现过程尽量按实操顺序保留 notebook 的关键步骤同时把数据集获取方式调整为适合中文教程发布的写法。本文会重点跑通以下流程配置 Colab CUDA/cuDNN 环境安装并编译 Darknet从数据集后台获取 YOLO Darknet 格式数据动态生成 YOLOv4-tiny 自定义配置训练模型并随机选择测试图推理如果你正在系统学习目标检测、实例分割、OCR、多目标跟踪或视觉大模型建议收藏本文配套 notebook、示例图片和运行环境说明后续会继续整理。如果环境配置卡住可以在评论区说明具体报错。 文章目录YOLOv4-tiny Darknet 目标检测训练实战轻量模型配置、训练与推理⚙️ 配置 CUDA/cuDNN 安装 Darknet 从数据集后台获取 Darknet 数据 整理训练文件 生成训练配置️ 训练 YOLOv4-tiny 推理工具函数 小结 同系列教程汇总⚙️ 配置 CUDA/cuDNNYOLOv4-tiny Darknet 对 CUDA/cuDNN 配置敏感先检查运行环境。# 检查 CUDA 是否已安装以及当前版本。!/usr/local/cuda/bin/nvcc--version# We need to install the correct cuDNN according to this output# 查看当前 GPU 型号!nvidia-smi# This cell ensures you have the correct architecture for your respective GPU# If you command is not found, look through these GPUs, find the respective# GPU and add them to the archTypes dictionary# Tesla V100# ARCH -gencode archcompute_70,code[sm_70,compute_70]# Tesla K80# ARCH -gencode archcompute_37,codesm_37# GeForce RTX 2080 Ti, RTX 2080, RTX 2070, Quadro RTX 8000, Quadro RTX 6000, Quadro RTX 5000, Tesla T4, XNOR Tensor Cores# ARCH -gencode archcompute_75,code[sm_75,compute_75]# Jetson XAVIER# ARCH -gencode archcompute_72,code[sm_72,compute_72]# GTX 1080, GTX 1070, GTX 1060, GTX 1050, GTX 1030, Titan Xp, Tesla P40, Tesla P4# ARCH -gencode archcompute_61,codesm_61# GP100/Tesla P100 - DGX-1# ARCH -gencode archcompute_60,codesm_60# For Jetson TX1, Tegra X1, DRIVE CX, DRIVE PX - uncomment:# ARCH -gencode archcompute_53,code[sm_53,compute_53]# For Jetson Tx2 or Drive-PX2 uncomment:# ARCH -gencode archcompute_62,code[sm_62,compute_62]importos os.environ[GPU_TYPE]str(os.popen(nvidia-smi --query-gpuname --formatcsv,noheader).read())defgetGPUArch(argument):try:argumentargument.strip()# All Colab GPUsarchTypes{Tesla V100-SXM2-16GB:-gencode archcompute_70,code[sm_70,compute_70],Tesla K80:-gencode archcompute_37,codesm_37,Tesla T4:-gencode archcompute_75,code[sm_75,compute_75],Tesla P40:-gencode archcompute_61,codesm_61,Tesla P4:-gencode archcompute_61,codesm_61,Tesla P100-PCIE-16GB:-gencode archcompute_60,codesm_60}returnarchTypes[argument]exceptKeyError:returnGPU must be added to GPU Commandsos.environ[ARCH_VALUE]getGPUArch(os.environ[GPU_TYPE])print(GPU Type: os.environ[GPU_TYPE])print(ARCH Value: os.environ[ARCH_VALUE]) 安装 Darknet克隆并编译 Darknet开启 GPU、cuDNN 和 OpenCV 支持。%cd/content/%rm-rf darknet# 克隆 Darknet 仓库用于 YOLOv4-tiny 训练!git clone https://github.com/AlexeyAB/darknet.git#install environment from the Makefile%cd/content/darknet/# compute_37, sm_37 for Tesla K80# compute_75, sm_75 for Tesla T4# !sed -i s/ARCH -gencode archcompute_60,codesm_60/ARCH -gencode archcompute_75,codesm_75/g Makefile#install environment from the Makefile#note if you are on Colab Pro this works on a P100 GPU#if you are on Colab free, you may need to change the Makefile for the K80 GPU#this goes for any GPU, you need to change the Makefile to inform darknet which GPU you are running on.!sed-is/OPENCV0/OPENCV1/gMakefile !sed-is/GPU0/GPU1/gMakefile !sed-is/CUDNN0/CUDNN1/gMakefile !sed-is/ARCH -gencode archcompute_60,codesm_60/ARCH ${ARCH_VALUE}/gMakefile !make#download the newly released yolov4-tiny weights%cd/content/darknet !wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.weights !wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.conv.29fromtypesimportSimpleNamespace# 从数据集后台下载 YOLO Darknet 格式数据集后修改 DATASET_DIR 指向解压目录。DATASET_DIR/content/dataset# 修改为数据集后台导出的数据集目录datasetSimpleNamespace(locationDATASET_DIR,version1,namecustom-dataset) 从数据集后台获取 Darknet 数据从数据集后台导出 YOLO Darknet 格式数据并接入训练目录。fromtypesimportSimpleNamespace# 从数据集后台下载 YOLO Darknet 检测 格式数据集后修改 DATASET_DIR 指向解压目录。DATASET_DIR/content/dataset# 修改为数据集后台导出的数据集目录datasetSimpleNamespace(locationDATASET_DIR,version1,namecustom-dataset)# 数据集已在上一单元配置如需更换数据请修改 DATASET_DIR。print(dataset.location) 整理训练文件复制图片、标签和类别文件生成 Darknet 训练所需的 obj.data。# 根据类别数量动态生成配置#we build iteratively from base config files. This is the same file shape as cfg/yolo-obj.cfgdeffile_len(fname):withopen(fname)asf:fori,linenumerate(f):passreturni1num_classesfile_len(dataset.location/train/_darknet.labels)max_batchesnum_classes*2000steps1.8*max_batches steps2.9*max_batches steps_strstr(steps1),str(steps2)num_filters(num_classes5)*3print(writing config for a custom YOLOv4 detector detecting number of classes: str(num_classes))#Instructions from the darknet repo#change line max_batches to (classes*2000 but not less than number of training images, and not less than 6000), f.e. max_batches6000 if you train for 3 classes#change line steps to 80% and 90% of max_batches, f.e. steps4800,5400ifos.path.exists(./cfg/custom-yolov4-tiny-detector.cfg):os.remove(./cfg/custom-yolov4-tiny-detector.cfg)#customize iPython writefile so we can write variablesfromIPython.core.magicimportregister_line_cell_magicregister_line_cell_magicdefwritetemplate(line,cell):withopen(line,w)asf:f.write(cell.format(**globals())) 生成训练配置根据类别数动态修改 filters、classes、max_batches 等配置。%%writetemplate./cfg/custom-yolov4-tiny-detector.cfg[net]# Testing#batch1#subdivisions1# Trainingbatch64subdivisions24width416height416channels3momentum0.9decay0.0005angle0saturation1.5exposure1.5hue.1learning_rate0.00261burn_in1000max_batches{max_batches}policysteps steps{steps_str}scales.1,.1[convolutional]batch_normalize1filters32size3stride2pad1activationleaky[convolutional]batch_normalize1filters64size3stride2pad1activationleaky[convolutional]batch_normalize1filters64size3stride1pad1activationleaky[route]layers-1groups2group_id1[convolutional]batch_normalize1filters32size3stride1pad1activationleaky[convolutional]batch_normalize1filters32size3stride1pad1activationleaky[route]layers-1,-2[convolutional]batch_normalize1filters64size1stride1pad1activationleaky[route]layers-6,-1[maxpool]size2stride2[convolutional]batch_normalize1filters128size3stride1pad1activationleaky[route]layers-1groups2group_id1[convolutional]batch_normalize1filters64size3stride1pad1activationleaky[convolutional]batch_normalize1filters64size3stride1pad1activationleaky[route]layers-1,-2[convolutional]batch_normalize1filters128size1stride1pad1activationleaky[route]layers-6,-1[maxpool]size2stride2[convolutional]batch_normalize1filters256size3stride1pad1activationleaky[route]layers-1groups2group_id1[convolutional]batch_normalize1filters128size3stride1pad1activationleaky[convolutional]batch_normalize1filters128size3stride1pad1activationleaky[route]layers-1,-2[convolutional]batch_normalize1filters256size1stride1pad1activationleaky[route]layers-6,-1[maxpool]size2stride2[convolutional]batch_normalize1filters512size3stride1pad1activationleaky##################################[convolutional]batch_normalize1filters256size1stride1pad1activationleaky[convolutional]batch_normalize1filters512size3stride1pad1activationleaky[convolutional]size1stride1pad1filters{num_filters}activationlinear[yolo]mask3,4,5anchors10,14,23,27,37,58,81,82,135,169,344,319classes{num_classes}num6jitter.3scale_x_y1.05cls_normalizer1.0iou_normalizer0.07iou_lossciou ignore_thresh.7truth_thresh1random0nms_kindgreedynms beta_nms0.6[route]layers-4[convolutional]batch_normalize1filters128size1stride1pad1activationleaky[upsample]stride2[route]layers-1,23[convolutional]batch_normalize1filters256size3stride1pad1activationleaky[convolutional]size1stride1pad1filters{num_filters}activationlinear[yolo]mask1,2,3anchors10,14,23,27,37,58,81,82,135,169,344,319classes{num_classes}num6jitter.3scale_x_y1.05cls_normalizer1.0iou_normalizer0.07iou_lossciou ignore_thresh.7truth_thresh1random0nms_kindgreedynms beta_nms0.6# 查看刚写入的配置文件。#you may consider adjusting certain things#like the number of subdivisions 64 runs faster but Colab GPU may not be big enough#if Colab GPU memory is too small, you will need to adjust subdivisions to 16%cat cfg/custom-yolov4-tiny-detector.cfg!./darknet detector train data/obj.data cfg/custom-yolov4-tiny-detector.cfg yolov4-tiny.conv.29-dont_show-map#If you get CUDA out of memory adjust subdivisions above!#adjust max batches down for shorter training above# 定义图片显示工具函数defimShow(path):importcv2importmatplotlib.pyplotasplt%matplotlib inline imagecv2.imread(path)height,widthimage.shape[:2]resized_imagecv2.resize(image,(3*width,3*height),interpolationcv2.INTER_CUBIC)figplt.gcf()fig.set_size_inches(18,10)plt.axis(off)#plt.rcParams[figure.figsize] [10, 5]plt.imshow(cv2.cvtColor(resized_image,cv2.COLOR_BGR2RGB))plt.show()️ 训练 YOLOv4-tiny启动 Darknet 训练。如果显存不足优先调整 subdivisions。# 检查权重是否已保存#backup houses the last weights for our detector#(file yolo-obj_last.weights will be saved to the build\darknet\x64\backup\ for each 100 iterations)#(file yolo-obj_xxxx.weights will be saved to the build\darknet\x64\backup\ for each 1000 iterations)#After training is complete - get result yolo-obj_final.weights from path build\darknet\x64\bac!ls backup#if it is empty you havent trained for long enough yet, you need to train for at least 100 iterations 推理工具函数定义图片显示工具方便查看 Darknet 推理结果。#coco.names is hardcoded somewhere in the detector%cp data/obj.names data/coco.names# test 目录中包含可用于测试的图片test_images[fforfinos.listdir(test)iff.endswith(.jpg)]importrandom img_pathtest/random.choice(test_images);#test out our detector!!./darknet detect cfg/custom-yolov4-tiny-detector.cfg backup/custom-yolov4-tiny-detector_best.weights{img_path}-dont-show imShow(/content/darknet/predictions.jpg) 小结这篇教程完整整理了YOLOv4-tiny Darknet 目标检测训练的核心复现流程。实际操作时建议先确认 GPU、依赖版本、数据集路径和模型权重路径再逐段运行 notebook。后续我会继续按源项目顺序整理同系列中的目标检测、实例分割、OCR、多目标跟踪和视觉大模型教程。 同系列教程汇总Google Gemini 3.5 Flash 零样本目标检测教程从提示词到可视化结果GLM-OCR 文档识别实战教程从验证码、公式到车牌 OCRRF-DETR ByteTrack 多目标跟踪实战教程从命令行到 Python 视频轨迹可视化SAM 3 图像分割实战教程文本、框和点提示的多种分割方式SAM 3 视频分割实战教程用文本提示分割并跟踪视频中的目标YOLOv4-tiny Darknet 目标检测训练实战轻量模型配置、训练与推理-本文

相关新闻

音频视觉融合新突破:DLA课程Wav2Lip与SadTalker实现会说话的人脸

音频视觉融合新突破:DLA课程Wav2Lip与SadTalker实现会说话的人脸

音频视觉融合新突破:DLA课程Wav2Lip与SadTalker实现会说话的人脸 【免费下载链接】dla Deep learning for audio processing 项目地址: https://gitcode.com/gh_mirrors/dla/dla DLA(Deep Learning for Audio)课程是一个专注于音频深度…

2026/10/15 21:21:39 阅读更多 →
CLIP 零样本图像分类实战:无需训练的多类别识别流程

CLIP 零样本图像分类实战:无需训练的多类别识别流程

CLIP 零样本图像分类实战:无需训练的多类别识别流程 这篇教程根据我复现 OpenAI CLIP 分类流程时整理,重点演示依赖安装、分类数据准备、文本 prompt 配置和零样本推理。 本文整理自我的学习和项目复现过程,尽量按实操顺序保留 notebook 的关…

2026/10/15 22:14:16 阅读更多 →
Subdomain3性能优化指南:低资源消耗下实现百万级子域名爆破的配置方案

Subdomain3性能优化指南:低资源消耗下实现百万级子域名爆破的配置方案

Subdomain3性能优化指南:低资源消耗下实现百万级子域名爆破的配置方案 【免费下载链接】subdomain3 A new generation of tool for discovering subdomains( ip , cdn and so on) 项目地址: https://gitcode.com/gh_mirrors/su/subdomain3 Subdomain3是新一代…

2026/10/15 9:11:44 阅读更多 →

最新新闻

工业操作系统介绍:制造四类场景的软件依赖与系统选型落点

工业操作系统介绍:制造四类场景的软件依赖与系统选型落点

一、工业操作系统的构成与场景分层工业操作系统是指运行在生产现场、承担任务调度、外设管理与工业通信协议栈支撑的系统软件,部署位置覆盖控制器、网关、边缘计算节点以及车间级工业服务器。与通用操作系统相比,它的技术重心集中在三处:时间…

2026/10/16 21:54:11 阅读更多 →
RayManPro实战:光线追踪渲染的拆包、调参与批处理

RayManPro实战:光线追踪渲染的拆包、调参与批处理

简介:RayManPro压缩包是基于RayMan模型开展人体生理等效温度(PET)计算的实用工具,面向城市气候、建筑环境与室外热舒适研究方向的师生及工程师。该模型由德国弗莱堡大学团队开发,是成熟的太阳辐射与生物气候模拟器&…

2026/10/16 21:54:11 阅读更多 →
信息组织集成法:分类法+主题词表+元数据,构建知识库导航检索闭环

信息组织集成法:分类法+主题词表+元数据,构建知识库导航检索闭环

做了十几年信息管理和内容治理,我见过太多团队在“信息组织”这个问题上原地打转。一谈建知识库,有人坚持用树状分类,说层级清晰;有人坚持用标签和词表,说灵活好维护;还有人上来就要上本体、做知识图谱。吵…

2026/10/16 21:54:11 阅读更多 →
Cubase 5机架文件加载原理与实操指南

Cubase 5机架文件加载原理与实操指南

简介:本资源为Cubase 5专用机架预设包,面向使用该经典DAW的音乐制作人、编曲初学者及混音工作者,解决手动搭建效果链耗时、参数调试门槛高、音色风格不统一等实际痛点。压缩包共2000个文件,主体为5492个vstpreset(VST效…

2026/10/16 21:54:11 阅读更多 →
Claude 删掉 Chat/Cowork 切换按钮:从模式选择到意图驱动的交互演进

Claude 删掉 Chat/Cowork 切换按钮:从模式选择到意图驱动的交互演进

最近两周,关于 Claude 界面改版的讨论又起来了,最集中的吐槽点就是:网页版右上角那个 Chat / Cowork 切换按钮不见了。不少人第一反应是"功能被砍了",或者在群里问"是不是我账号没权限"。其实我刚开始也愣了一…

2026/10/16 21:54:11 阅读更多 →
MATLAB曲线图片识别程序:从论文截图中自动提取数据点

MATLAB曲线图片识别程序:从论文截图中自动提取数据点

简介:一款基于MATLAB的曲线图片识别程序,主要面向需要从科研图像中自动提取曲线坐标的研究人员与工程技术人员。该工具能够对图片进行灰度化、二值化、去噪等预处理,并通过边缘检测、轮廓追踪和曲线拟合等步骤,将论文或实验图像中…

2026/10/16 21:53:10 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →