使用Featurize在VOC0712数据集上基于Darknet训练YOLO-Fastest的过程演示

pytorch版efficientdet训练自己的数据集(zylo) 本例用的数据集是 BIWI Walking Pedestrians dataset,首先将视频按帧转换成图像序列,然后用labelme标注,保存为json数据格式文件。ctrl+c,此时logs目录最下面的pth为total loss最小的模型。除此之外还要注意数据集要放在datasets目录下。测试结果的图片保存在test文件夹下。之后数据集要转换成coco格式,参考。 阅读详情

0 声明

作者联系方式:E-mail: WindForest@yeah.net

本文用于使用Featurize平台在VOC0712数据集上基于Darknet训练YOLO-Fastest的过程参考。

本文仅为个人学习记录,由本文的错误造成的损失,作者概不负责。

项说明
训练平台Featurize
训练框架Darknet
网络模型YOLO-Fastest1.0-XL
数据集VOC2007-2012联合数据集(20分类)
网络输入320×320
cuDNNcudnn-11.2-linux-x64-v8.1.1.33.tgz 提取码: sese

1 正文

1.1 框架和数据集准备

由于Darknet框架是基于C语言的,因此在获取到YOLO-Fastest工程之后需要先编译该框架才能进行训练,编译过程需要cuDNN的参与,截至本文发布,Featurize平台提供的实例是基于CUDA11.2的,故选用 cudnn-11.2-linux-x64-v8.1.1.33 。

我们先来做一些准备:首先将该cuDNN压缩包上传到 /work 目录下,该目录下的内容将被持久保留,且后续再申请实例的时候该目录是共享的;由于Darknet环境不包含在实例镜像中,因此每次申请实例都需要重新编译,为了方便起见,我们也把YOLO-Fastest工程从Github上下载并以zip方式保存到该目录,如下图所示。

1
上述操作可能需要花些时间,因此可以随便申请一个便宜的实例完成,而后再转到要用的配置继续下面的操作。

至此,我们已经准备好了可用于训练的框架,首先解压cuDNN和YOLO-Fastest工程到 ~/ 目录:

# 1 准备cuDNN
cd && sudo tar -zxvf work/cudnn-11.2-linux-x64-v8.1.1.33.tgz -C /usr/local/

# 2 解压YOLO-Fastest工程
cd && unzip work/Yolo-Fastest.zip -d ~/ && mv Yolo-Fastest-master Yolo-Fastest

然后我们需要修改 Yolo-Fastest/Makefile 和 Yolo-Fastest/src/utils.c 文件中的内容。

对于Makefile,我们需要修改三个位置:

# 关闭OpenCV支持
-   OPENCV=1
+   OPENCV=0

# 开启对对应GPU架构的支持
-   # ARCH= -gencode arch=compute_86,code=[sm_86,compute_86]
+   ARCH= -gencode arch=compute_86,code=[sm_86,compute_86]

# 更改cuDNN路径
-   CFLAGS+= -DCUDNN -I/usr/local/cudnn/include
-   LDFLAGS+= -L/usr/local/cudnn/lib64 -lcudnn
+   CFLAGS+= -DCUDNN -I/usr/local/cuda/include
+   LDFLAGS+= -L/usr/local/cuda/lib64 -lcudnn

保存并退出,而后我们在utils.c中增加对一会儿要用到的数据集路径的支持:

// 找到此函数:
void replace_image_to_label(const char* input_path, char* output_path)
{
    // ...删掉其它find_replace函数调用,然后增加:
    find_replace(input_path, "voc-images", "voc-labels", output_path);
    // ...
}

6
保存并退出,我们回到YOLO-Fastest工程目录下,执行以下命令编译:

cd Yolo-Fastest
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
make -j8

至此,Darknet框架环境已经准备完成。

然后我们在导航页 添加数据集 中找到 VOC2007-2012联合数据集(Darknet-YOLO) 并在实例中下载,该数据集为本文使用示例,你当然可以添加自己的数据集,不过要记得对应地修改utils.c和后续的Anchors。

2
34

数据集将被下载到 ~/data/ 目录下,但数据集制作时的路径是 data/ALLIMGS/ 因此我们需要将下载好的数据集移动到YOLO-Fastest工程中:

# 3 数据集准备
cd && mkdir Yolo-Fastest/data/ALLIMGS && mkdir Yolo-Fastest/models && rm -rf Yolo-Fastest/cfg/*
mv data/voc-images Yolo-Fastest/data/ALLIMGS
mv data/voc-labels Yolo-Fastest/data/ALLIMGS
mv data/voc.data Yolo-Fastest/data/ALLIMGS/
mv data/voc.names Yolo-Fastest/data/ALLIMGS/
mv data/voc_test.txt Yolo-Fastest/data/ALLIMGS/
mv data/voc_train.txt Yolo-Fastest/data/ALLIMGS/

至此,用于训练的数据集也已经准备好了。

1.2 网络准备

从YOLO-Fastest工程目录下的 ModelZoo\yolo-fastest-1.0_coco 目录获取 yolo-fastest-xl.cfg 拷贝到 cfg 目录下;yolo-fastest-xl.weights 拷贝到 models 目录下。然后打开 yolo-fastest-xl.cfg 文件,根据机器性能和训练要求等修改训练参数,而后保存。

值得注意的是:网络训练的学习率、调整步长和衰减对网络收敛和最终效果有相当大的关系,需要慎重设置。

学习率设置示例:

learning_rate=0.002
burn_in=8000
max_batches=51900
policy=steps
steps=17300,34600,43250
scales=.5,.1,.1

经过对比,当采用单精度训练方案时,使用GTX3080是性价比最优的选择,此时batchsize可设置为64,subdivisions设置为2。

接着,在网络配置文件中修改yolo网络层使用的Anchors,对于本次示例,可使用:

26, 49,  64, 93,  75,186, 185,126, 141,242, 265,262

同时需要修改yolo网络层的输出张量和classes设置,一共有2个yolo网络层需要修改。

5
Anchors可使用Darknet提供的以下命令计算得到:

# 4 计算Anchors
cd && cd Yolo-Fastest/
./darknet detector calc_anchors data/ALLIMGS/voc.data -num_of_clusters 6 -width 320 -height 320

1.3 网络训练

最后,我们使用以下命令开始训练:

# 网络训练
cd && cd Yolo-Fastest/
# 首先提取骨干网络权重,这里109层是根据网络结构得到的最后一层骨干网络的层号
./darknet partial ./cfg/yolo-fastest-xl.cfg ./models/yolo-fastest-xl.weights ./models/yolo-fastest-xl_conv.109 109
# 使用预训练权重执行训练
./darknet detector train ./data/ALLIMGS/voc.data ./cfg/yolo-fastest-xl.cfg ./models/yolo-fastest-xl_conv.109 >> yolo-fastest-xl_train.log
# 从头开始训练,此时不需要预训练权重
./darknet detector train ./data/ALLIMGS/voc.data ./cfg/yolo-fastest-xl.cfg >> yolo-fastest-xl_train.log

此时终端上将打印训练时的信息,每次迭代的损失之变化将被记录到 ./yolo-fastest-xl_train.log 文件中,可用于后续绘制损失曲线。

训练进程不断有打印信息因此会占据一个终端,因此可以再开一个终端窗口实时刷新打印到日志里的损失值信息:

cd && watch -n 1 "tail -n 1 Yolo-Fastest/yolo-fastest-xl_train.log"

7

说明:由于burn_in参数,训练初期学习率会缓慢增加,因此一开始显示0.000000是正常的。

1.4 网络评估

网络训练完成后,可使用Darknet网络提供的工具查看训练效果,例如mAP计算:

./darknet detector map ./data/ALLIMGS/voc.data ./cfg/yolo-fastest-xl.cfg ./models/yolo-fastest-xl_final.weights 

但因为我们在编译时没有勾选OpenCV(为了加快训练速度),因此不能在实例中查看预测结果,只能在本机上重新编译一下Darknet工程来查看效果,这个过程已经在《YOLO系列(v1~v3)的学习及YOLO-Fastest在海思平台的部署(下)》中介绍过了,不再赘述。

最后,我们可以使用以下脚本保存的训练日志绘制网络训练过程中的损失值变化曲线。

# ----------------------------------------------------------------------
# Darknet损失函数处理
# NOTE:使用Darknet训练网络时使用“>>”指定输出到文件,即可保存训练过程中的
#      Loss变化信息,本脚本将从这些信息中提取Loss值并绘制曲线。
# NOTE:python ./Darknet_Loss_Process.py darknet_output_file
# ----------------------------------------------------------------------
import sys
import os
import matplotlib.pyplot as plt

# --------------------------------------------------
# 全局变量
# --------------------------------------------------
darknet_output_filename = sys.argv[1]
x_iters = []
y_1_loss = []
y_2_loss = []

# --------------------------------------------------
# 处理流程
# --------------------------------------------------
print("Current Loss Log: " + darknet_output_filename)
darknet_output_file = open(darknet_output_filename, 'r')

for line in darknet_output_file.readlines():
    if "avg loss" in line:
        line_list = line.replace(',', '').replace(':', '').split(" ")
        x_iters.append(float(line_list[1]))
        y_1_loss.append(float(line_list[2]))
        y_2_loss.append(float(line_list[3]))

darknet_output_file.close()

_, ax1 = plt.subplots()
ax1.set_title("Darknet Loss Log")
ax1.plot(x_iters, y_1_loss, 'green', alpha=0.5)
ax1.set_xlabel('Iteration')
ax1.set_ylabel('Loss Value')
ax2 = ax1.twinx()
ax2.plot(x_iters, y_2_loss, 'red', alpha=0.8)
plt.show()

2 总结

本文其实没什么东西,主要是为了帮助刚刚接触JupyterLab的同学快速上手Darknet训练过程,以上。

———— 2022-1-22@燕卫博 ————

如何用Featurize进行深度学习训练 Featurize的网址是Featurize让我比较喜欢的一点是,上传数据集方便。 阅读详情

相关推荐

云GPU featurize的使用 pycharm远程连接

云GPU featurize的使用 注册登录 购买实例 前期准备(用于pycharm远程连接) pycharm远程连接SSH设置

向来萧瑟也无畏 6067

如何使用featurize算力平台训练YOLOV5模型

这里注意torch版本,既然选择使用算力平台,那么大家的电脑显卡型号较低,所能支持的GPU版torch版本不高,要注意使用自己电脑推理算力平台训练的模型时,torch版本差距不要过大。如果可以的话,尽量将在算力平台中创建的虚拟环境中torch版本安装为自己电脑支持的版本。想必大家也都知道如何训练yolov5模型,前面工作做完后,只需要在终端中进入虚拟环境中,然后使用cd 指令转到yolov5源码文件夹下,然后使用下面的指令训练即可。在终端使用下面的指令进入之前创建的虚拟环境中。在终端使用下面的命令。

m0_71861369的博客 1840

Faster-RCNN+ZF用自己的数据集训练模型(Python版本)

说明:本博文假设你已经做好了自己的数据集,该数据集格式和VOC2007相同。下面是训练前的一些修改。 (做数据集的过程可以看这里) Faster-RCNN源码下载地址: Matlab版本:https://github.com/ShaoqingRen/faster_rcnn Python版本:https://github.com/rbgirshick/py-faster-rcnn

小咸鱼_的博客 14万+

EfficientDet训练自己的数据集

EfficientDet复现

qq_20373723的博客 2744

云服务器平台Featurize--基本使用步骤与使用感受

可租用实例的显示界面如图所示。在简单的注册、登录、充值之后就可以对想要的实例直接进行租赁了。关于实例,这里我的理解是已经配置好一定环境的服务器。

Kevin__47的博客 3111

基于强化学习的工业SCR脱硝系统控制算法设计与实现

本文提出了一种基于强化学习的工业SCR脱硝系统智能控制方法。针对SCR系统存在的非线性、大滞后和多变量耦合等控制难点,研究采用混合建模方法构建了精度在5%以内的系统模型,并设计了专门的强化学习环境。该方法通过定义合理的动作空间和状态空间,结合物理约束设计损失函数,利用深度强化学习算法优化氨喷射控制策略。相比传统PID控制,该智能控制器能更好地适应烟气参数波动,实现NOx排放的稳定控制,为工业环保设施提供了更优的自动化解决方案。

huanghm88的专栏 1456

深度学习实验基础03:线上服务器使用指南

线上

qq_41876456的博客 3507

机器人C++开源库The Robotics Library (RL)使用手册(三)

进入VS工程,我们先看看这些功能函数及其依赖库的分布关系:rl命名空间下,主要有八大模块。搞定VS后将逐个拆解。

qq_34839823的博客 1735

featurize深度学习云平台构建特定conda环境

featurize自行配置深度学习环境 实验室资源不够,大家需要轮着用,很麻烦。为了应对这个问题,决定搞一个自己专用的深度学习环境。然而,调研一番,少说得20000起步来配置,那不如使用现有的深度学习云服务平台好了。 1.featurize 调研下来,featurize是性价比比较友好的平台,2080ti是2元/时,权当是在网吧上网缴费了。 注册、登录、充值,可以扫码加群,领优惠券,羊毛不薅白不薅。群里也可以咨询相关问题,可惜人太多,经常淹没有效信息。所以还是搞个博客记录一下步骤,方便新手操作。 2.

中二的骑士 4995

GD32单片机引脚复用指南:如何让JTAG接口的PA15/PB3发挥第二功能?

本文详细介绍了GD32F103Cx系列单片机如何通过AFIO模块进行引脚复用,特别是将默认用于JTAG调试接口的PA15、PB3等引脚释放为普通IO或复用功能引脚。文章从原理出发,结合代码实践,讲解了如何配置调试端口重映射,将JTAG引脚安全地转换为GPIO或定时器通道,并提供了常见问题排查与最佳实践,帮助开发者高效利用有限的引脚资源。

nept的博客 806

MuJoCo 机械臂关节空间阻抗控制Impedance实现(附代码)

阻抗控制通过调整关节的刚度和阻尼,让机器人在接触时产生顺应性,减少冲击力,其核心目标是在接触外部载荷时能够自适应调整输出力矩,实现力与位置的协同控制。阻抗控制可以很快的到达设定位置,在此基础上,使用mujoco交互中的施加外力操作,可以看到当外力松开后,机械臂也可以很快的回弹回设定位置。其中self.Kp和self.Kd为固定刚度和阻尼系数,通过修改刚度和阻尼参数,可以变得更柔顺来应对各种场景。注释掉该行后,直接simulate仿真可以看到机械臂控制位置震荡等情况,接下来引入关节空间阻抗控制的代码。

darcsdn 1266

EfficientDet 训练自己的数据集

EfficientDet训练自己的数据集项目安装数据准别txt->XMLXML->coco.json训练 项目安装 参考代码:https://github.com/zylo117/Yet-Another-EfficientDet-Pytorch 安装及环境配置可参考作者介绍或者其他博客 数据准别 训练时需要将数据集转换为coco格式的数据集,本人使用的数据集为visdrone数据集,转...

gu891221的博客 8197

图解移动机器人中的运动规划(Motion Planning),附几十种规划算法

运动规划是移动机器人的核心理论和工程技术之一,本文作为教程先导,解析了运动规划的两大组件——路径规划和轨迹规划。欢迎感兴趣的同学订阅专栏!

FRIGIDWINTER的博客 4万+

云服务器 - 机器学习(廉价+实用)早知道有这个网站就不买阿里云了

前言: 我的毕设是有关深度学习的,需要跑卷积神经网络,CPU的话,不用说,很慢,所以安装了Anaconda3+CUDU+cuDNN,期待可以跑GPU,奈何我显存只有4G,驱动不太行,还是跑不动,于是开始去找云服务器,但真不便宜,还要自己配置环境(有没有和我一样很烦配置环境的),机缘巧合看到了 Featurize ( 点击查看 ) 这个网站,按小时(实际是分钟)计费,环境还是配置好的,真的太实用了,泪目… Featurize的优势 : (1)廉价,多种服务器类型自己选,按需选择,对于就用一用的学生很划算 (2

weixin_44272266的博客 5860

nvidia系列教程-AGX-Orin系统刷机及备份

NVIDIA AGX Orin 是一款高性能的嵌入式计算平台,专为边缘计算和 AI 应用而设计。为了确保系统的稳定性和适应不同的应用场景,用户可能需要对 AGX Orin 进行系统刷机和备份操作。本文将详细介绍如何完成这些操作,帮助您更好地管理和维护 AGX Orin 设备。通过以上步骤,您可以成功地为 NVIDIA AGX Orin 刷写系统并创建备份。这些操作不仅能帮助您保持系统的更新和安全,还能在遇到问题时快速恢复系统。

flypig has a dream! 3323

2、欧洲期权的赫斯顿模型

本文详细介绍了赫斯顿随机波动率模型在欧洲期权定价中的应用。模型通过引入随机方差过程,克服了布莱克-斯科尔斯模型中波动率恒定的局限性,更贴近市场实际。文章阐述了模型的动态结构、风险中性转换、期权定价公式及其半封闭解的计算方法,并提供了基于VBA的数值实现方案。通过梯形法则与高斯积分等数值方法对比,分析了不同积分策略的精度与效率。同时验证了当波动率为零时,赫斯顿模型退化为布莱克-斯科尔斯模型的一致性。最后讨论了模型的优势、挑战及实际应用建议,强调了数值积分稳定性和参数估计的重要性。

tequila的博客 348

在Featurize上部署飞桨执行深度学习任务

部署云服务器

qq_59414507的博客 1063

手把手教你学AutoSAR - 总目录

鉴于近期较多博友问及微信群,如下可申请好友验证,请备注“autosar”,否则可能添加不通过。验证通过后,拉入讨论群。PS:本人鉴于工作事项可能不能及时回复问题,可在交流群内部和其他博友之间相互沟通交流经验。欢迎来到桃源乐游的《AutoSAR配置与实践》,以下为学习大纲,蓝色字体点击可跳转。

nihaoljq2010的博客 7456

Featurize算力云使用流程(最细的保姆级教程)

性价比极高,价格极低的云服务器

qq_62127918的博客 1807

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Featurize 成功运行 github项目

首先可以打开终端,进入到data中,通过 git clone <HTTPS> 命令 将项目仓库导入featurize的data中。可以将需要放置的数据上传,然后通过 cp <需复制文件> <复制目标地点> 命令来复制到对应目录下。以本项目为例,需要先运行 voc_anotation.py 初始化txt。3. 导入github项目,按照项目中readme的部分进行调整。2. 下载数据集上传,如果其他人上传过,在服务上可以找到。4. python <项目.py> 即可运行。

SkotSuyama的博客 1564

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

featurize 跳板机配置 PyCharm远程连接

写在前面 我是20210225使用的,当时文档还写明了该平台是基于跳板机的。 但是今天20210227我写文章的时候发现文档已经删除了。或许现在featurize已经不需要跳板机了。那么或许不需要以下配置了。 参考文档–远程开发     1.安装OpenSSH 参考:VSCode Remote ssh跳板机配置(windows平台)   推荐通过Windows的PowerShell来安装OpenSSH 1)以管理员身份运行Windows PowerShell,并键入命令 ①wi

向来萧瑟也无畏 2929

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

保姆级别Featurize使用教程(租用服务器,VSCode远程连接)

保姆级别Featurize使用教程(租用服务器,VSCode远程连接)

tsb2416443_的博客 2956

使用colab、featurize进行深度学习

你看到的错误消息 "fatal: couldn't find remote ref master" 表示 Git 无法在名为 "origin" 的远程仓库中找到名为 "master" 的分支。6 新版本文件对接到老版本,在新版本环境执行这段代码覆盖新版本torch生成的不可被解压文件,即可用老版本解压weight。如果要上传的文件是在一个新的文件夹里,那么就需要执行前3步,将新文件夹作为本地仓库与github关联。如果要上传的文件是在之前的文件夹里,那么之前已经关联过了,只需要直接执行后3步就可以了。

SED 1000

2 -《本地部署开源大模型》智选GPU算力平台:免费与付费租赁指南

智选GPU算力平台:免费与付费租赁指南

u010442263的博客 8330

【保姆级教程|在Featurize服务器复现MobilenetV3分割代码】(包成功)(远程服务器部署)(小白必看)(深度学习必备)

本文详细介绍了如何在Featurize平台上租借远程GPU服务器并复现MobilenetV3分割模型的完整流程。内容包括:1) 服务器租借方法,包括选择配置、创建实例;2) 数据上传与解压操作;3) 环境配置步骤,包括创建conda环境、安装依赖库;4) 代码复现过程,涉及路径修改、参数调整及训练启动;5) 训练结果保存与下载方式。教程以MobilenetV3为例,适用于解决显存不足或训练速度慢的问题,后续也将更新其他模型的复现教程。

anzhi_1211的博客 1954

MMdetection在Featurize服务器运行时相关问题

在Featurize上运行MMdetection

onepunch_k的博客 773
上一篇: 主流深度学习GPU云平台租赁价格比较表
下一篇: 基于Hi3516DV300的嵌入式入门演练(上)
燕卫博
博客等级 码龄7年 312粉丝 49原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值