Skip to content

Commit 5931ec7

Browse files
authored
Merge pull request #985 from openvinotoolkit/ik/move_mmdet_templates
move mmdet templates
2 parents 4d1ae2d + 13a1bbe commit 5931ec7

File tree

171 files changed

+17119
-16
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

171 files changed

+17119
-16
lines changed

.gitmodules

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[submodule "external/mmdetection"]
2-
path = external/mmdetection
2+
path = external/mmdetection/submodule
33
url = ../../openvinotoolkit/mmdetection
44
[submodule "external/deep-object-reid"]
55
path = external/deep-object-reid/submodule

.pylintrc

+1-1
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ ignored-classes=optparse.Values,thread._local,_thread._local
267267
# (useful for modules/projects where namespaces are manipulated during runtime
268268
# and thus existing member attributes cannot be deduced by static analysis). It
269269
# supports qualified module names, as well as Unix pattern matching.
270-
ignored-modules=ote_sdk,mmseg,segmentation_tasks,mmdet,torchreid,torchreid_tasks,cv2,anomalib,pytorch_lightning,torch,addict,compression,openvino,pandas
270+
ignored-modules=ote_sdk,mmseg,segmentation_tasks,mmdet,detection_tasks,torchreid,torchreid_tasks,cv2,anomalib,pytorch_lightning,torch,addict,compression,openvino,pandas
271271

272272
# Show a hint with possible names when a member name was not found. The aspect
273273
# of finding the hint is based on edit distance.

external/README.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,21 @@ Custom_Image_Classification_EfficientNet-V2-S | EfficientNet-V2-S | 5.76 | 20.23
2525
## Object Detection
2626
ID | Name | Complexity (GFlops) | Model size (MB) | Path
2727
------- | ------- | ------- | ------- | -------
28-
Custom_Object_Detection_YOLOX | YOLOX | 6.5 | 20.4 | mmdetection/configs/ote/custom-object-detection/cspdarknet_YOLOX/template.yaml
29-
Custom_Object_Detection_Gen3_SSD | SSD | 9.4 | 7.6 | mmdetection/configs/ote/custom-object-detection/gen3_mobilenetV2_SSD/template.yaml
30-
Custom_Object_Detection_Gen3_ATSS | ATSS | 20.6 | 9.1 | mmdetection/configs/ote/custom-object-detection/gen3_mobilenetV2_ATSS/template.yaml
28+
Custom_Object_Detection_YOLOX | YOLOX | 6.5 | 20.4 | mmdetection/configs/custom-object-detection/cspdarknet_YOLOX/template.yaml
29+
Custom_Object_Detection_Gen3_SSD | SSD | 9.4 | 7.6 | mmdetection/configs/custom-object-detection/gen3_mobilenetV2_SSD/template.yaml
30+
Custom_Object_Detection_Gen3_ATSS | ATSS | 20.6 | 9.1 | mmdetection/configs/custom-object-detection/gen3_mobilenetV2_ATSS/template.yaml
3131

3232
## Object Counting
3333
ID | Name | Complexity (GFlops) | Model size (MB) | Path
3434
------- | ------- | ------- | ------- | -------
35-
Custom_Counting_Instance_Segmentation_MaskRCNN_EfficientNetB2B | MaskRCNN-EfficientNetB2B | 68.48 | 13.27 | mmdetection/configs/ote/custom-counting-instance-seg/efficientnetb2b_maskrcnn/template.yaml
36-
Custom_Counting_Instance_Segmentation_MaskRCNN_ResNet50 | MaskRCNN-ResNet50 | 533.8 | 177.9 | mmdetection/configs/ote/custom-counting-instance-seg/resnet50_maskrcnn/template.yaml
35+
Custom_Counting_Instance_Segmentation_MaskRCNN_EfficientNetB2B | MaskRCNN-EfficientNetB2B | 68.48 | 13.27 | mmdetection/configs/custom-counting-instance-seg/efficientnetb2b_maskrcnn/template.yaml
36+
Custom_Counting_Instance_Segmentation_MaskRCNN_ResNet50 | MaskRCNN-ResNet50 | 533.8 | 177.9 | mmdetection/configs/custom-counting-instance-seg/resnet50_maskrcnn/template.yaml
3737

3838
## Rotated Object Detection
3939
ID | Name | Complexity (GFlops) | Model size (MB) | Path
4040
------- | ------- | ------- | ------- | -------
41-
Custom_Rotated_Detection_via_Instance_Segmentation_MaskRCNN_EfficientNetB2B | MaskRCNN-EfficientNetB2B | 68.48 | 13.27 | mmdetection/configs/ote/rotated_detection/efficientnetb2b_maskrcnn/template.yaml
42-
Custom_Rotated_Detection_via_Instance_Segmentation_MaskRCNN_ResNet50 | MaskRCNN-ResNet50 | 533.8 | 177.9 | mmdetection/configs/ote/rotated_detection/resnet50_maskrcnn/template.yaml
41+
Custom_Rotated_Detection_via_Instance_Segmentation_MaskRCNN_EfficientNetB2B | MaskRCNN-EfficientNetB2B | 68.48 | 13.27 | mmdetection/configs/rotated_detection/efficientnetb2b_maskrcnn/template.yaml
42+
Custom_Rotated_Detection_via_Instance_Segmentation_MaskRCNN_ResNet50 | MaskRCNN-ResNet50 | 533.8 | 177.9 | mmdetection/configs/rotated_detection/resnet50_maskrcnn/template.yaml
4343

4444
## Semantic Segmentaion
4545
ID | Name | Complexity (GFlops) | Model size (MB) | Path

external/mmdetection

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
dataset_type = 'CocoDataset'
2+
img_size = (1024, 1024)
3+
4+
img_norm_cfg = dict(
5+
mean=(103.53, 116.28, 123.675), std=(1.0, 1.0, 1.0), to_rgb=False)
6+
7+
train_pipeline = [
8+
dict(type='LoadImageFromFile'),
9+
dict(type='LoadAnnotations', with_bbox=True,
10+
with_mask=True, poly2mask=False),
11+
dict(type='Resize', img_scale=img_size, keep_ratio=False),
12+
dict(type='RandomFlip', flip_ratio=0.5),
13+
dict(type='Normalize', **img_norm_cfg),
14+
dict(type='Pad', size_divisor=32),
15+
dict(type='DefaultFormatBundle'),
16+
dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels', 'gt_masks'])
17+
]
18+
19+
test_pipeline = [
20+
dict(type='LoadImageFromFile'),
21+
dict(
22+
type='MultiScaleFlipAug',
23+
img_scale=img_size,
24+
flip=False,
25+
transforms=[
26+
dict(type='Resize', keep_ratio=False),
27+
dict(type='RandomFlip'),
28+
dict(type='Normalize', **img_norm_cfg),
29+
dict(type='Pad', size_divisor=32),
30+
dict(type='ImageToTensor', keys=['img']),
31+
dict(type='Collect', keys=['img'])
32+
])
33+
]
34+
35+
data = dict(samples_per_gpu=4,
36+
workers_per_gpu=2,
37+
train=dict(
38+
type='RepeatDataset',
39+
adaptive_repeat_times=True,
40+
times=1,
41+
dataset=dict(
42+
type=dataset_type,
43+
ann_file='data/coco/annotations/instances_train2017.json',
44+
img_prefix='data/coco/train2017',
45+
pipeline=train_pipeline)),
46+
val=dict(
47+
type=dataset_type,
48+
test_mode=True,
49+
ann_file='data/coco/annotations/instances_val2017.json',
50+
img_prefix='data/coco/val2017',
51+
pipeline=test_pipeline),
52+
test=dict(
53+
type=dataset_type,
54+
test_mode=True,
55+
ann_file='data/coco/annotations/instances_val2017.json',
56+
img_prefix='data/coco/val2017',
57+
pipeline=test_pipeline))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
{
2+
"base": {
3+
"find_unused_parameters": true,
4+
"nncf_config": {
5+
"target_metric_name": "mAP",
6+
"input_info": {
7+
"sample_size": [1, 3, 1024, 1024]
8+
},
9+
"compression": [],
10+
"log_dir": "."
11+
}
12+
},
13+
"nncf_quantization": {
14+
"optimizer": {
15+
"lr": 0.0005
16+
},
17+
"nncf_config": {
18+
"compression": [
19+
{
20+
"algorithm": "quantization",
21+
"initializer": {
22+
"range": {
23+
"num_init_samples": 1000
24+
},
25+
"batchnorm_adaptation": {
26+
"num_bn_adaptation_samples": 1000
27+
}
28+
}
29+
}
30+
],
31+
"accuracy_aware_training": {
32+
"mode": "early_exit",
33+
"params": {
34+
"maximal_absolute_accuracy_degradation": 0.01,
35+
"maximal_total_epochs": 20
36+
}
37+
}
38+
}
39+
},
40+
"order_of_parts": [
41+
"nncf_quantization"
42+
]
43+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
metric: mAP
2+
search_algorithm: smbo
3+
early_stop: None
4+
hp_space:
5+
learning_parameters.learning_rate:
6+
param_type: quniform
7+
range:
8+
- 0.001
9+
- 0.1
10+
- 0.001
11+
learning_parameters.batch_size:
12+
param_type: qloguniform
13+
range:
14+
- 2
15+
- 4
16+
- 2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
_base_ = [
2+
'./coco_data_pipeline.py'
3+
]
4+
5+
model = dict(
6+
type='MaskRCNN',
7+
backbone=dict(
8+
type='efficientnet_b2b',
9+
out_indices=(2, 3, 4, 5),
10+
frozen_stages=-1,
11+
pretrained=True,
12+
activation_cfg=dict(type='torch_swish'),
13+
norm_cfg=dict(type='BN', requires_grad=True)),
14+
neck=dict(
15+
type='FPN',
16+
in_channels=[24, 48, 120, 352],
17+
out_channels=80,
18+
num_outs=5),
19+
rpn_head=dict(
20+
type='RPNHead',
21+
in_channels=80,
22+
feat_channels=80,
23+
anchor_generator=dict(
24+
type='AnchorGenerator',
25+
scales=[8],
26+
ratios=[0.5, 1.0, 2.0],
27+
strides=[4, 8, 16, 32, 64]),
28+
bbox_coder=dict(
29+
type='DeltaXYWHBBoxCoder',
30+
target_means=[0.0, 0.0, 0.0, 0.0],
31+
target_stds=[1.0, 1.0, 1.0, 1.0]),
32+
loss_cls=dict(
33+
type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0),
34+
loss_bbox=dict(type='L1Loss', loss_weight=1.0)),
35+
roi_head=dict(
36+
type='StandardRoIHead',
37+
bbox_roi_extractor=dict(
38+
type='SingleRoIExtractor',
39+
roi_layer=dict(type='RoIAlign', output_size=7, sampling_ratio=0),
40+
out_channels=80,
41+
featmap_strides=[4, 8, 16, 32]),
42+
bbox_head=dict(
43+
type='Shared2FCBBoxHead',
44+
in_channels=80,
45+
fc_out_channels=1024,
46+
roi_feat_size=7,
47+
num_classes=80,
48+
bbox_coder=dict(
49+
type='DeltaXYWHBBoxCoder',
50+
target_means=[0.0, 0.0, 0.0, 0.0],
51+
target_stds=[0.1, 0.1, 0.2, 0.2]),
52+
reg_class_agnostic=False,
53+
loss_cls=dict(
54+
type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),
55+
loss_bbox=dict(type='L1Loss', loss_weight=1.0)),
56+
mask_roi_extractor=dict(
57+
type='SingleRoIExtractor',
58+
roi_layer=dict(type='RoIAlign', output_size=14, sampling_ratio=0),
59+
out_channels=80,
60+
featmap_strides=[4, 8, 16, 32]),
61+
mask_head=dict(
62+
type='FCNMaskHead',
63+
num_convs=4,
64+
in_channels=80,
65+
conv_out_channels=80,
66+
num_classes=80,
67+
loss_mask=dict(
68+
type='CrossEntropyLoss', use_mask=True, loss_weight=1.0))),
69+
train_cfg=dict(
70+
rpn=dict(
71+
assigner=dict(
72+
type='MaxIoUAssigner',
73+
pos_iou_thr=0.7,
74+
neg_iou_thr=0.3,
75+
min_pos_iou=0.3,
76+
match_low_quality=True,
77+
ignore_iof_thr=-1,
78+
gpu_assign_thr=300),
79+
sampler=dict(
80+
type='RandomSampler',
81+
num=256,
82+
pos_fraction=0.5,
83+
neg_pos_ub=-1,
84+
add_gt_as_proposals=False),
85+
allowed_border=-1,
86+
pos_weight=-1,
87+
debug=False),
88+
rpn_proposal=dict(
89+
nms_across_levels=False,
90+
nms_pre=2000,
91+
nms_post=1000,
92+
max_num=1000,
93+
nms_thr=0.8,
94+
min_bbox_size=0),
95+
rcnn=dict(
96+
assigner=dict(
97+
type='MaxIoUAssigner',
98+
pos_iou_thr=0.5,
99+
neg_iou_thr=0.5,
100+
min_pos_iou=0.5,
101+
match_low_quality=True,
102+
ignore_iof_thr=-1,
103+
gpu_assign_thr=300),
104+
sampler=dict(
105+
type='RandomSampler',
106+
num=256,
107+
pos_fraction=0.25,
108+
neg_pos_ub=-1,
109+
add_gt_as_proposals=True),
110+
mask_size=28,
111+
pos_weight=-1,
112+
debug=False)),
113+
test_cfg=dict(
114+
rpn=dict(
115+
nms_across_levels=False,
116+
nms_pre=800,
117+
nms_post=500,
118+
max_num=500,
119+
nms_thr=0.8,
120+
min_bbox_size=0),
121+
rcnn=dict(
122+
score_thr=0.05,
123+
nms=dict(type='nms', iou_threshold=0.7),
124+
max_per_img=500,
125+
mask_thr_binary=0.5)))
126+
127+
cudnn_benchmark = True
128+
evaluation = dict(interval=1, metric='mAP', save_best='mAP', iou_thr=[0.5 , 0.55, 0.6 , 0.65, 0.7 , 0.75, 0.8 , 0.85, 0.9, 0.95])
129+
optimizer = dict(type='SGD', lr=0.015, momentum=0.9, weight_decay=0.0001)
130+
optimizer_config = dict(grad_clip=None)
131+
lr_config = dict(
132+
policy='ReduceLROnPlateau',
133+
metric='mAP',
134+
patience=5,
135+
iteration_patience=300,
136+
interval=1,
137+
min_lr=0.000001,
138+
warmup='linear',
139+
warmup_iters=200,
140+
warmup_ratio=0.3333333333333333
141+
)
142+
runner = dict(type='EpochRunnerWithCancel', max_epochs=300)
143+
checkpoint_config = dict(interval=5)
144+
log_config = dict(
145+
interval=1,
146+
hooks=[
147+
dict(type='TextLoggerHook'),
148+
# dict(type='TensorboardLoggerHook'),
149+
])
150+
dist_params = dict(backend='nccl')
151+
log_level = 'INFO'
152+
load_from = 'https://storage.openvinotoolkit.org/repositories/openvino_training_extensions/models/instance_segmentation/v2/efficientnet_b2b-mask_rcnn-576x576.pth'
153+
resume_from = None
154+
workflow = [('train', 1)]
155+
work_dir = 'output'
156+
custom_hooks = [
157+
dict(type='EarlyStoppingHook', patience=10, metric='mAP',
158+
interval=1, priority=75, iteration_patience=0),
159+
]
160+
fp16 = dict(loss_scale=512.)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Description.
2+
model_template_id: Custom_Counting_Instance_Segmentation_MaskRCNN_EfficientNetB2B
3+
name: MaskRCNN-EfficientNetB2B
4+
task_type: INSTANCE_SEGMENTATION
5+
task_family: VISION
6+
instantiation: "CLASS"
7+
summary: Counting algorithm provides counting of objects and object instance masks. This model is based on MaskRCNN-EfficientNetB2B which is faster in training and inference but less accurate.
8+
application: ~
9+
10+
# Algo backend.
11+
framework: OTEDetection v2.9.1
12+
13+
# Task implementations.
14+
entrypoints:
15+
base: detection_tasks.apis.detection.OTEDetectionTrainingTask
16+
openvino: detection_tasks.apis.detection.OpenVINODetectionTask
17+
nncf: detection_tasks.apis.detection.OTEDetectionNNCFTask
18+
19+
# Capabilities.
20+
capabilities:
21+
- compute_representations
22+
23+
# Hyperparameters.
24+
hyper_parameters:
25+
base_path: ../../../../mmdetection/detection_tasks/apis/detection/configuration.yaml
26+
parameter_overrides:
27+
learning_parameters:
28+
batch_size:
29+
default_value: 4
30+
learning_rate:
31+
default_value: 0.015
32+
learning_rate_warmup_iters:
33+
default_value: 200
34+
num_iters:
35+
default_value: 300
36+
nncf_optimization:
37+
enable_quantization:
38+
default_value: true
39+
enable_pruning:
40+
default_value: false
41+
maximal_accuracy_degradation:
42+
default_value: 1.0
43+
44+
# Training resources.
45+
max_nodes: 1
46+
training_targets:
47+
- GPU
48+
- CPU
49+
50+
# Stats.
51+
gigaflops: 68.48
52+
size: 13.27

0 commit comments

Comments
 (0)