背景
数据集有限,使用paddleOCR直接识别准确率无法达到99%,这里尝试用目标检测对识别得分比较低的图片进行二次处理;
类别数目:数字(10)+字母(26)+字符(2)= 38
数据集标注跟训练过程这里使用自己开发的软件;
标注格式与labelimg一致,使用官网方法训练效果也一样;yolo目标检测官网
具体参考官方代码,这里记录注意事项(VS2019 + Qt);
推理参考:https://github.com/ultralytics/ultralytics/tree/main/examples
一、使用OpenCV的DNN
二、ONNXRuntime
三、Libtorch
libtorch 1.13.0
cpu-release:
https://download.pytorch.org/libtorch/cpu/libtorch-win-shared-with-deps-1.13.0%2Bcpu.zip
opencv_world490.lib
asmjit.lib
c10.lib
clog.lib
torch.lib
torch_cpu.lib
报错:#error: Macro clash with min and max – define NOMINMAX when compiling your program on Windows
解决:Qt的slot冲突
注意把#include <torch/torch.h>放到include "opencv.hpp"前面,不然也会冲突报错。
四、OpenVINO
没有试,转换时需要先转为onnx再转为openvino 下载OpenVINO™ toolkit
问题:如图,针对同一张图片,上图为python直接预测的结果,下图为OpenCV的DNN推理结果(ONNXRuntime也和下图差不多),和结果差异很大,原因未知。
最后使用Libtorch推理,效果可以。