openpose_caffe轉rknn


openpose_caffe_to_rknn.py

from rknn.api import RKNN
import cv2
import time
import numpy as np

if __name__ == '__main__':

    # Create RKNN object
    rknn = RKNN()
    
    # pre-process config
    print('--> config model')
    # 配置模型輸入,用於NPU對數據輸入的預處理
    # channel_mean_value='0 0 0 255',那么模型推理時,將會對RGB數據做如下轉換
    # (R - 0)/255, (G - 0)/255, (B - 0)/255。推理時,RKNN模型會自動做均值和歸一化處理
    # reorder_channel=’0 1 2’用於指定是否調整RBG順序,設置成0 1 2即按輸入的RGB順序不做調整
    # reorder_channel=’2 1 0’表示交換0和2通道,如果輸入是RGB,將會被調整為BGR。如果是BGR將會被
    # 調整為BGR    
    rknn.config(channel_mean_value='0 0 0 255', reorder_channel='2 1 0')
    print('done')

    # Load tensorflow model
    print('--> Loading model')
    ret = rknn.load_caffe(model='E:\\usb_test\\example\\yolov3\\openpose_keras_18key\\pose\\coco\\pose_deploy_linevec.prototxt', proto='caffe',
                            blobs='E:\\usb_test\\example\\yolov3\\openpose_keras_18key\\pose\\coco\\pose_iter_440000.caffemodel')
    if ret != 0:
        print('Load model failed!')
        exit(ret)
    print('done')

    # Build model
    print('--> Building model')

    ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
    #ret = rknn.build(do_quantization=False)
    if ret != 0:
        print('Build model failed!')
        exit(ret)
    print('done')
    # Export rknn model
    print('--> Export RKNN model')
    ret = rknn.export_rknn('./coco_quantization_368_654.rknn')
    if ret != 0:
        print('Export model failed!')
        exit(ret)
    print('done')

    rknn.release()

需要注意事項:由於rknn的模型是靜態的,所以,在模型量化的時候,輸入尺寸被固定,根據自己的圖片更改caffe模型,如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM