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"
}

创建训练目录

模型输出、日志输出

评估模型

测试模型

展示输出

