Spaces:
Running
on
Zero
Running
on
Zero
| from detectron2.config import LazyCall as L | |
| from detectron2.layers import ShapeSpec | |
| from detectron2.modeling.meta_arch import GeneralizedRCNN | |
| from detectron2.modeling.anchor_generator import DefaultAnchorGenerator | |
| from detectron2.modeling.backbone.fpn import LastLevelMaxPool | |
| from detectron2.modeling.backbone import BasicStem, FPN, ResNet | |
| from detectron2.modeling.box_regression import Box2BoxTransform | |
| from detectron2.modeling.matcher import Matcher | |
| from detectron2.modeling.poolers import ROIPooler | |
| from detectron2.modeling.proposal_generator import RPN, StandardRPNHead | |
| from detectron2.modeling.roi_heads import ( | |
| StandardROIHeads, | |
| FastRCNNOutputLayers, | |
| MaskRCNNConvUpsampleHead, | |
| FastRCNNConvFCHead, | |
| ) | |
| from ..data.constants import constants | |
| model = L(GeneralizedRCNN)( | |
| backbone=L(FPN)( | |
| bottom_up=L(ResNet)( | |
| stem=L(BasicStem)(in_channels=3, out_channels=64, norm="FrozenBN"), | |
| stages=L(ResNet.make_default_stages)( | |
| depth=50, | |
| stride_in_1x1=True, | |
| norm="FrozenBN", | |
| ), | |
| out_features=["res2", "res3", "res4", "res5"], | |
| ), | |
| in_features="${.bottom_up.out_features}", | |
| out_channels=256, | |
| top_block=L(LastLevelMaxPool)(), | |
| ), | |
| proposal_generator=L(RPN)( | |
| in_features=["p2", "p3", "p4", "p5", "p6"], | |
| head=L(StandardRPNHead)(in_channels=256, num_anchors=3), | |
| anchor_generator=L(DefaultAnchorGenerator)( | |
| sizes=[[32], [64], [128], [256], [512]], | |
| aspect_ratios=[0.5, 1.0, 2.0], | |
| strides=[4, 8, 16, 32, 64], | |
| offset=0.0, | |
| ), | |
| anchor_matcher=L(Matcher)( | |
| thresholds=[0.3, 0.7], labels=[0, -1, 1], allow_low_quality_matches=True | |
| ), | |
| box2box_transform=L(Box2BoxTransform)(weights=[1.0, 1.0, 1.0, 1.0]), | |
| batch_size_per_image=256, | |
| positive_fraction=0.5, | |
| pre_nms_topk=(2000, 1000), | |
| post_nms_topk=(1000, 1000), | |
| nms_thresh=0.7, | |
| ), | |
| roi_heads=L(StandardROIHeads)( | |
| num_classes=80, | |
| batch_size_per_image=512, | |
| positive_fraction=0.25, | |
| proposal_matcher=L(Matcher)( | |
| thresholds=[0.5], labels=[0, 1], allow_low_quality_matches=False | |
| ), | |
| box_in_features=["p2", "p3", "p4", "p5"], | |
| box_pooler=L(ROIPooler)( | |
| output_size=7, | |
| scales=(1.0 / 4, 1.0 / 8, 1.0 / 16, 1.0 / 32), | |
| sampling_ratio=0, | |
| pooler_type="ROIAlignV2", | |
| ), | |
| box_head=L(FastRCNNConvFCHead)( | |
| input_shape=ShapeSpec(channels=256, height=7, width=7), | |
| conv_dims=[], | |
| fc_dims=[1024, 1024], | |
| ), | |
| box_predictor=L(FastRCNNOutputLayers)( | |
| input_shape=ShapeSpec(channels=1024), | |
| test_score_thresh=0.05, | |
| box2box_transform=L(Box2BoxTransform)(weights=(10, 10, 5, 5)), | |
| num_classes="${..num_classes}", | |
| ), | |
| mask_in_features=["p2", "p3", "p4", "p5"], | |
| mask_pooler=L(ROIPooler)( | |
| output_size=14, | |
| scales=(1.0 / 4, 1.0 / 8, 1.0 / 16, 1.0 / 32), | |
| sampling_ratio=0, | |
| pooler_type="ROIAlignV2", | |
| ), | |
| mask_head=L(MaskRCNNConvUpsampleHead)( | |
| input_shape=ShapeSpec(channels=256, width=14, height=14), | |
| num_classes="${..num_classes}", | |
| conv_dims=[256, 256, 256, 256, 256], | |
| ), | |
| ), | |
| pixel_mean=constants.imagenet_bgr256_mean, | |
| pixel_std=constants.imagenet_bgr256_std, | |
| input_format="BGR", | |
| ) | |