Advertisement

AIoT人工智能物联网之NVIDIA TAO 实用级的训练神器

阅读量:

TAO常指三个缩写:训练、适应、优化。这是我们将其视为开发AI模型的常见步骤,并体现其主要功能的过程。通过采用TAO方法,在服务器上进行模型训练,并部署至Jetson Nano上。这种方法操作简便且成效显著,并支持多种模型及格式。

1.TAO 的安装

建议在高性能的NVIDIA GPU服务器上,在Ubuntu系统上安装docker-ce,并执行以下命令:$ curl https://get.docker.com | sh;然后使用sudo systemctl --now enable docker来启用Docker服务。

2.在 anaconda 中创建一个新空间

conda create -n launcher python=3.6

conda activate launcher

3.安装tao

pip3 install nvidia-tao

验证TAO:tao --help、tao info

4.下载 TAO 示例:

wget --content-disposition

https://api.ngc.nvidia.com/v2/resources/nvidia/tao/cv_samples/v

ersions/v1.4.0/zip -O cv_samples_v1.4.0.zip

解压到

~/cv_samples_v1.4.0

5.安装 jupyter

pip3 install jupyter

设置密码:

jupyter notebook password

启动 jupter

jupyter notebook --ip 0.0.0.0 --allow-root --port 8888

2.准备数据

看看现有数据和补充数据:

现有数据查看,手机拍照补充,调整图片大小

采用数据标注网站标注数据https://app.roboflow.com/login

3.数据转换

(1)进入TAO环境

conda env list

进入tao运行环境

conda activate launcher

进入 cv_samples_v1.4.0 目录 :cd ~/cv_samples_v1.4.0

启动jupyter

jupyter notebook --ip 0.0.0.0 --port 8888 --allow-root

进入YOLOv4

(2) 用户id

用id需要登录https://ngc.nvidia.com/signin,查看key

(3)TAO 目录规划

LOCAL_PROJECT_DIR=~/cv_samples_v1.4.0

LOCAL_DATA_DIR=~/cv_samples_v1.4.0/data

LOCAL_EXPERIMENT_DIR=~/cv_samples_v1.4.0/yolo_v4_tiny

容器目录对应

DATA_DOWNLOAD_DIR=/workspace/tao-experiments/data

USER_EXPERIMENT_DIR=/workspace/tao-

experiments/yolo_v4_tiny

SPECS_DIR=/workspace/tao-experiments/yolo_v4_tiny/specs

注意,在jupyter notebook中,home目录建议使用绝对路径

然后继续运行,会进一步创建目录

继续执行,项目挂载

(4)TAO 格式转换

该工具用于将Yolov4小模型的数据集转换为TFRecord格式文件。(--help)指定数据集规范。(--输出文件<输出TFRecord文件>)指定输出路径。(--GPU索引<GPU索引>)指定要使用的GPU编号.

在以下内容中,在docker容器环境中配置文件路径如下: dataset_spec 为配置文件地址;output_tfrecords_file 为输出文件路径;同时,请注意所有路径需配置为docker容器的运行地址,并在命令行中添加 --gpu_index 参数以指定使用的GPU数量。

复制代码
 实例:spec-train.txt

    
 coco_config {
    
 root_directory_path: "/workspace/tao- experiments/data/pingpang.v2i.coco/"
    
 img_dir_names: ["train"]
    
 annotation_files: ["train/_annotations.coco.json"]
    
 num_partitions: 1 # 整个数据集分成一个部分
    
 num_shards: [10]  # 整个数据集分成10个块,最后数据会分为10个文件夹
    
 }
    
 image_directory_path: "/workspace/tao-experiments/data/pingpang.v2i.coco/train"
    
    
    
    
    AI助手

验证数据格式转换 配置文件 spec-val.txt

复制代码
 coco_config {

    
 root_directory_path: "/workspace/tao- experiments/data/pingpang.v2i.coco/"
    
 img_dir_names: ["valid"]
    
 annotation_files: ["valid/_annotations.coco.json"]
    
 num_partitions: 1
    
 num_shards: [2]
    
 }
    
 image_directory_path: "/workspace/tao- experiments/data/pingpang.v2i.coco/valid"
    
    
    
    
    AI助手

Use the tao yolo_v4_tiny model to transform the dataset with options [-h] for dataset configuration, to generate the output TensorFlow record file, and optionally specify the GPU index.

TAO Yolo-V4-Tiny convert_dataset --source_path=/workspace/tao-experiments/data/spec-val.txt --destination_path=/workspace/tao-experiments/data/val/tfrecords/val --gpu_index=0

4.下载预训练模型

(1)下载ngc:

也可以在命令行中执行:

使用 wget 命令从 NGC 官网下载 NGC CLI 工具包到指定位置

unzip -u

"/home/ljy/cv_samples_v1.4.0/ngccli/ngccli_cat_linux.zip" -d

/home/ljy/cv_samples_v1.4.0/ngccli/

把 ngc 命令加入路径

export PATH=$PATH:/home/ljy/cv_samples_v1.4.0/ngccli/

(2)查询预训练模型

ngc registry model list nvstaging/tao/pretrained object detection: 该官方发布的查询指令存在缺陷

正确的选项是:NVIDIA/TensorFlow Pre-trained Object Detection within the NGC Registry Model List

也可以在jupyter notebook中执行,注意需要加!

有时候NGC需要登录,登录方式如下

注意这条命令是在宿主机上执行的,并且下载命令也需要改为nvidia

将yolov4相关文件的一些地方替换掉

继续修改配置文件,包括batch size,类别等

(3)开始训练

5.剪枝

TAO架构图已呈现。第一步是收集并整理数据集,并设定相关的训练参数;随后进入模型训练阶段;接着对模型进行剪枝优化后进行二次训练;最终输出优化后的模型并部署至生产环境。

执行剪枝

未剪枝目录

替换retrain配置文件

进一步修改配置文件参数

batch_size: 1

image_directory_path: "/workspace/tao-

experiments/data/pingpang.v2i.coco/"

image_extension: "jpg"

target_class_mapping {

key: "pingpang"

value: "pingpang"

}

创建训练目录

模型输出、日志输出

评估模型

测试模型

展示输出

全部评论 (0)

还没有任何评论哟~