Exemple #1
0
def quanlization_darknet_model(model_path,
                               weight_path,
                               dataset_txt,
                               is_quantization=True,
                               pre_compile=False):
    # 创建RKNN执行对象
    rknn = RKNN(verbose=True, verbose_file='verbose.log')
    rknn.config(channel_mean_value='0 0 0 255',
                reorder_channel='0 1 2',
                batch_size=4)
    flag = rknn.load_darknet(model=model_path, weight=weight_path)
    # 后面不用修改
    if flag == 0:
        print('load_darknet success')
    else:
        print('load_darknet failure')
    print('done')
    # 创建解析pb模型
    # do_quantization=False指定不进行量化
    # 量化会减小模型的体积和提升运算速度,但是会有精度的丢失
    print('--> Building model')
    print(os.getcwd())
    # flag = rknn.build(do_quantization=False)
    if is_quantization == True:
        flag = rknn.build(do_quantization=True,
                          dataset=dataset_txt,
                          pre_compile=pre_compile)
        print('do quantization ')
        # 导出保存rknn模型文件
        save_rknn_path = model_dir + '/' + model_path.split('/')[-1].split(
            '.')[0] + '_quan.rknn'
    else:
        flag = rknn.build(do_quantization=False)
        print('not do quantization')
        # 导出保存rknn模型文件
        save_rknn_path = model_dir + '/' + model_path.split('/')[-1].split(
            '.')[0] + '.rknn'

    if flag == 0:
        print('build success')
    else:
        print('build failure')
    print('done')

    flag = rknn.export_rknn(save_rknn_path)
    if flag == 0:
        print('export success')
    else:
        print('export failure')
    print('done')
    print(save_rknn_path)
    # Release RKNN Context
    rknn.release()
    print('save_rknn_path:', save_rknn_path)
Exemple #2
0
def keras_to_rknn(cfg_path, h5_path, darknet_path, rknn_path, dataset_path,
                  flag):
    # ------------------------------------------------------#
    #   h5 -> darknet, 保存成.weights
    # ------------------------------------------------------#
    keras_loader = KerasParser(cfg_path, h5_path, darknet_path)

    for block in keras_loader.block_gen:
        if 'convolutional' in block['type']:
            keras_loader.conv(block)
    keras_loader.close()

    # ------------------------------------------------------#
    #   darknet -> rknn, 保存成.rknn
    # ------------------------------------------------------#
    # Create RKNN object
    rknn = RKNN()

    # Load tensorflow model
    print('--> Loading model')
    rknn.load_darknet(model=cfg_path, weight=darknet_path)
    print('done')
    rknn.config(channel_mean_value='0 0 0 255',
                reorder_channel='0 1 2',
                batch_size=1)

    # Build model
    print('--> Building model')
    if flag:
        rknn.build(do_quantization=True,
                   dataset=dataset_path,
                   pre_compile=True)
    else:
        rknn.build(do_quantization=False, pre_compile=True)
    print('done')

    # export model
    print('--> Export model')
    rknn.export_rknn(rknn_path)
    print('done')
    from settings import yolov3_weights, yolov3_model_cfg, rknn_model, \
        pre_compile

    # Create RKNN object
    total_timer = timer()
    rknn = RKNN()

    # pre-process config
    print('--> config model')
    rknn.config(channel_mean_value='103.94 116.78 123.68 58.82',
                reorder_channel='0 1 2')
    print('done')

    # Load tensorflow model
    print('--> Loading model')
    ret = rknn.load_darknet(model=yolov3_model_cfg, weight=yolov3_weights)
    if ret != 0:
        raise Exception('Load darknet yolov3 failed!')
    print('done')

    # Build model
    print('--> Building model')
    build_timer = timer()
    # ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
    # do_quantization:是否对模型进行量化,值为 True 或 False。
    ret = rknn.build(do_quantization=False, pre_compile=pre_compile)
    if ret != 0:
        raise Exception('Build yolov3 failed!')
    print('done, time: %.2fs' % (timer() - build_timer))

    # Export rknn model
Exemple #4
0
if __name__ == "__main__":

    VIDEO_PATH = sys.argv[1]
    # Create RKNN object
    rknn = RKNN(verbose=True)

    # pre-process config
    print('--> config model')
    rknn.config(reorder_channel='0 1 2', channel_mean_value='0 0 0 255')
    print('done')

    if NEED_BUILD_MODEL:
        # Load pytorch model
        print('--> Loading model {}'.format(MODEL))
        ret = rknn.load_darknet(model='/home/labasus/DataDisk/luqiao/deep_sort_yolov3/yolov3.cfg', weight=MODEL)
        # ret = rknn.load_onnx(model=MODEL)
        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')
        if ret != 0:
            print('Build onnx failed!')
            exit(ret)
        print('done')

        # Export rknn model
        print('--> Export RKNN model {}'.format(RKNN_MODEL_PATH))
Exemple #5
0
    RKNN_MODEL_PATH = './yolov3_416.rknn'
    im_file = './dog_bike_car_416x416.jpg'
    DATASET = './dataset.txt'

    # Download yolov3.weight
    download_yolov3_weight(WEIGHT_PATH)

    # Create RKNN object
    rknn = RKNN()

    NEED_BUILD_MODEL = True

    if NEED_BUILD_MODEL:
        # Load caffe model
        print('--> Loading model')
        ret = rknn.load_darknet(model=MODEL_PATH, weight=WEIGHT_PATH)
        if ret != 0:
            print('load caffe model failed!')
            exit(ret)
        print('done')

        rknn.config(reorder_channel='0 1 2', channel_mean_value='0 0 0 255')

        # Build model
        print('--> Building model')
        ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
        if ret != 0:
            print('build model failed.')
            exit(ret)
        print('done')
Exemple #6
0
from matplotlib import pyplot as plt

import re
import math
import random

from rknn.api import RKNN

if __name__ == '__main__':

    # Create RKNN object
    rknn = RKNN()

    # Load tensorflow model
    print('--> Loading model')
    rknn.load_darknet(model='./yolov3.cfg', weight="./yolov3.weights")
    #rknn.load_darknet(model='./yolov3-tiny.cfg', weight="./yolov3-tiny.weights")

    print('done')

    rknn.config(channel_mean_value='0 0 0 255',
                reorder_channel='0 1 2',
                batch_size=1)

    # Build model
    print('--> Building model')
    #rknn.build(do_quantization=True, dataset='./dataset.txt')
    rknn.build(do_quantization=True, dataset='./dataset_608x608.txt')
    print('done')

    #rknn.export_rknn('./yolov3_tiny.rknn')
#from matplotlib import pyplot as plt

import re
import math
import random

from rknn.api import RKNN


if __name__ == '__main__':

    # Create RKNN object
    rknn = RKNN()

    # Load tensorflow model
    print('--> Loading model')
    #rknn.load_darknet(model='./yolov3_416x416.cfg', weight="./yolov3.weights")
    rknn.load_darknet(model='../cfg/yolov3_416x416.cfg', weight="../logs/cc.weights")
    print('done')

    rknn.config(channel_mean_value='0 0 0 255', reorder_channel='0 1 2', batch_size=1)

    # Build model
    print('--> Building model')
    rknn.build(do_quantization=True, dataset='./dataset.txt', pre_compile=True)
    print('done')

    #rknn.export_rknn('./yolov3_416x416.rknn')
    rknn.export_rknn("./new.rknn")
    exit(0)