Skip to content

Commit 026f8da

Browse files
sovrasovkprokofi
andauthored
Cherry-pick from 2.3 (#4242)
* Bump MAPI to 0.2.5.1 (#4211) * Bump MAPI to 0.2.5.1 * Updatge changelog * Update changelog * Revert h-cls head to linear (#4221) * Revert h-cls head to linear * Update changelog * Update third-party-programs.txt (#4225) update third-party-programs.txt --------- Co-authored-by: Prokofiev Kirill <[email protected]>
1 parent 69c98f9 commit 026f8da

File tree

8 files changed

+1100
-32
lines changed

8 files changed

+1100
-32
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ All notable changes to this project will be documented in this file.
7575
(<https://github.com/openvinotoolkit/training_extensions/pull/3985>)
7676
- Bump OV to 2024.6, update empty label handling
7777
(<https://github.com/openvinotoolkit/training_extensions/pull/4162>)
78+
- Bump MAPI to 0.2.5.1
79+
(<https://github.com/openvinotoolkit/training_extensions/pull/4211>)
7880

7981
### Bug fixes
8082

@@ -96,6 +98,8 @@ All notable changes to this project will be documented in this file.
9698
(<https://github.com/openvinotoolkit/training_extensions/pull/4199>)
9799
- Fix label info on loading checkpoint
98100
(<https://github.com/openvinotoolkit/training_extensions/pull/4200>)
101+
- Revert h-cls head to linear one
102+
(<https://github.com/openvinotoolkit/training_extensions/pull/4221>)
99103

100104
## \[2.2.2\]
101105

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ base = [
8181
"timm==1.0.3",
8282
"openvino==2024.6",
8383
"openvino-dev==2024.6",
84-
"openvino-model-api==0.2.5",
84+
"openvino-model-api==0.2.5.1",
8585
"onnx==1.17.0",
8686
"onnxconverter-common==1.14.0",
8787
"nncf==2.14.1",

src/otx/algo/classification/efficientnet.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
from otx.algo.classification.backbones.efficientnet import EFFICIENTNET_VERSION, EfficientNetBackbone
1515
from otx.algo.classification.classifier import HLabelClassifier, ImageClassifier
16-
from otx.algo.classification.heads import HierarchicalCBAMClsHead, LinearClsHead, MultiLabelLinearClsHead
16+
from otx.algo.classification.heads import HierarchicalLinearClsHead, LinearClsHead, MultiLabelLinearClsHead
1717
from otx.algo.classification.losses.asymmetric_angular_loss_with_ignore import AsymmetricAngularLossWithIgnore
1818
from otx.algo.classification.necks.gap import GlobalAveragePooling
1919
from otx.algo.classification.utils import get_classification_layers
@@ -225,11 +225,8 @@ def _build_model(self, head_config: dict) -> nn.Module:
225225

226226
return HLabelClassifier(
227227
backbone=backbone,
228-
neck=nn.Identity(),
229-
head=HierarchicalCBAMClsHead(
230-
in_channels=backbone.num_features,
231-
**copied_head_config,
232-
),
228+
neck=GlobalAveragePooling(dim=2),
229+
head=HierarchicalLinearClsHead(**copied_head_config, in_channels=backbone.num_features),
233230
multiclass_loss=nn.CrossEntropyLoss(),
234231
multilabel_loss=AsymmetricAngularLossWithIgnore(gamma_pos=0.0, gamma_neg=1.0, reduction="sum"),
235232
)

src/otx/algo/classification/mobilenet_v3.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
from otx.algo.classification.backbones import MobileNetV3Backbone
1616
from otx.algo.classification.classifier import HLabelClassifier, ImageClassifier
17-
from otx.algo.classification.heads import HierarchicalCBAMClsHead, LinearClsHead, MultiLabelNonLinearClsHead
17+
from otx.algo.classification.heads import HierarchicalLinearClsHead, LinearClsHead, MultiLabelNonLinearClsHead
1818
from otx.algo.classification.losses.asymmetric_angular_loss_with_ignore import AsymmetricAngularLossWithIgnore
1919
from otx.algo.classification.necks.gap import GlobalAveragePooling
2020
from otx.algo.utils.support_otx_v1 import OTXv1Helper
@@ -250,15 +250,13 @@ def _build_model(self, head_config: dict) -> nn.Module:
250250

251251
copied_head_config = copy(head_config)
252252
copied_head_config["step_size"] = (ceil(self.input_size[0] / 32), ceil(self.input_size[1] / 32))
253-
253+
in_channels = MobileNetV3Backbone.MV3_CFG[self.mode]["out_channels"]
254254
backbone = MobileNetV3Backbone(mode=self.mode, input_size=self.input_size)
255+
255256
return HLabelClassifier(
256257
backbone=backbone,
257-
neck=nn.Identity(),
258-
head=HierarchicalCBAMClsHead(
259-
in_channels=MobileNetV3Backbone.MV3_CFG[self.mode]["out_channels"],
260-
**copied_head_config,
261-
),
258+
neck=GlobalAveragePooling(dim=2),
259+
head=HierarchicalLinearClsHead(**copied_head_config, in_channels=in_channels),
262260
multiclass_loss=nn.CrossEntropyLoss(),
263261
multilabel_loss=AsymmetricAngularLossWithIgnore(gamma_pos=0.0, gamma_neg=1.0, reduction="sum"),
264262
)

src/otx/algo/classification/timm_model.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
from otx.algo.classification.backbones.timm import TimmBackbone
1616
from otx.algo.classification.classifier import HLabelClassifier, ImageClassifier
17-
from otx.algo.classification.heads import HierarchicalCBAMClsHead, LinearClsHead, MultiLabelLinearClsHead
17+
from otx.algo.classification.heads import HierarchicalLinearClsHead, LinearClsHead, MultiLabelLinearClsHead
1818
from otx.algo.classification.losses.asymmetric_angular_loss_with_ignore import AsymmetricAngularLossWithIgnore
1919
from otx.algo.classification.necks.gap import GlobalAveragePooling
2020
from otx.algo.utils.support_otx_v1 import OTXv1Helper
@@ -283,11 +283,8 @@ def _build_model(self, head_config: dict) -> nn.Module:
283283
copied_head_config["step_size"] = (ceil(self.input_size[0] / 32), ceil(self.input_size[1] / 32))
284284
return HLabelClassifier(
285285
backbone=backbone,
286-
neck=nn.Identity(),
287-
head=HierarchicalCBAMClsHead(
288-
in_channels=backbone.num_features,
289-
**copied_head_config,
290-
),
286+
neck=GlobalAveragePooling(dim=2),
287+
head=HierarchicalLinearClsHead(**copied_head_config, in_channels=backbone.num_features),
291288
multiclass_loss=nn.CrossEntropyLoss(),
292289
multilabel_loss=AsymmetricAngularLossWithIgnore(gamma_pos=0.0, gamma_neg=1.0, reduction="sum"),
293290
)

src/otx/algo/classification/torchvision_model.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from otx.algo.classification.backbones.torchvision import TorchvisionBackbone, TVModelType
1414
from otx.algo.classification.classifier import HLabelClassifier, ImageClassifier
1515
from otx.algo.classification.heads import (
16-
HierarchicalCBAMClsHead,
16+
HierarchicalLinearClsHead,
1717
LinearClsHead,
1818
MultiLabelLinearClsHead,
1919
)
@@ -252,11 +252,8 @@ def _build_model(self, head_config: dict) -> nn.Module:
252252
backbone = TorchvisionBackbone(backbone=self.backbone, pretrained=self.pretrained)
253253
return HLabelClassifier(
254254
backbone=backbone,
255-
neck=nn.Identity(),
256-
head=HierarchicalCBAMClsHead(
257-
in_channels=backbone.in_features,
258-
**head_config,
259-
),
255+
neck=GlobalAveragePooling(dim=2),
256+
head=HierarchicalLinearClsHead(**head_config, in_channels=backbone.in_features),
260257
multiclass_loss=nn.CrossEntropyLoss(),
261258
multilabel_loss=AsymmetricAngularLossWithIgnore(gamma_pos=0.0, gamma_neg=1.0, reduction="sum"),
262259
)

src/otx/algo/classification/vit.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from otx.algo.classification.backbones.vision_transformer import VIT_ARCH_TYPE, VisionTransformer
2020
from otx.algo.classification.classifier import HLabelClassifier, ImageClassifier
2121
from otx.algo.classification.heads import (
22-
HierarchicalCBAMClsHead,
22+
HierarchicalLinearClsHead,
2323
MultiLabelLinearClsHead,
2424
VisionTransformerClsHead,
2525
)
@@ -452,11 +452,7 @@ def _build_model(self, head_config: dict) -> nn.Module:
452452
return HLabelClassifier(
453453
backbone=vit_backbone,
454454
neck=None,
455-
head=HierarchicalCBAMClsHead(
456-
in_channels=vit_backbone.embed_dim,
457-
step_size=1,
458-
**head_config,
459-
),
455+
head=HierarchicalLinearClsHead(**head_config, in_channels=vit_backbone.embed_dim),
460456
multiclass_loss=nn.CrossEntropyLoss(),
461457
multilabel_loss=AsymmetricAngularLossWithIgnore(gamma_pos=0.0, gamma_neg=1.0, reduction="sum"),
462458
init_cfg=init_cfg,

0 commit comments

Comments
 (0)