Shortcuts

Source code for mmocr.models.textdet.dense_heads.head_mixin

# Copyright (c) OpenMMLab. All rights reserved.
import numpy as np

from mmocr.models.builder import HEADS, build_loss, build_postprocessor
from mmocr.utils import check_argument


[docs]@HEADS.register_module() class HeadMixin: """Base head class for text detection, including loss calcalation and postprocess. Args: loss (dict): Config to build loss. postprocessor (dict): Config to build postprocessor. """ def __init__(self, loss, postprocessor): assert isinstance(loss, dict) assert isinstance(postprocessor, dict) self.loss_module = build_loss(loss) self.postprocessor = build_postprocessor(postprocessor)
[docs] def resize_boundary(self, boundaries, scale_factor): """Rescale boundaries via scale_factor. Args: boundaries (list[list[float]]): The boundary list. Each boundary has :math:`2k+1` elements with :math:`k>=4`. scale_factor (ndarray): The scale factor of size :math:`(4,)`. Returns: list[list[float]]: The scaled boundaries. """ assert check_argument.is_2dlist(boundaries) assert isinstance(scale_factor, np.ndarray) assert scale_factor.shape[0] == 4 for b in boundaries: sz = len(b) check_argument.valid_boundary(b, True) b[:sz - 1] = (np.array(b[:sz - 1]) * (np.tile(scale_factor[:2], int( (sz - 1) / 2)).reshape(1, sz - 1))).flatten().tolist() return boundaries
[docs] def get_boundary(self, score_maps, img_metas, rescale): """Compute text boundaries via post processing. Args: score_maps (Tensor): The text score map. img_metas (dict): The image meta info. rescale (bool): Rescale boundaries to the original image resolution if true, and keep the score_maps resolution if false. Returns: dict: A dict where boundary results are stored in ``boundary_result``. """ assert check_argument.is_type_list(img_metas, dict) assert isinstance(rescale, bool) score_maps = score_maps.squeeze() boundaries = self.postprocessor(score_maps) if rescale: boundaries = self.resize_boundary( boundaries, 1.0 / self.downsample_ratio / img_metas[0]['scale_factor']) results = dict( boundary_result=boundaries, filename=img_metas[0]['filename']) return results
[docs] def loss(self, pred_maps, **kwargs): """Compute the loss for scene text detection. Args: pred_maps (Tensor): The input score maps of shape :math:`(NxCxHxW)`. Returns: dict: The dict for losses. """ losses = self.loss_module(pred_maps, self.downsample_ratio, **kwargs) return losses
Read the Docs v: v0.4.1
Versions
latest
stable
v0.4.1
v0.4.0
v0.3.0
v0.2.1
v0.2.0
v0.1.0
Downloads
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.