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)
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
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))
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')
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)