# YOLOV8-HJCH **Repository Path**: huang-huansheng/yolov8-hjch ## Basic Information - **Project Name**: YOLOV8-HJCH - **Description**: 香橙派yolov8 C++推理代码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-10-28 - **Last Updated**: 2025-05-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: YOLOv8, AscendCL, Cpp, NPU ## README # yolov8-hjch #### 介绍 香橙派yolov8-hjch模型推理工程。该工程使用C++ ACL Lite加速推理,通过Netron工具可以查看该模型的输出张量为[1,3,640,640],输出张量为[1,5,8400]。 #### 版本配套表 | 配套 | 版本 | 环境准备指导 | | :------------------------------------------------------------: | :-------: | :------------------------------------------------------------: | | 固件与驱动 | 23.0.0 | [固件驱动安装准备](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC3alpha003/softwareinst/instg/instg_0005.html?Mode=PmIns&OS=Ubuntu&Software=cannToolKit) | | CANN | 7.0.0 |[CANN软件包安装准备](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC3alpha003/softwareinst/instg/instg_0011.html?Mode=PmIns&OS=Ubuntu&Software=cannToolKit)| | 硬件设备型号 | Orange Pi AIpro | 8G 8Tops | #### 执行准备 - 配置离线推理所需的环境变量。 ``` # 配置程序编译依赖的头文件与库文件路径 export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub ``` - 安装离线推理所需的ACLLite库。 参考[ACLLite仓](https://gitee.com/ascend/ACLLite)安装ACLLite库。 - 在有YOLOV8的环境上执行下面python脚本将.pt模型转化成.onnx模型: ``` import argparse from ultralytics import YOLO def main(): parser = argparse.ArgumentParser() parser.add_argument('--pt', default="yolov8n", help='.pt file') args = parser.parse_args() model = YOLO(args.pt) onnx_model = model.export(format="onnx", dynamic=False, simplify=True, opset=11) if __name__ == '__main__': main() ``` #### 离线推理 1. 以HwHiAiUser用户登录开发板,切换到当前目录。 2. 进程优化设置。 - 当设备内存**小于8G**时,可设置如下两个环境变量减少atc模型转换过程中使用的进程数,减小内存占用。 ``` export TE_PARALLEL_COMPILER=1 export MAX_COMPILE_CORE_NUMBER=1 ``` 3. aipp部分参数配置。[https://www.hiascend.com/document/detail/zh/canncommercial/80RC22/devaids/auxiliarydevtool/atlasatc_16_0016.html](https://www.hiascend.com/document/detail/zh/canncommercial/80RC22/devaids/auxiliarydevtool/atlasatc_16_0016.html) | 参数 | 值 | 说明 | | :------------------------------------------------------------: | :-------: | :------------------------------------------------------------: | | related_input_rank | 0 | 对模型第0个输入进行AIPP处理 | | src_image_size_w | 640 |图片的宽度 | | src_image_size_h | 640 |图片的高度 | | crop | false | 不进行图裁剪 | | input_format |YUV420SP_U8 |输入图像类型为YUV420SP_U8 | | aipp_mode | static | 静态AIPP | | csc_switch | true |打开色域转换开关,本文转换指YUV转RGB | | rbuv_swap_switch | false |色域转换前交换U,V通道 | 4. 模型转换,将hjch.onnx模型转换为昇腾AI处理器能识别的模型(.om)。 cd model目录下执行: ``` atc --model=hjch.onnx --framework=5 --soc_version=Ascend310B4 --output=hjch --insert_op_conf=aipp.cfg ``` atc命令中各参数的解释如下,详细约束说明请参见[《ATC模型转换指南》][(https://hiascend.com/document/redirect/CannCommunityAtc)])。 - --model:转换前模型文件的路径。 - --framework:原始框架类型。5表示ONNX。 - --output:转换后模型文件的路径。请注意,记录保存该om模型文件的路径,后续开发应用时需要使用。 - --input_shape:模型输入数据的shape。 - --soc_version:昇腾AI处理器的版本。 5. 编译源码。 执行以下命令编译源码。 ``` cd ../scripts bash build.sh ``` 6. 运行代码。 执行以下脚本运行工程: ``` bash run.sh ``` 执行成功后,output目录下会生成检测输出图片 #### 相关操作