PaddleOCR/tools/infer/predict_rec.py
Line 110 in a67a6fa
| | imgW=int((32*max_wh_ratio)) |
PaddleOCR/tools/infer/predict_rec.py
Line 117 in a67a6fa
| | ifmath.ceil(imgH*ratio) >imgW: |
PaddleOCR/tools/infer/predict_rec.py
Line 120 in a67a6fa
| | resized_w=int(math.ceil(imgH*ratio)) |
假设一张图片A的size是(3, 39, 305)
情况一:batch内的max_wh_ratio即为A的ratio
那么imgW = int(32*(305/39) = 250,即图片A在此batch内的resized_w = 250
情况二:batch内的A的ratio不是最大,假设max_wh_ratio=10
那么imgW = int(32*10) = 320, 此时图片A会执行resized_w = int(math.ceil(imgH * ratio)) ,图片在此batch内的resize_w = 251
在并发的场景下,同一张图片在不同的batch里可能会得到不同的处理结果,从而导致同一张图多次调用会出现不同的识别结果
解决方法:
将上述三行代码统一,统一都用math.ceil()上取整,或者都不用直接用int()取整
4条答案
按热度按时间2jcobegt1#
这个识别结果差别会很大吗?有具体实验的结果示例吗?
zvokhttg2#
这个识别结果差别会很大吗?有具体实验的结果示例吗?
上图是连着两次的调用,一次识别成L,一次识别成I(后处理成的1)
r9f1avp53#
这个识别结果差别会很大吗?有具体实验的结果示例吗?
主要问题是同一张图输出会有不同识别结果返回这有点不合常理- -
gcxthw6b4#
更新一下最新代码试试