import numpy as np
|
import cv2
|
from rknn.api import RKNN
|
from ssd_post_process import ssd_post_process
|
|
if __name__ == '__main__':
|
|
# Create RKNN object
|
rknn = RKNN(verbose=True)
|
|
# Build model
|
print('--> hybrid_quantization_step2')
|
ret = rknn.hybrid_quantization_step2(model_input='./ssd_mobilenet_v2.model',
|
data_input='./ssd_mobilenet_v2.data',
|
model_quantization_cfg='./ssd_mobilenet_v2.quantization.cfg')
|
if ret != 0:
|
print('hybrid_quantization_step2 failed!')
|
exit(ret)
|
print('done')
|
|
# Export rknn model
|
print('--> Export rknn model')
|
ret = rknn.export_rknn('./ssd_mobilenet_v2.rknn')
|
if ret != 0:
|
print('Export rknn model failed!')
|
exit(ret)
|
print('done')
|
|
# Accuracy analysis
|
print('--> Accuracy analysis')
|
ret = rknn.accuracy_analysis(inputs=['./dog_bike_car_300x300.jpg'], output_dir=None)
|
if ret != 0:
|
print('Accuracy analysis failed!')
|
exit(ret)
|
print('done')
|
|
# Set inputs
|
img = cv2.imread('./dog_bike_car_300x300.jpg')
|
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
|
|
# Init runtime environment
|
print('--> Init runtime environment')
|
ret = rknn.init_runtime()
|
if ret != 0:
|
print('Init runtime environment failed!')
|
exit(ret)
|
print('done')
|
|
# Inference
|
print('--> Running model')
|
outputs = rknn.inference(inputs=[img])
|
np.save('./functions_hybrid_quant_0.npy', outputs[0])
|
np.save('./functions_hybrid_quant_1.npy', outputs[1])
|
ssd_post_process(np.reshape(outputs[0], (-1)), np.reshape(outputs[1], (-1)), './dog_bike_car_300x300.jpg', './')
|
print('done')
|
|
rknn.release()
|