79 lines
2.0 KiB
Markdown
79 lines
2.0 KiB
Markdown
|
|
# RKNN 堆料分类推理系统 README
|
|||
|
|
|
|||
|
|
本项目用于在 RK3588 平台上运行 RKNN 分类模型,对多个 ROI 区域进行堆料状态分类,包括:
|
|||
|
|
|
|||
|
|
未堆料 0
|
|||
|
|
小堆料 1
|
|||
|
|
大堆料 2
|
|||
|
|
未浇筑满 3
|
|||
|
|
浇筑满 4
|
|||
|
|
|
|||
|
|
项目中支持 多 ROI 裁剪、模型推理、加权判断(小/大堆料) 和分类结果输出。
|
|||
|
|
|
|||
|
|
## 目录结构
|
|||
|
|
|
|||
|
|
project/
|
|||
|
|
│── yiliao_cls.rknn # RKNN 模型
|
|||
|
|
│── best.pt # pt 模型
|
|||
|
|
│── roi_coordinates/ # ROI 坐标文件目录
|
|||
|
|
│ └── 1_rois.txt
|
|||
|
|
│── test_image/ # 测试图片目录
|
|||
|
|
│ └── 1.jpg
|
|||
|
|
└── 2.jpg
|
|||
|
|
└── 3.jpg
|
|||
|
|
│── yiliao_main_rknn.py # RKNN主推理脚本
|
|||
|
|
│── yiliao_main_pc.py # PC推理脚本
|
|||
|
|
│── README.md
|
|||
|
|
|
|||
|
|
|
|||
|
|
## 配置(略)
|
|||
|
|
## 安装依赖(略)
|
|||
|
|
|
|||
|
|
|
|||
|
|
## 调用示例
|
|||
|
|
单张图片推理调用示例
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
|
|||
|
|
from yiliao_main_rknn import classify_frame_with_rois
|
|||
|
|
|
|||
|
|
# 示例调用
|
|||
|
|
# =====================================================
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
model_path = "yiliao_cls.rknn"
|
|||
|
|
roi_file = "./roi_coordinates/1_rois.txt"
|
|||
|
|
|
|||
|
|
frame = cv2.imread("./test_image/1.png")
|
|||
|
|
|
|||
|
|
result = classify_frame_with_single_roi(model_path, frame, roi_file)
|
|||
|
|
|
|||
|
|
print(result)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
##小堆料 / 大堆料加权判定说明
|
|||
|
|
|
|||
|
|
模型原始输出中,小堆料(class 1)与大堆料(class 2)相比时容易出现概率接近的情况。
|
|||
|
|
|
|||
|
|
通过加权机制:
|
|||
|
|
|
|||
|
|
✔ 可以避免因整体概率偏低导致分类不稳定
|
|||
|
|
✔ 优先放大“大堆料 的可能性”(因为 w2 > w1)
|
|||
|
|
✔ score 更能反映堆料大小的趋势,而不是绝对概率
|
|||
|
|
|
|||
|
|
为提高判断稳定性,采用了加权评分方式:(这些参数都可以根据实际情况在文件中对weighted_small_large中参数进行修改)
|
|||
|
|
score = (0.3 * p1 + 0.7 * p2) / (p1 + p2)
|
|||
|
|
score ≥ 0.4 → 大堆料
|
|||
|
|
score < 0.4 → 小堆料
|
|||
|
|
|
|||
|
|
p1:小堆料概率
|
|||
|
|
p2:大堆料概率
|
|||
|
|
score 越接近 1 越倾向于大堆料
|
|||
|
|
score 越接近 0 越倾向于小堆料
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|