可以通过项目中的tools/infer_det.py直接在文字检测模型的 训练模型 上进行推理。
预处理算子 相关参数在Eval.dataset.transforms下。
文字检测模型在推理时,预处理共包含5个算子:
DecodeImage
DetResizeForTest
NormalizeImage
ToCHWImage
KeepKeys
预处理算子类的定义在ppocr/data/imaug/operators.py中
DecodeImage
直接使用openCV的imdecode()方法进行解码,解码后的图像颜色格式为BGR,矩阵维度按 HWC 顺序排列。
随后根据img_mode的参数值,将图像转换成灰度图、RGB格式或保持BGR格式不变;根据channel_first参数决定是否将channel变换到第一个维度 CHW。
DetResizeForTest
默认self.resize_type为0
在使用 训练模型 进行快速推理时,配置参数为image_shape: [736, 1280],此时对象中的数据成员self.resize_type的值应该为1。
当self.resize_type为0时,将把图片宽高等比例缩放成均在参数限制内的、32的整数倍。
当self.resize_type为1时,直接调用了openCV的resize()方法进行缩放。
当self.resize_type为2时,首先是从图片宽高中找出最长边,计算缩放比例,然后保持图片的宽高比不变进行缩放。
NormalizeImage
这里使用的图像归一化是常见的方法,先乘上scale进行线性变换,再减去对应通道的平均值,最后除以对应通道的标准差。
ToCHWImage
将图像矩阵维度变换为 CHW
KeepKeys
将data从dict类型,变成了list。
batch = transform(data, ops)
经过上面的一系列处理,transform()方法返回了一个list结果batch。
batch中的第一个元素为图像矩阵,颜色格式为BGR,维度顺序依次为CHW ;
batch中的第二个元素为图像缩放数据的1X4矩阵,分别为:原始高、原始宽、高度缩放比例和宽度缩放比例。
实际部署推理时,文字检测模型运行的是项目下tools/infer/predict_det.py这个脚本(推理模型)
DetResizeForTest的参数为None,采用了和上文预处理中不同的缩放方法
https://blog.csdn.net/dzdvdzd/article/details/115616493