Skip to content

Commit

Permalink
Add yolov5 nano models (#199)
Browse files Browse the repository at this point in the history
* add yolov5_nano model

* Add yolov5n to yolort.models and hubconf.py

Co-authored-by: Zhiqiang Wang <[email protected]>
  • Loading branch information
deepage and zhiqwang authored Oct 14, 2021
1 parent f6ede44 commit ca3c97c
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 2 deletions.
2 changes: 1 addition & 1 deletion hubconf.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Optional list of dependencies required by the package
dependencies = ["torch", "torchvision"]

from yolort.models import yolov5s, yolov5m, yolov5l, yolov5ts
from yolort.models import yolov5n, yolov5s, yolov5m, yolov5l, yolov5ts
23 changes: 22 additions & 1 deletion yolort/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,28 @@
from .yolo import YOLO
from .yolo_module import YOLOv5

__all__ = ["YOLO", "YOLOv5", "yolov5s", "yolov5m", "yolov5l", "yolov5ts"]
__all__ = ["YOLO", "YOLOv5", "yolov5n", "yolov5s", "yolov5m", "yolov5l", "yolov5ts"]


def yolov5n(
upstream_version: str = "r6.0", export_friendly: bool = False, **kwargs: Any
):
"""
Args:
upstream_version (str): model released by the upstream YOLOv5. Possible values
are ["r6.0"]. Default: "r6.0".
export_friendly (bool): Deciding whether to use (ONNX/TVM) export friendly mode.
Default: False.
"""
if upstream_version == "r6.0":
model = YOLOv5(arch="yolov5_darknet_pan_n_r60", **kwargs)
else:
raise NotImplementedError("Currently only supports r6.0 version")

if export_friendly:
_export_module_friendly(model)

return model


def yolov5s(
Expand Down
2 changes: 2 additions & 0 deletions yolort/models/darknet.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
darknet_s_r6_0,
darknet_m_r6_0,
darknet_l_r6_0,
darknet_n_r6_0,
)

__all__ = (
Expand All @@ -26,4 +27,5 @@
"darknet_s_r6_0",
"darknet_m_r6_0",
"darknet_l_r6_0",
"darknet_n_r6_0",
)
16 changes: 16 additions & 0 deletions yolort/models/darknetv6.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@
"darknet_s_r6_0",
"darknet_m_r6_0",
"darknet_l_r6_0",
"darknet_n_r6_0",
]

model_urls = {
"darknet_n_r6.0": None,
"darknet_s_r6.0": None,
"darknet_m_r6.0": None,
"darknet_l_r6.0": None,
Expand Down Expand Up @@ -144,6 +146,20 @@ def _darknetv6(
return model


def darknet_n_r6_0(
pretrained: bool = False, progress: bool = True, **kwargs: Any
) -> DarkNetV6:
"""
Constructs a DarkNetV6 with nano channels, as described in release 6.0
# TODO
Args:
pretrained (bool): If True, returns a model pre-trained on ImageNet
progress (bool): If True, displays a progress bar of the download to stderr
"""
return _darknetv6("darknet_n_r6.0", pretrained, progress, 0.33, 0.25, **kwargs)


def darknet_s_r6_0(
pretrained: bool = False, progress: bool = True, **kwargs: Any
) -> DarkNetV6:
Expand Down
30 changes: 30 additions & 0 deletions yolort/models/yolo.py
Original file line number Diff line number Diff line change
Expand Up @@ -452,6 +452,36 @@ def yolov5_darknet_pan_l_r40(
)


def yolov5_darknet_pan_n_r60(
pretrained: bool = False,
progress: bool = True,
num_classes: int = 80,
**kwargs: Any,
) -> YOLO:
r"""yolov5 nano release 6.0 model from
`"ultralytics/yolov5" <https://zenodo.org/badge/latestdoi/264818686>`_.
Args:
pretrained (bool): If True, returns a model pre-trained on ImageNet
progress (bool): If True, displays a progress bar of the download to stderr
"""
backbone_name = "darknet_n_r6_0"
weights_name = "yolov5_darknet_pan_n_r60_coco"
depth_multiple = 0.33
width_multiple = 0.25
version = "r6.0"
return build_model(
backbone_name,
depth_multiple,
width_multiple,
version,
weights_name,
pretrained=pretrained,
progress=progress,
num_classes=num_classes,
**kwargs,
)


def yolov5_darknet_pan_s_r60(
pretrained: bool = False,
progress: bool = True,
Expand Down

0 comments on commit ca3c97c

Please sign in to comment.