Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DDRNet for Semantic Segmentation #70

Merged
merged 114 commits into from
Sep 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
61381a1
cleanup, tests
kozlov721 Sep 6, 2024
0c17be8
graph tests
kozlov721 Sep 6, 2024
f11bf62
moved tests
kozlov721 Sep 6, 2024
f217191
fixed dataset in callback test
kozlov721 Sep 6, 2024
b04d919
added Graph type
kozlov721 Sep 6, 2024
97ea600
increased coverage
kozlov721 Sep 7, 2024
23238ed
95 coverage
kozlov721 Sep 9, 2024
1ace2eb
improved coverage
kozlov721 Sep 9, 2024
94f2cf6
updated tests
kozlov721 Sep 9, 2024
35ccaca
updated docs
kozlov721 Sep 9, 2024
164435d
renamed
kozlov721 Sep 9, 2024
f4982df
changed log message
kozlov721 Sep 9, 2024
c5b9d16
changed default keypoint model head
kozlov721 Sep 9, 2024
e8f9331
removed Any generic parameters from base classes
kozlov721 Sep 9, 2024
a94c1d6
removed multiclass from focal loss until it is fixed
kozlov721 Sep 9, 2024
a4b4942
cross entropy cleanup
kozlov721 Sep 9, 2024
c963dd1
updated gpu monitor config
kozlov721 Sep 9, 2024
e61692d
fixed docs requirements
kozlov721 Sep 9, 2024
d60f4a2
updated ci
kozlov721 Sep 9, 2024
67fef3b
fixed docs generation
kozlov721 Sep 9, 2024
a66bf22
removed old workflows
kozlov721 Sep 9, 2024
ba6f3a9
added pytest-md to requirements-dev.txt
kozlov721 Sep 9, 2024
3ab973f
fixed dataset metadata tests
kozlov721 Sep 9, 2024
f11f728
preserving class order
kozlov721 Sep 9, 2024
1fba74a
ci pytest hotfix
kozlov721 Sep 9, 2024
263da2c
removed macos
kozlov721 Sep 9, 2024
2586201
[Automated] Updated coverage badge
actions-user Sep 9, 2024
799e838
Merge branch 'cleanup' of github.com:luxonis/luxonis-train into cleanup
kozlov721 Sep 9, 2024
ac398e0
[Automated] Updated coverage badge
actions-user Sep 9, 2024
1902d33
feature: add DDRNet segmentation model
sokovninn Sep 9, 2024
5be53ab
refactor: refactoring and improving docstrings
sokovninn Sep 9, 2024
8f35ca1
feature: improve default arguments handling
sokovninn Sep 9, 2024
f4cef9f
[Automated] Updated coverage badge
actions-user Sep 10, 2024
5753851
fix: use ConvModule
sokovninn Sep 10, 2024
d730046
added type-checking to the CI
kozlov721 Sep 10, 2024
1ecac10
added pytest configuration
kozlov721 Sep 10, 2024
2094de8
fixed type issues
kozlov721 Sep 10, 2024
6e6f397
updated CONTRIBUTING.md
kozlov721 Sep 10, 2024
77c07a4
renamed module to torchmetrics
kozlov721 Sep 10, 2024
da8430e
added more base_node tests
kozlov721 Sep 10, 2024
a8a5cb2
refactor: new node structure
sokovninn Sep 10, 2024
fb8734a
style: remove redundant comments
sokovninn Sep 10, 2024
408a68c
Merge branch 'feature/segmentation-ddrnet' of https://github.com/luxo…
sokovninn Sep 10, 2024
2363f8c
Merge remote-tracking branch 'origin/cleanup' into feature/segmentati…
sokovninn Sep 10, 2024
fbd6f37
style: formatting
sokovninn Sep 10, 2024
f962512
test: add ddrnet_segmentation_model test
sokovninn Sep 10, 2024
aa1852f
style: formatting
sokovninn Sep 10, 2024
6ead271
fixed type issues
kozlov721 Sep 10, 2024
3c26cf0
Merge branch 'cleanup' into feature/segmentation-ddrnet
kozlov721 Sep 10, 2024
43cd623
changed pyright settings
kozlov721 Sep 10, 2024
b12f1bd
editable install
kozlov721 Sep 10, 2024
a655093
Merge branch 'cleanup' into feature/segmentation-ddrnet
kozlov721 Sep 10, 2024
7bdb258
added pyright version
kozlov721 Sep 10, 2024
74dc6d0
fixed task error
kozlov721 Sep 10, 2024
1b19b11
Merge branch 'cleanup' into feature/segmentation-ddrnet
kozlov721 Sep 10, 2024
2877aa1
Merge branch 'dev' into cleanup
kozlov721 Sep 10, 2024
242726e
removed toc plugin
kozlov721 Sep 11, 2024
811c020
small docs fixes
kozlov721 Sep 11, 2024
bcb7497
updated CONTRIBUTING.md
kozlov721 Sep 11, 2024
905a588
Merge branch 'cleanup' into feature/segmentation-ddrnet
kozlov721 Sep 11, 2024
282212c
fixed version attribute
kozlov721 Sep 12, 2024
7bfa0bc
refactor: restructure functions and edit args
sokovninn Sep 12, 2024
d304408
feature: disable aux head during export
sokovninn Sep 12, 2024
eda3ead
renamed workflow
kozlov721 Sep 13, 2024
2b48cbc
simplified getting node properties from attached module
kozlov721 Sep 13, 2024
cab4373
increased stacklevel
kozlov721 Sep 13, 2024
40a683f
added property docs
kozlov721 Sep 13, 2024
3376b3c
fixed incorrect parameter name
kozlov721 Sep 13, 2024
9c8d692
simplified efficient bbox and keypoint losses
kozlov721 Sep 13, 2024
0455bf7
simplified efficient bbox and keypoint losses
kozlov721 Sep 13, 2024
3700867
fixed docs
kozlov721 Sep 13, 2024
72dec12
Merge branch 'cleanup' of github.com:luxonis/luxonis-train into cleanup
kozlov721 Sep 13, 2024
e9b0c6c
consistend variable naming
kozlov721 Sep 13, 2024
7b4438e
list comprehension
kozlov721 Sep 13, 2024
1149dd5
changed formatter settings to conform to PEP8
kozlov721 Sep 13, 2024
98c33fa
torchmetrics tests
kozlov721 Sep 13, 2024
0125930
fixed config alias
kozlov721 Sep 13, 2024
c88c298
added type
kozlov721 Sep 13, 2024
7773683
added pragmas
kozlov721 Sep 13, 2024
819d933
added onnx output rename tests
kozlov721 Sep 13, 2024
fb2f0db
added test markers and ordering
kozlov721 Sep 14, 2024
9daa751
changed errors
kozlov721 Sep 14, 2024
02ee1a2
fix classification pre defined model tests
kozlov721 Sep 14, 2024
af0b90d
fixed torchmetrics
kozlov721 Sep 14, 2024
04d11bb
Merge branch 'dev' into cleanup
kozlov721 Sep 14, 2024
0301165
updated test command
kozlov721 Sep 14, 2024
cffcfb3
fixed argument
kozlov721 Sep 15, 2024
080dd1d
[Automated] Updated coverage badge
actions-user Sep 15, 2024
a2a8903
fix: ddrnet segmentation heads arguments
sokovninn Sep 17, 2024
59c4683
fix: DAPPMBranch forward input type
sokovninn Sep 17, 2024
f9e0f29
refactor: rename planes to channels
sokovninn Sep 17, 2024
18c209b
fix: remove redundant predefined model params
sokovninn Sep 17, 2024
1a8bb1d
style: formatting
sokovninn Sep 17, 2024
7367a02
fix: remove redundant backbone property
sokovninn Sep 17, 2024
5505aa9
fix: fully disable aux head during export
sokovninn Sep 17, 2024
3c0dcca
feat: add DDRNet variants
sokovninn Sep 17, 2024
fd3e1ba
fix: callback order for DDRNet (export after test)
sokovninn Sep 17, 2024
f1188e6
fix: change default ddrnet scheduler to CosineAnnealingLR
sokovninn Sep 17, 2024
ff39b61
fix: modify head architecture to match the original one
sokovninn Sep 18, 2024
8be1aa4
feat: add argmax during export
sokovninn Sep 18, 2024
66e7226
project settings update
kozlov721 Sep 19, 2024
f15fc4c
Merge branch 'cleanup' into feature/segmentation-ddrnet
kozlov721 Sep 19, 2024
98e1622
formatting
kozlov721 Sep 19, 2024
3cd7c7a
fixed types
kozlov721 Sep 19, 2024
3a1891b
Merge branch 'dev' into feature/segmentation-ddrnet
kozlov721 Sep 19, 2024
401ccce
fix: change default ddrnet task to binary
sokovninn Sep 19, 2024
07270fe
fix: move BatchNorm2d before AvgPool to enable training with bs=1
sokovninn Sep 19, 2024
052aea9
[Automated] Updated coverage badge
actions-user Sep 19, 2024
5767458
typo
kozlov721 Sep 19, 2024
55c9fb8
fixed docstrings
kozlov721 Sep 19, 2024
19fcfcd
removed dead code
kozlov721 Sep 19, 2024
50e42eb
replaced typing.Type with builtin type
kozlov721 Sep 19, 2024
438c7a3
replace assert with value error
kozlov721 Sep 19, 2024
8b1b4cd
[Automated] Updated coverage badge
actions-user Sep 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions configs/ddrnet_segmentation_model.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# DDRNet-23-slim model for segmentation
# Refer to here for optimal hyperparameters for this model: https://github.com/Deci-AI/super-gradients/blob/4797c974c7c445d12e2575c468848d9c3e04becd/src/super_gradients/recipes/cityscapes_ddrnet.yaml#L4

model:
name: ddrnet_segmentation
predefined_model:
name: DDRNetSegmentationModel
params:
task: binary
backbone_params:
use_aux_heads: True # set to False to disable auxiliary heads (for export)
variant: '23-slim'

loader:
params:
dataset_name: coco_test

trainer:
preprocessing:
train_image_size: [&height 256, &width 320]
keep_aspect_ratio: False
normalize:
active: True

batch_size: 4
epochs: &epochs 500
num_workers: 4
validation_interval: 10
num_log_images: 8

callbacks:
- name: TestOnTrainEnd
- name: ExportOnTrainEnd

optimizer:
name: SGD
params:
lr: 0.01
momentum: 0.9
weight_decay: 0.0005

scheduler:
name: CosineAnnealingLR
params:
T_max: *epochs
2 changes: 2 additions & 0 deletions luxonis_train/models/predefined_models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from .base_predefined_model import BasePredefinedModel
from .classification_model import ClassificationModel
from .ddrnet_segmentation_model import DDRNetSegmentationModel
from .detection_model import DetectionModel
from .keypoint_detection_model import KeypointDetectionModel
from .segmentation_model import SegmentationModel
Expand All @@ -10,4 +11,5 @@
"DetectionModel",
"KeypointDetectionModel",
"ClassificationModel",
"DDRNetSegmentationModel",
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
from dataclasses import dataclass, field

from luxonis_train.utils.config import (
LossModuleConfig,
ModelNodeConfig,
)
from luxonis_train.utils.types import Kwargs

from .segmentation_model import SegmentationModel


@dataclass
class DDRNetSegmentationModel(SegmentationModel):
sokovninn marked this conversation as resolved.
Show resolved Hide resolved
backbone: str = "DDRNet"
aux_head_params: Kwargs = field(default_factory=dict)

@property
def nodes(self) -> list[ModelNodeConfig]:
self.head_params.update({"attach_index": -1})

self.aux_head_params.update({"attach_index": -2})

node_list = [
ModelNodeConfig(
name=self.backbone,
alias="ddrnet_backbone",
freezing=self.backbone_params.pop("freezing", {}),
params=self.backbone_params,
),
ModelNodeConfig(
name="DDRNetSegmentationHead",
alias="segmentation_head",
inputs=["ddrnet_backbone"],
freezing=self.head_params.pop("freezing", {}),
params=self.head_params,
task=self.task_name,
),
]
if self.backbone_params.get("use_aux_heads", False):
node_list.append(
ModelNodeConfig(
name="DDRNetSegmentationHead",
alias="aux_segmentation_head",
inputs=["ddrnet_backbone"],
freezing=self.aux_head_params.pop("freezing", {}),
params=self.aux_head_params,
task=self.task_name,
)
)
return node_list

@property
def losses(self) -> list[LossModuleConfig]:
loss_list = [
LossModuleConfig(
name="BCEWithLogitsLoss"
if self.task == "binary"
else "CrossEntropyLoss",
alias="segmentation_loss",
attached_to="segmentation_head",
params=self.loss_params,
weight=1.0,
),
]
if self.backbone_params.get("use_aux_heads", False):
loss_list.append(
LossModuleConfig(
name="BCEWithLogitsLoss"
if self.task == "binary"
else "CrossEntropyLoss",
alias="aux_segmentation_loss",
attached_to="aux_segmentation_head",
params=self.loss_params,
weight=0.4,
)
)
return loss_list
2 changes: 2 additions & 0 deletions luxonis_train/nodes/backbones/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from .contextspatial import ContextSpatial
from .ddrnet import DDRNet
from .efficientnet import EfficientNet
from .efficientrep import EfficientRep
from .micronet import MicroNet
Expand All @@ -18,4 +19,5 @@
"ReXNetV1_lite",
"RepVGG",
"ResNet",
"DDRNet",
]
3 changes: 3 additions & 0 deletions luxonis_train/nodes/backbones/ddrnet/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from .ddrnet import DDRNet

__all__ = ["DDRNet"]
Loading