一、开发环境
1) 准备RK3399Pro开发板一块, USB键盘, USB鼠标,USB摄像头及HDMI显示器
2) 安装rknn-toolkit及依赖库, 按照wiki安装环境
3) 安装keras库 pip3 install --user keras 二、资源地址:
三、快速上手 1)解压附件代码到开发板上, 进入rknn_test目录 2)python3 rknn_transfer.py 进行RKNN模型转换(先将训练好的HDF5模型文件转为Tensorflow模型pb文件, 再转成RKNN模型文件) 3)python3 rknn_image_demo.py test_images/1.jpg 图像表情识别 4)python3 rknn_video_demo.py 摄像头实时表情识别 四、概述 本示例代码表情识别基本流程: 加载RKNN模型 -> 图像输入 -> 人脸检测 -> 图像预处理 -> NPU模型推理 -> 输出分类概率 -> 识别结果 人脸检测采用OPENCV-PYTHON识别,用FER2013数据集训练深度卷积神经网络构建的模型, 准确度为66%, 表情分七类:0 angry;1 disgust; 2 fear;3 happy; 4 sad; 5 surprise; 6 neutral; 五、通过RKNN转换时注意点 1、rknn.config(reorder_channel='0, 1, 2') ① 由于输入数据在前处理阶段做归一化处理, 所以RKNN模型转换时不必设置channel_mean_value。 ② reorder_channel设置为按输入的图像通道顺序不做调整。 ③ 构建模型时不进行量化,所以quantized_dtype可不作设置。 2、rknn.load_tensorflow(tf_pb=pb_path, inputs=['input_1'], outputs=['predictions/Softmax'], input_size_list=[[INPUT_WIDTH, INPUT_HEIGHT, 1]]) ① inputs指定模型中的输入节点, outputs指定模型中的输出节点。 ② input_size_list中注意输入数据为灰度图, 所以channel值应为1. 3、rknn.build(do_quantization=False) ① 不对模型进行量化。 4、 rknn.inference(inputs=[gray_face], data_type='float32', data_format='nhwc') ① 输入数据在预处理后已是float32类型, 所以推理阶段要求传入的数据类型必须保持一致。 ② 输入数据的data_format为默认值‘nhwc’ 六、代码解析
rknn_transfer.py
rknn_image_demo.py
原作者:jax.fang
|