ocr检测+识别:ai2d的build/run函数参数格式是什么

Viewed 30

问题描述


OCR如果想指定识别某区域文字,预处理和识别传入的参数应该是什么格式?

image.png

其他AI输入的原图是P888,三维形状CHW(3, 1080, 1920)
但是OCR检测预处理里返回的det形状却是四维(1, 113, 176, 3)这样,我理解的切片是如

cropped_np = img_p888_np[:, 0:540, 0:960]

这种的np切片,但是显然维度不同,没搞懂需要从什么数据源切片

image.png

而且我看识别模型里预处理

self.ai2d.build([1,3,ai2d_input_size[1],ai2d_input_size[0]],[1,3,self.model_input_size[1],self.model_input_size[0]])

形状都是1,3,长,宽,按照这样传入,前边的1,3是固定的吗?
但是传入的det形状(1, 113, 176, 3)顺序好像变了但是依旧可以识别别,

还有ai2d_output_shape必须是640*640效果才好吗,是宽*长吗,改为其他大小也要保持正方形吗,

硬件板卡


庐山派

硬件板卡


庐山派

硬件板卡


庐山派

硬件板卡


庐山派

1 Answers

这个和模型有关,有的模型输入是CHW的,有的模型输入是HWC的,因为这里的OCR识别输入是CHW的,但是在检测后处理接口中将识别的输入处理成了HWC的,所以设置ai2d的输入格式为:nn.ai2d_format.RGB_packed,输出格式为:nn.ai2d_format.NCHW_FMT。预处理过程做了pad和resize。如果使用ai2d做预处理,可以用crop做切分。而且就算直接切片,你转换一下就行:

# 比如img的shape[3,1080,1920]
# 这里shape是[3,540,960]
img_crop=img[:,0:540,0:960]
print(img_crop.shape)
img_crop_shape=img_crop.shape
# 这里变成[3,540*960]
tmp_1=img_crop.reshape((img_crop_shape[0],img_crop_shape[1]*img_crop_shape[2]))
# 这里是[540*960,3]
tmp_2=tmp_1.transpose()
# 这里变成[540,960,3]
tmp_3=tmp_2.reshape((img_crop_shape[1],img_crop_shape[2],img_crop_shape[0]))
print(tmp_3.shape)