6. 进阶内容¶ 本章为您介绍进阶内容,内容包括 Horizon Torch Samples 及 高效模型设计指导手册。 6.1. Horizon Torch Samples 6.1.1. 简介 6.1.1.1. 特性 6.1.1.2. 示例模型 6.1.2. 使用框架 6.1.2.1. 框架 6.1.2.1.1. HAT核心模块 6.1.2.1.2. HAT构建训练流程 6.1.2.2. 执行引擎 6.1.2.2.1. Engine的执行流程 6.1.2.2.2. Engine结构 6.1.3. 使用指南 6.1.3.1. 注册机制 6.1.3.1.1. 自定义模块 6.1.3.1.1.1. 定义一个新的backbone(如MobileNet): 6.1.3.1.1.2. 导入新定义的模块 6.1.3.1.1.3. 在config中使用新的backbone 6.1.3.2. config 文件介绍 6.1.3.2.1. 全局关键字 6.1.3.2.2. 如何配置 6.1.3.3. 通过命令行覆盖config参数 6.1.3.4. 计算量工具 6.1.3.4.1. 计算量的定义 6.1.3.4.2. 计算量工具的使用方法 6.1.3.5. 数据校准 6.1.3.5.1. 如何定义 Calibration 模型 6.1.3.5.2. 浮点模型做 Calibration 6.1.3.5.3. 使用Calibration模型做QAT训练 6.1.3.6. 如何编译模型 6.1.3.6.1. 输入为 config 文件 6.1.3.7. set_qconfig 书写规范和自定义 qconfig 介绍 6.1.3.7.1. set_qconfig 方法书写规范 6.1.3.7.2. 自定义 QAT QConfig 参数 6.1.3.8. 如何进行量化训练 6.1.3.8.1. 量化训练流程简介 6.1.3.8.1.1. 添加自定义模型 6.1.3.8.1.2. 添加 config 文件 6.1.3.8.2. 训练 6.1.3.8.3. 恢复训练 6.1.3.8.4. qat_mode 6.1.3.8.4.1. 作用 6.1.3.8.4.2. 可选项定义 6.1.3.8.4.3. 原理介绍 6.1.3.8.4.3.1. fuse_bn 6.1.3.8.4.3.2. with_bn 6.1.3.8.4.3.3. with_bn_reverse_fold 6.1.3.8.4.4. 用法 6.1.3.8.4.4.1. 设置 qat_mode 6.1.3.8.4.4.2. 查看当前 qat_mode 6.1.3.8.4.4.3. 设置逐步吸收 BN 6.1.3.8.4.5. qat_mode 总结 6.1.4. ModelZoo 6.1.4.1. Classification 6.1.4.2. Detection 6.1.4.3. Segmentation 6.1.4.4. Lidar 6.1.5. API手册 6.1.5.1. hat.data 6.1.5.1.1. Data 6.1.5.1.1.1. collates 6.1.5.1.1.2. dataloaders 6.1.5.1.1.3. datasets 6.1.5.1.1.4. samplers 6.1.5.1.1.5. transforms 6.1.5.1.1.5.1. lidar_utils 6.1.5.1.2. API Reference 6.1.5.2. hat.callbacks 6.1.5.2.1. Callbacks 6.1.5.2.2. API Reference 6.1.5.3. hat.engine 6.1.5.3.1. Engine 6.1.5.3.1.1. processors 6.1.5.3.2. API Reference 6.1.5.4. hat.models 6.1.5.4.1. Models 6.1.5.4.1.1. backbones 6.1.5.4.1.2. losses 6.1.5.4.1.3. necks 6.1.5.4.1.4. structures 6.1.5.4.1.4.1. detectors 6.1.5.4.1.4.2. fcos 6.1.5.4.1.4.3. lidar 6.1.5.4.1.4.4. retinanet 6.1.5.4.1.4.5. seg 6.1.5.4.1.4.6. deeplab 6.1.5.4.1.4.7. fcn 6.1.5.4.1.4.8. pointpillars 6.1.5.4.2. API Reference 6.1.5.5. hat.metrics 6.1.5.5.1. Metrics 6.1.5.5.2. API Reference 6.1.5.6. hat.profiler 6.1.5.6.1. Profiler 6.1.5.6.2. API Reference 6.1.5.7. hat.visualize 6.1.5.7.1. Visualize 6.1.5.7.2. API Reference 6.1.6. 示例说明 6.1.6.1. 执行脚本 6.1.6.1.1. tools 6.1.6.2. 分类模型训练 6.1.6.2.1. 训练流程 6.1.6.2.1.1. 数据集准备 6.1.6.2.1.2. 模型训练 6.1.6.2.1.3. 量化训练 6.1.6.2.1.4. 模型检查编译和仿真上板精度验证 6.1.6.2.1.5. 结果可视化 6.1.6.3. FCOS检测模型训练 6.1.6.3.1. 数据集准备 6.1.6.3.2. 浮点模型训练 6.1.6.3.2.1. 模型构建 6.1.6.3.2.2. 数据增强 6.1.6.3.2.3. 训练策略 6.1.6.3.3. 量化模型训练 6.1.6.3.3.1. quantize参数的值不同 6.1.6.3.3.2. 训练策略不同 6.1.6.3.3.3. 模型验证 6.1.6.3.3.4. 量化训练 6.1.6.3.3.5. 模型检查编译和仿真上板精度验证 6.1.6.3.3.6. 结果可视化 6.1.6.4. Deeplab分割模型训练 6.1.6.4.1. 训练流程 6.1.6.4.1.1. 数据集下载 6.1.6.4.1.2. 数据集打包 6.1.6.4.1.3. 模型训练 6.1.6.4.1.4. 量化训练 6.1.6.4.1.5. 模型检查编译和仿真上板精度验证 6.1.6.4.1.6. 结果可视化 6.1.6.5. Fastscnn分割模型训练 6.1.6.5.1. 训练流程 6.1.6.5.1.1. 数据集下载 6.1.6.5.1.2. 数据集打包 6.1.6.5.1.3. 模型训练 6.1.6.5.1.4. 量化训练 6.1.6.5.1.5. 模型检查编译和仿真上板精度验证 6.1.6.5.1.6. 结果可视化 6.1.6.6. Unet分割模型训练 6.1.6.6.1. 训练流程 6.1.6.6.1.1. 数据集下载 6.1.6.6.1.2. 数据集打包 6.1.6.6.1.3. 模型训练 6.1.6.6.1.4. 量化训练 6.1.6.6.1.5. 模型检查编译和仿真上板精度验证 6.1.6.6.1.6. 结果可视化 6.1.6.7. PointPillars检测模型训练 6.1.6.7.1. 数据集准备 6.1.6.7.2. 浮点模型训练 6.1.6.7.2.1. 模型构建 6.1.6.7.2.2. 数据增强 6.1.6.7.2.3. 训练策略 6.1.6.7.2.4. 量化模型训练 6.1.6.7.2.5. quantize参数的值不同 6.1.6.7.2.6. 训练策略不同 6.1.6.7.2.7. 模型验证 6.1.6.7.2.8. 仿真上板精度验证 6.1.6.7.2.9. 结果可视化 6.1.6.7.2.10. 模型检查和编译 6.1.6.8. 参考模型精度问题定位和处理方法 6.1.6.8.1. 训练不收敛 6.1.6.8.2. 精度未达到目标 6.2. 高效模型设计指导手册 6.2.1. 概述 6.2.2. 通用建议 6.2.2.1. 建议1:使用地平线高效实现的Backbone 6.2.2.2. 建议2:选择BPU算子搭建模型 6.2.2.3. 建议3:避免使用查表算子 6.2.2.4. 建议4:避免单独使用BN、Add、Relu算子 6.2.2.5. 建议5:遵循BPU数据对齐规则,充分利用MAC计算资源