添加onnx转rknn脚本
This commit is contained in:
parent
1e7e888dcd
commit
40b23bc99c
@ -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
58
011onnx转rknn.py
Normal 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
BIN
tflite_mobilenet_v1_0.npy
Normal file
Binary file not shown.
@ -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
3
机器狗后台服务/test_baiduocr.py
Normal file
3
机器狗后台服务/test_baiduocr.py
Normal file
@ -0,0 +1,3 @@
|
||||
from app.util.baiduOCR import main
|
||||
|
||||
main()
|
||||
@ -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-----------------------------------------
|
||||
Loading…
Reference in New Issue
Block a user