添加onnx转rknn脚本

This commit is contained in:
haotian 2025-09-01 15:29:48 +08:00
parent 1e7e888dcd
commit 40b23bc99c
7 changed files with 101 additions and 29 deletions

View File

@ -307,6 +307,8 @@ class RK3588OCR:
# 推理
det_output = self.det_rknn.inference(inputs=[det_img], data_format="nchw")[0]
print("*"*100, np.max(det_output))
# 后处理
mask = det_output[0, 0, :, :]
threshold = 0.3
@ -407,7 +409,7 @@ class RK3588OCR:
# 识别文本
text, conf = self.recognize_text(crop_img)
if conf > 0.4: # 置信度过滤
if conf > 0.1: # 置信度过滤
ocr_results.append({
'text': text,
'confidence': conf,

58
011onnx转rknn.py Normal file
View File

@ -0,0 +1,58 @@
from rknn.api import RKNN
import cv2
import numpy as np
# 初始化 RKNN
rknn = RKNN()
# 配置参数(关键!)
rknn.config(
target_platform="rk3588", # 根据实际芯片型号修改
mean_values=[[0, 0, 0]], # YOLOv8 输入为 0-255无需归一化
std_values=[[255, 255, 255]], # 输入数据除以 255即 0-1 范围)
# quant_img_RGB2BGR=True,
optimization_level=3, # 最高优化级别
)
# 加载 ONNX
ret = rknn.load_onnx(model="/home/orangepi/Desktop/kangda_robotic_dog/yolov8_20250820.onnx")
assert ret == 0, "加载 ONNX 失败!"
# 转换模型
ret = rknn.build(
do_quantization=False, # 启用量化
# dataset="dataset.txt", # 校准数据路径
)
assert ret == 0, "转换 RKNN 失败!"
# 导出 RKNN
ret = rknn.export_rknn("/home/orangepi/Desktop/kangda_robotic_dog/yolov8_20250820.rknn")
assert ret == 0, "导出 RKNN 失败!"
# Set inputs
img = cv2.imread('/home/orangepi/Desktop/kangda_robotic_dog/微信图片_20250827165826.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img.resize((3, 640, 640))
img = np.expand_dims(img, 0)
# 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], data_format=['nchw'])
np.save('./tflite_mobilenet_v1_0.npy', outputs[0])
print(len(outputs))
print('done')
rknn.release()

BIN
tflite_mobilenet_v1_0.npy Normal file

Binary file not shown.

View File

@ -134,7 +134,7 @@ class BaiduOCRONNX:
return dt_boxes
def boxes_from_bitmap(self, pred, bitmap, dest_width, dest_height, max_candidates=1000, box_thresh=0.6):
def boxes_from_bitmap(self, pred, bitmap, dest_width, dest_height, max_candidates=1000, box_thresh=0.4):
"""
从位图中提取文本框
"""
@ -312,6 +312,8 @@ class BaiduOCRONNX:
# 将坐标转换回原图空间
if len(boxes) > 0:
boxes = self.post_process_det(boxes, ratio, padding_info, (ori_h, ori_w))
print("lenboxes", len(boxes))
return boxes, scores
@ -371,6 +373,9 @@ class BaiduOCRONNX:
if dt_boxes is None or len(dt_boxes) == 0:
return []
# visualize_results(image_path, {"box":dt_boxes})
# 2. 文本识别
ocr_results = []
@ -404,22 +409,22 @@ def main():
# 初始化OCR
# ocr = PaddleOCRONNX('/home/admin-root/haotian/康达瑞贝斯机器狗/det_shape.onnx', '/home/admin-root/haotian/康达瑞贝斯机器狗/rec_shape.onnx')
ocr = BaiduOCRONNX('/home/admin-root/haotian/康达瑞贝斯机器狗/det_shape_20250814.onnx', '/home/admin-root/haotian/康达瑞贝斯机器狗/rec_shape_20250815.onnx')
ocr = BaiduOCRONNX('/home/orangepi/Desktop/kangda_robotic_dog/det_mobile_14_shape.onnx', '/home/orangepi/Desktop/kangda_robotic_dog/rec_mobile_14_shape.onnx')
# 执行OCR
image_path = '/home/admin-root/haotian/康达瑞贝斯机器狗/data_image/001读表图片/3aee64cc1f90d93a5a45979f7b17cb4b_frame_001460.jpg'
image_path = '/home/orangepi/Desktop/kangda_robotic_dog/image_test/微信图片_20250827152914.jpg'
results = ocr.ocr(image_path)
# 打印结果
for result in results:
print(f"文本: {result['text']}")
print(f"置信度: {result['confidence']:.3f}")
print(f"检测得分: {result['score']:.3f}")
print(f"坐标: {result['box']}")
print("-" * 50)
# for result in results:
# print(f"文本: {result['text']}")
# print(f"置信度: {result['confidence']:.3f}")
# print(f"检测得分: {result['score']:.3f}")
# print(f"坐标: {result['box']}")
# print("-" * 50)
# 可视化结果
visualize_results(image_path, results)
# visualize_results(image_path, results)
def visualize_results(image_path, results):
"""
@ -442,5 +447,7 @@ def visualize_results(image_path, results):
if __name__ == '__main__':
ocr = BaiduOCR()
print(ocr.ocr(""))
main()
# ocr = BaiduOCR()
# print(ocr.ocr(""))

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,3 @@
from app.util.baiduOCR import main
main()

View File

@ -82,20 +82,22 @@ if __name__ == "__main__":
# 测试图片路径,请根据实际情况修改
# test_image_path = "/home/admin-root/haotian/康达瑞贝斯机器狗/data_image/001读表图片/2c7cc83019e7388a7041101da92c9829_frame_000000.jpg"
# #---------------------------------------测试ocr-----------------------------------------
import time
test_image_path = "/home/orangepi/Desktop/kangda_robotic_dog/image_test/632e474452d560edd7004f745319ff00_frame_000730.jpg"
# # #---------------------------------------测试ocr-----------------------------------------
# import time
# # test_image_path = "/home/orangepi/Desktop/kangda_robotic_dog/image_test/632e474452d560edd7004f745319ff00_frame_000300.jpg"
api_url="http://10.0.0.81:12345/api/v1/ocr_from_base64"
start_time = time.time()
# 调用测试函数
test_ocr_api(test_image_path, api_url)
print("cost time: ", time.time()-start_time)
# #---------------------------------------测试ocrender-----------------------------------------
# test_image_path = "/home/orangepi/Desktop/kangda_robotic_dog/投屏图片/微信图片_202508271731493.jpg"
# api_url="http://10.0.0.81:12345/api/v1/ocr_from_base64"
# start_time = time.time()
# # 调用测试函数
# test_ocr_api(test_image_path, api_url)
# print("cost time: ", time.time()-start_time)
# # #---------------------------------------测试ocrender-----------------------------------------
# # -----------------------------------------测试yolov8 侵占消防区域检测-----------------------------------------
# # test_image_path = "/home/orangepi/Desktop/kangda_robotic_dog/image_test/1e4c75b76e531606e2adc491a8f09ae8_frame_000000.jpg"
# test_image_path = "/home/orangepi/Desktop/kangda_robotic_dog/image_test/1e4c75b76e531606e2adc491a8f09ae8_frame_000720.jpg"
# test_image_path = "/home/orangepi/Desktop/kangda_robotic_dog/投屏图片/微信图片_202508271731501.jpg"
# api_url = "http://10.0.0.81:12345/api/v1/detect_from_base64_0"
# test_detect(test_image_path, api_url)
# #-----------------------------------------测试yolov8 侵占消防区域检测 end-----------------------------------------
@ -103,8 +105,8 @@ if __name__ == "__main__":
#-----------------------------------------测试yolov8 灭火器检测-----------------------------------------
# test_image_path = "/home/orangepi/Desktop/kangda_robotic_dog/image_test/ce81420a27cdaff14fe42f967eaa49a3_frame_001060.jpg"
# test_image_path = "/home/orangepi/Desktop/kangda_robotic_dog/image_test/1e4c75b76e531606e2adc491a8f09ae8_frame_000120.jpg"
# test_image_path = "/home/admin-root/haotian/康达瑞贝斯机器狗/YoloV8Obj/dataset_20250819/train/images/1e4c75b76e531606e2adc491a8f09ae8_frame_000120.jpg"
# api_url = "http://10.0.0.81:12345/api/v1/detect_from_base64_1"
# test_detect(test_image_path, api_url=api_url)
#-----------------------------------------测试yolov8 灭火器检测 end-----------------------------------------
# test_image_path = "/home/orangepi/Desktop/kangda_robotic_dog/image_test/1e4c75b76e531606e2adc491a8f09ae8_frame_000120.jpg"
test_image_path = "/home/orangepi/Desktop/kangda_robotic_dog/投屏图片/微信图片_202508271731496.jpg"
api_url = "http://10.0.0.81:12345/api/v1/detect_from_base64_1"
test_detect(test_image_path, api_url=api_url)
# -----------------------------------------测试yolov8 灭火器检测 end-----------------------------------------