|
@@ -1,33 +1,25 @@
|
|
-
|
|
|
|
from typing import Any, Callable, List, Optional, Tuple, Union
|
|
from typing import Any, Callable, List, Optional, Tuple, Union
|
|
|
|
+
|
|
import torch
|
|
import torch
|
|
|
|
+import torch.nn.functional as F
|
|
from torch import nn
|
|
from torch import nn
|
|
from torchvision.ops import MultiScaleRoIAlign
|
|
from torchvision.ops import MultiScaleRoIAlign
|
|
|
|
|
|
-from libs.vision_libs.models import MobileNet_V3_Large_Weights, mobilenet_v3_large
|
|
|
|
-from libs.vision_libs.models.detection.anchor_utils import AnchorGenerator
|
|
|
|
-from libs.vision_libs.models.detection.rpn import RPNHead, RegionProposalNetwork
|
|
|
|
-from libs.vision_libs.models.detection.ssdlite import _mobilenet_extractor
|
|
|
|
-from libs.vision_libs.models.detection.transform import GeneralizedRCNNTransform
|
|
|
|
-from libs.vision_libs.ops import misc as misc_nn_ops
|
|
|
|
|
|
+from libs.vision_libs.ops import misc as misc_nn_ops
|
|
from libs.vision_libs.transforms._presets import ObjectDetection
|
|
from libs.vision_libs.transforms._presets import ObjectDetection
|
|
-from .line_head import LineRCNNHeads
|
|
|
|
-from .line_predictor import LineRCNNPredictor
|
|
|
|
-from .roi_heads import RoIHeads
|
|
|
|
from libs.vision_libs.models._api import register_model, Weights, WeightsEnum
|
|
from libs.vision_libs.models._api import register_model, Weights, WeightsEnum
|
|
-from libs.vision_libs.models._meta import _COCO_PERSON_CATEGORIES, _COCO_PERSON_KEYPOINT_NAMES, _COCO_CATEGORIES
|
|
|
|
|
|
+from libs.vision_libs.models._meta import _COCO_CATEGORIES
|
|
from libs.vision_libs.models._utils import _ovewrite_value_param, handle_legacy_interface
|
|
from libs.vision_libs.models._utils import _ovewrite_value_param, handle_legacy_interface
|
|
|
|
+from libs.vision_libs.models.mobilenetv3 import mobilenet_v3_large, MobileNet_V3_Large_Weights
|
|
from libs.vision_libs.models.resnet import resnet50, ResNet50_Weights
|
|
from libs.vision_libs.models.resnet import resnet50, ResNet50_Weights
|
|
from libs.vision_libs.models.detection._utils import overwrite_eps
|
|
from libs.vision_libs.models.detection._utils import overwrite_eps
|
|
-from libs.vision_libs.models.detection.backbone_utils import _resnet_fpn_extractor, _validate_trainable_layers
|
|
|
|
-from libs.vision_libs.models.detection.faster_rcnn import FasterRCNN, TwoMLPHead, FastRCNNPredictor
|
|
|
|
|
|
+from libs.vision_libs.models.detection.anchor_utils import AnchorGenerator
|
|
|
|
+from libs.vision_libs.models.detection.backbone_utils import _mobilenet_extractor, _resnet_fpn_extractor, _validate_trainable_layers
|
|
|
|
|
|
-from models.config.config_tool import read_yaml
|
|
|
|
-import numpy as np
|
|
|
|
-import torch.nn.functional as F
|
|
|
|
|
|
+from libs.vision_libs.models.detection.rpn import RegionProposalNetwork, RPNHead
|
|
|
|
+from libs.vision_libs.models.detection.transform import GeneralizedRCNNTransform
|
|
|
|
|
|
-FEATURE_DIM = 8
|
|
|
|
-device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
|
|
|
|
|
|
+######## 弃用 ###########
|
|
|
|
|
|
__all__ = [
|
|
__all__ = [
|
|
"LineNet",
|
|
"LineNet",
|
|
@@ -36,50 +28,10 @@ __all__ = [
|
|
"LineNet_MobileNet_V3_Large_FPN_Weights",
|
|
"LineNet_MobileNet_V3_Large_FPN_Weights",
|
|
"LineNet_MobileNet_V3_Large_320_FPN_Weights",
|
|
"LineNet_MobileNet_V3_Large_320_FPN_Weights",
|
|
"linenet_resnet50_fpn",
|
|
"linenet_resnet50_fpn",
|
|
- "linenet_resnet50_fpn_v2",
|
|
|
|
|
|
+ "fasterrcnn_resnet50_fpn_v2",
|
|
"linenet_mobilenet_v3_large_fpn",
|
|
"linenet_mobilenet_v3_large_fpn",
|
|
"linenet_mobilenet_v3_large_320_fpn",
|
|
"linenet_mobilenet_v3_large_320_fpn",
|
|
]
|
|
]
|
|
-# __all__ = [
|
|
|
|
-# "LineNet",
|
|
|
|
-# "LineRCNN_ResNet50_FPN_Weights",
|
|
|
|
-# "linercnn_resnet50_fpn",
|
|
|
|
-# ]
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-def non_maximum_suppression(a):
|
|
|
|
- ap = F.max_pool2d(a, 3, stride=1, padding=1)
|
|
|
|
- mask = (a == ap).float().clamp(min=0.0)
|
|
|
|
- return a * mask
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-# class Bottleneck1D(nn.Module):
|
|
|
|
-# def __init__(self, inplanes, outplanes):
|
|
|
|
-# super(Bottleneck1D, self).__init__()
|
|
|
|
-#
|
|
|
|
-# planes = outplanes // 2
|
|
|
|
-# self.op = nn.Sequential(
|
|
|
|
-# nn.BatchNorm1d(inplanes),
|
|
|
|
-# nn.ReLU(inplace=True),
|
|
|
|
-# nn.Conv1d(inplanes, planes, kernel_size=1),
|
|
|
|
-# nn.BatchNorm1d(planes),
|
|
|
|
-# nn.ReLU(inplace=True),
|
|
|
|
-# nn.Conv1d(planes, planes, kernel_size=3, padding=1),
|
|
|
|
-# nn.BatchNorm1d(planes),
|
|
|
|
-# nn.ReLU(inplace=True),
|
|
|
|
-# nn.Conv1d(planes, outplanes, kernel_size=1),
|
|
|
|
-# )
|
|
|
|
-#
|
|
|
|
-# def forward(self, x):
|
|
|
|
-# return x + self.op(x)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
|
|
from .roi_heads import RoIHeads
|
|
from .roi_heads import RoIHeads
|
|
|
|
|
|
@@ -247,9 +199,6 @@ class LineNet(BaseDetectionNet):
|
|
box_batch_size_per_image=512,
|
|
box_batch_size_per_image=512,
|
|
box_positive_fraction=0.25,
|
|
box_positive_fraction=0.25,
|
|
bbox_reg_weights=None,
|
|
bbox_reg_weights=None,
|
|
- # line parameters
|
|
|
|
- line_head=None,
|
|
|
|
- line_predictor=None,
|
|
|
|
**kwargs,
|
|
**kwargs,
|
|
):
|
|
):
|
|
|
|
|
|
@@ -278,13 +227,6 @@ class LineNet(BaseDetectionNet):
|
|
|
|
|
|
out_channels = backbone.out_channels
|
|
out_channels = backbone.out_channels
|
|
|
|
|
|
- if line_head is None:
|
|
|
|
- num_class = 5
|
|
|
|
- line_head = LineRCNNHeads(out_channels, num_class)
|
|
|
|
-
|
|
|
|
- if line_predictor is None:
|
|
|
|
- line_predictor = LineRCNNPredictor()
|
|
|
|
-
|
|
|
|
if rpn_anchor_generator is None:
|
|
if rpn_anchor_generator is None:
|
|
rpn_anchor_generator = _default_anchorgen()
|
|
rpn_anchor_generator = _default_anchorgen()
|
|
if rpn_head is None:
|
|
if rpn_head is None:
|
|
@@ -323,8 +265,6 @@ class LineNet(BaseDetectionNet):
|
|
box_roi_pool,
|
|
box_roi_pool,
|
|
box_head,
|
|
box_head,
|
|
box_predictor,
|
|
box_predictor,
|
|
- line_head,
|
|
|
|
- line_predictor,
|
|
|
|
box_fg_iou_thresh,
|
|
box_fg_iou_thresh,
|
|
box_bg_iou_thresh,
|
|
box_bg_iou_thresh,
|
|
box_batch_size_per_image,
|
|
box_batch_size_per_image,
|
|
@@ -343,10 +283,6 @@ class LineNet(BaseDetectionNet):
|
|
|
|
|
|
super().__init__(backbone, rpn, roi_heads, transform)
|
|
super().__init__(backbone, rpn, roi_heads, transform)
|
|
|
|
|
|
- self.roi_heads = roi_heads
|
|
|
|
- # self.roi_heads.line_head = line_head
|
|
|
|
- # self.roi_heads.line_predictor = line_predictor
|
|
|
|
-
|
|
|
|
|
|
|
|
class TwoMLPHead(nn.Module):
|
|
class TwoMLPHead(nn.Module):
|
|
"""
|
|
"""
|
|
@@ -651,7 +587,7 @@ def linenet_resnet50_fpn(
|
|
weights=("pretrained", LineNet_ResNet50_FPN_V2_Weights.COCO_V1),
|
|
weights=("pretrained", LineNet_ResNet50_FPN_V2_Weights.COCO_V1),
|
|
weights_backbone=("pretrained_backbone", ResNet50_Weights.IMAGENET1K_V1),
|
|
weights_backbone=("pretrained_backbone", ResNet50_Weights.IMAGENET1K_V1),
|
|
)
|
|
)
|
|
-def linenet_resnet50_fpn_v2(
|
|
|
|
|
|
+def fasterrcnn_resnet50_fpn_v2(
|
|
*,
|
|
*,
|
|
weights: Optional[LineNet_ResNet50_FPN_V2_Weights] = None,
|
|
weights: Optional[LineNet_ResNet50_FPN_V2_Weights] = None,
|
|
progress: bool = True,
|
|
progress: bool = True,
|
|
@@ -909,4 +845,3 @@ def linenet_mobilenet_v3_large_fpn(
|
|
trainable_backbone_layers=trainable_backbone_layers,
|
|
trainable_backbone_layers=trainable_backbone_layers,
|
|
**kwargs,
|
|
**kwargs,
|
|
)
|
|
)
|
|
-
|
|
|