方向分类器优化之增大输入分辨率(Input Resolution)

2021SC@SDUSC
  我之前在PaddleOCR的整体理解中写道,方向分类器依靠BDA数据增强和增大输入分辨率以提高识别精度,“图像的分辨率与识别精度有关,PP-OCR将归一化图像的高度和宽度分别设置为48和192,以此来提高方向分类器的准确率”。但是我却在写博客时忽略了增大输入分辨率这个方法。所以我这周的博客就来分析增大图像输入分辨率如何优化方向分类器。
  人们通常使用24x24的图像进行方向分辨的模型训练,但将图像转换成320x320时,指标就能提高1-2个百分点,模型表达能力就有一个非常显著的提升。当图像的分辨率较大时,图像的一些细节就会展现出来,这样模型就能更好地捕获图片的信息。增大图像分辨率也有利有弊,预测的速率可能会变慢。由于方向分类器使用的骨干网络是MobileNetV3_small_x0.35,这是最小的网络,所以就算是增大图像分辨率,预测时间也不会增加很多。比如将32x100的图像放大为48x192,方向分类器的识别精度有很明显的提升,快了将近两个点,而预测时间仅慢了0.02ms。如下图所示。
图像增大分辨率
性能比较
  所以PaddleOCR就采用48x192作为方向分类器识别图像的分辨率。这部分的代码如下所示:PaddleOCR-release-2.2>ppocr>data>imaug>rec_img_aug.py

class ClsResizeImg(object):
    def __init__(self, image_shape, **kwargs):
        self.image_shape = image_shape

    def __call__(self, data):
        img = data['image']
        norm_img = resize_norm_img(img, self.image_shape)
        data['image'] = norm_img
        return data

def resize_norm_img(img, image_shape):
    imgC, imgH, imgW = image_shape
    h = img.shape[0]
    w = img.shape[1]
    ratio = w / float(h)
    if math.ceil(imgH * ratio) > imgW:
        resized_w = imgW
    else:
        resized_w = int(math.ceil(imgH * ratio))
    resized_image = cv2.resize(img, (resized_w, imgH))
    resized_image = resized_image.astype('float32')
    if image_shape[0] == 1:
        resized_image = resized_image / 255
        resized_image = resized_image[np.newaxis, :]
    else:
        resized_image = resized_image.transpose((2, 0, 1)) / 255
    resized_image -= 0.5
    resized_image /= 0.5
    padding_im = np.zeros((imgC, imgH, imgW), dtype=np.float32)
    padding_im[:, :, 0:resized_w] = resized_image
    return padding_im

配置文件内容:PaddleOCR-release-2.2>configs>cls>cls_mv3.yml

Train:
  dataset:
    name: SimpleDataSet
    data_dir: ./train_data/cls
    label_file_list:
      - ./train_data/cls/train.txt
    transforms:
      - DecodeImage: # load image
          img_mode: BGR
          channel_first: False
      - ClsLabelEncode: # Class handling label
      - RecAug:
          use_tia: False
      - RandAugment:
      - ClsResizeImg:
          image_shape: [3, 48, 192] #更改方向分类器输入图片的分辨率
      - KeepKeys:
          keep_keys: ['image', 'label'] # dataloader will return list in this order
  loader:
    shuffle: True
    batch_size_per_card: 512
    drop_last: True
    num_workers: 8
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值