ModelArts 搭建 darknet 环境

网友投稿 455 2022-05-29

一、开通 NoteBook 实例

我们可以使用 ModelArts 的开发环境 Notebook ,也可以直接使用 ModelArts 开发工具 CodeLab,两者本质都是使用 Jupyter 。目前推荐使用 CodeLab ,毕竟可以免费“续杯”,而且是 V100 的硬件。下面分别讲解一下 Notebook 和 CodeLab 的使用。

1.1 Notebook

在 AI 开发过程中搭建开发环境、选择AI算法框架、选择算法、调试代码、安装相应软件或者硬件加速驱动库都不是容易的事情,使得学习 AI 开发上手慢门槛高。为了解决这些问题,ModelArts算法开发平台简化了整个开发过程,以降低开发门槛。 ModelArts集成了基于开源的Jupyter Notebook和JupyterLab,可为您提供在线的交互式开发调试工具。您无需关注安装配置,在ModelArts管理控制台直接使用Notebook,编写和调测模型训练代码,然后基于该代码进行模型的训练。

1.1.1 初始化 Notebook

首先我们在左侧导航栏中搜索并进入 ModelArts ,一般来说,我们常用的区域是北京四,因为北京四的版本及功能相对较新,资源也相对较多。这里为了方便演示,我选择北京四,当我们第一次使用 ModelArts 需要授权,更多说明请参考 ModelArts 准备工作[1] 。每个用户默认可创建 10 个 Notebook,其中免费算力的 CPU 和 GPU 环境各可创建 1 个 。

1.1.2 创建 Notebook

鉴于 darknet 环境需要依赖 GPU,因此我们将创建一个带有 GPU 环境的 Notebook,默认有一个免费算力的 GPU 环境,以及 5GB 的存储硬盘。

1.1.3 打开 Jupyter Lab

目前比较推荐使用 JupyterLab ,全新的、更高效的 Notebook 使用交互体检。

1.1.4 环境检查

通过 Terminal 输入 nvcc -V 和 nvidia-smi 可以查看环境信息。

1.2 CodeLab

即开即用、用于机器学习的在线集成开发环境,可以轻松的构建、训练、调试、部署机器学习算法与模型。当前使用免费规格用于体验,值得注意的是 72 小时内没用使用,会释放资源,因此需要注意文件备份。

1.2.1 开启 CodeLab

CodeLab 在 ModelArts 的总览页,属于开发工具类,目前可以免费使用。

1.2.2 切换到 GPU 环境

CodeLab 默认是 CPU 的环境,我们需要手动切换到 GPU 规格。[Free] GPU: 1*V100(32GB)|CPU: 8vCPUs 64GB 这个配置还可以吧!

1.2.3 环境检查

通过 Terminal 输入 nvcc -V 和 nvidia-smi 可以查看环境信息。(cuda版本需匹配nvidia驱动版本)

上图中 cuda 版本与 nvidia 驱动不匹配,可能会导致编译之后的 darknet 运行报错。

二、下载 darknet 源码

接着我们需要获取 darknet 的源码来进行编译, darknet 源码地址是: https://github.com/pjreddie/darknet 。由于众所周知的源码,我们可以使用镜像地址或者先将代码拉取到 Gitee 再下载到 Notebook。

2.1 git clone

本次我们直接从镜像地址获取源码:

cd work git clone https://github.com.cnpmjs.org/pjreddie/darknet.git

2.2 检查文件

点击刷新的按钮可以查看到已经下载好的源码文件。

三、编译 darknet

在编译 darknet 之前我们需要修改 Makefile 文件。

3.1 修改Makefile文件

3.2 执行 make 进行编译

cd work cd darknet make

3.3 检查编译结果

至此,我们已经生成了可执行文件 darknet ,环境搭建完毕。接着我们试着准备数据集来验证一下

3.4 常见问题

3.4.1 make: Nothing to be done for ‘all’.

此时执行 make clean 再 make 即可。

3.4.2 darknet: ./src/cuda.c:36: check_error: Assertion `0’ failed.

这是由于 cuda 和 NVIDIA 版本不匹配。鉴于 ModelArts 的 Notebook 环境中已经安装了多个 cuda,我们可以通过脚本切换:

# 建立软链接命令 sudo ln -snf xxx # 查看环境中有哪些cuda版本 ll /usr/local | grep cuda # 修改cuda版本的命令,其中version替换为对应的cuda版本 sudo ln -snf /usr/local/cuda-{version} /usr/local/cuda 修改之后再执行 make 进行编译。

四、数据集处理

鉴于 darnet 需要特定的数据格式,借助脚本可以将 VOC 数据集处理成可适用的格式。

数据集见 AIGallery: https://marketplace.huaweicloud.com/markets/aihub/datasets/detail/?content_id=62ff868a-03e8-4627-a9c7-922d71aa1386

本操作指引为直接下载处理好的数据集来进行配置训练。

4.1 下载数据集到 OBS

AIGallery 提供了丰富的数据集,我们可以下载自己所需要的数据集,对于一些平台没有的数据集,我们也可以将自己的数据集上传到平台设置为私有已减轻对 OBS 存储的依赖。

4.2 通过 MoXing 下载 OBS 数据到 Notebook

MoXing 为海量数据训练提供了便利的存储服务,我们可以通过 MoXing 快速读取 OBS 中的数据。比如:

import moxing as mox mox.file.copy_parallel('obs://huqi88/AIGallery/darknet-tools','darknet-tools') print('Done!')

4.3 简单配置数据及训练参数

cd work mv darknet-tools/VOC2007 darknet mv darknet-tools/cfg/voc2007.data darknet/cfg/voc2007.data mv darknet-tools/data/test.txt darknet/data/test.txt mv darknet-tools/data/train.txt darknet/data/train.txt mv darknet-tools/data/val.txt darknet/data/val.txt mv darknet-tools/data/voc.names darknet/data/voc.names

五、训练

训练时尽量先关闭其他任务,保证有充足的资源来运行训练任务

./darknet detector train cfg/voc2007.data cfg/yolov3.cfg ../darknet-tools/darknet53.conv.74

训练过程每隔100步保存一次训练结果yolov3_100.weights,900次以后就不再保存,而是存在yolov3.backup中,在训练结束时生成yolov3_final.weights。

六、预测

上传一张测试图片 test.jpg 到 darknet 目录下,执行以下命令进行预测:

./darknet detector test cfg/voc2007.data cfg/yolov3.cfg backup/yolov3_final.weights test.jpg

结果如下图:

参考链接

[1] https://gitee.com/ModelArts/ModelArts-Lab/tree/master/docs/ModelArts准备工作

ModelArts 搭建 darknet 环境

AI AI开发平台ModelArts 机器学习

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:linux之cat命令详解
下一篇:【愚公系列】2022年03月 .NET架构班 029-分布式中间件 Nginx多场景使用问题分析
相关文章