README.md 3.79 KB

一、RK3588环境包括两个环境:

  1. 连接RK3588的host环境,一个Linux PC环境。该环境的要点:
  1. RK3588开发板环境
  • 该开发板要使用Linux,并预装python3.9版本
  • 安装rknpu2_1.3.0,并把执行下面三个命令,把相应的文件copy到制定路径。
cp ~/rknpu2_1.3.0/runtime/RK3588/Linux/rknn_server/aarch64/usr/bin/rknn_server /usr/bin/
cp ~/rknpu2_1.3.0/runtime/RK3588/Linux/librknn_api/aarch64/librknnrt.so /usr/lib/
cp ~/rknpu2_1.3.0/runtime/RK3588/Linux/librknn_api/aarch64/librknn_api.so /usr/lib/

二、在PC HOST上,从原有pytorch的代码生成RK3588需要的RKNN文件

  1. RK3588只能运行RKNN网络文件,所以需要使用rknn-toolkit2进行转换。
  2. 在warehouse_cls文件夹里面的warehouse_cls_run_from_host_to_rk3588.py文件是把ResNet训练好的模型文件resnet50_cpu_960.pth转换为cls_model.rknn,并自动部署到RK3588运行。在PC host上运行下面命令:
python3 warehouse_cls_run_from_host_to_rk3588.py

三、直接在RK3588上运行RKNN网络

  1. 在warehouse_cls文件夹里面的warehouse_cls_rk3588.py是在RK3588上面直接运行的例子。把cls_model.rknn拷贝到RK3588上面,并在RK3588上面直接运行下面命令:
python3 warehouse_cls_rk3588.py

四、在RK3588上支持SSD目标检测

  1. 生成onnx文件:在warehouse_detect文件夹里面的predict.py是用于生成onnx文件。需要在该文件中制定要训练好待转换的.pth文件
model_path = "forklift_person_vgg_500epoch.pth

以及类别文件

class_path = "warehouse_classes.txt"

该类别文件中定义了目标检测的类别,可以修改为实际需要的。 然后,需要设置predict.py的工作模式。"dir_predict"是用于给定一个测试文件夹,对该文件夹下面的图片进行目标检测测试。“export_onnx”是用于对给定的.pth文件进行onnx转换。通过predict.py中的下面语句进行设置:

mode = "export_onnx"

修改完成后,运行下面命令,即可获得onnx文件models.onnx。

python3 predict.py
  1. 把ONNX转换为RKNN:在warehouse_detect文件夹里面的predict_rknn.py是用于生成rknn文件。把前面步骤产生的onnx文件路径放到该.py文件中,执行下面命令,即可获得rknn文件detect_model.rknn。
python3 predict_rknn.py

注意:rknn.config将设置rknn中,对图片进行的预处理,包括减去均值mean_values、以及除去标准方差std_values。所以,我们需要确保在这里面进行的预处理(包括mean_values, std_values)的取值,和训练时一致。例如,在我们的例子中,训练时采用的mean_values是[104, 117, 123],并且并没有除以标准方差。那么,必须设置如下的config:

rknn.config(mean_values=[104, 117, 123], std_values=[1, 1, 1], target_platform=target_platform)                

另外,还需要确保在inference中,不会重复进行preprocessing。也就是确保rknn中的预处理和inference中对每张图片的预处理不会重复执行,否则将会数值出错。