| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| import abc |
|
|
| from .._utils.cli import ( |
| add_simple_inference_args, |
| get_subcommand_args, |
| perform_simple_inference, |
| str2bool, |
| ) |
| from .base import PaddleXPredictorWrapper, PredictorCLISubcommandExecutor |
|
|
|
|
| class ObjectDetection(PaddleXPredictorWrapper): |
| def __init__( |
| self, |
| *, |
| img_size=None, |
| threshold=None, |
| layout_nms=None, |
| layout_unclip_ratio=None, |
| layout_merge_bboxes_mode=None, |
| **kwargs, |
| ): |
| self._extra_init_args = { |
| "img_size": img_size, |
| "threshold": threshold, |
| "layout_nms": layout_nms, |
| "layout_unclip_ratio": layout_unclip_ratio, |
| "layout_merge_bboxes_mode": layout_merge_bboxes_mode, |
| } |
| super().__init__(**kwargs) |
|
|
| def _get_extra_paddlex_predictor_init_args(self): |
| return self._extra_init_args |
|
|
|
|
| class ObjectDetectionSubcommandExecutor(PredictorCLISubcommandExecutor): |
| def _update_subparser(self, subparser): |
| add_simple_inference_args(subparser) |
|
|
| subparser.add_argument( |
| "--img_size", |
| type=int, |
| help="Input image size (w, h).", |
| ) |
| subparser.add_argument( |
| "--threshold", |
| type=float, |
| help="Threshold for filtering out low-confidence predictions.", |
| ) |
| subparser.add_argument( |
| "--layout_nms", |
| type=str2bool, |
| help="Whether to use layout-aware NMS.", |
| ) |
| subparser.add_argument( |
| "--layout_unclip_ratio", |
| type=float, |
| help="Ratio of unclipping the bounding box.", |
| ) |
| subparser.add_argument( |
| "--layout_merge_bboxes_mode", |
| type=str, |
| help="Mode for merging bounding boxes.", |
| ) |
|
|
| @property |
| @abc.abstractmethod |
| def wrapper_cls(self): |
| raise NotImplementedError |
|
|
| def execute_with_args(self, args): |
| params = get_subcommand_args(args) |
| perform_simple_inference(self.wrapper_cls, params) |
|
|