diff --git a/README.md b/README.md index ccf8aa3..5c3c0ea 100644 --- a/README.md +++ b/README.md @@ -102,9 +102,9 @@ path = model.export(format="onnx") # export the model to ONNX format ##
Models
-YOLOv8 [Detect](https://docs.ultralytics.com/tasks/detect), [Segment](https://docs.ultralytics.com/tasks/segment) and [Pose](https://docs.ultralytics.com/tasks/pose) models pretrained on the [COCO](https://docs.ultralytics.com/datasets/detect/coco) dataset are available here, as well as YOLOv8 [Classify](https://docs.ultralytics.com/modes/classify) models pretrained on the [ImageNet](https://docs.ultralytics.com/datasets/classify/imagenet) dataset. [Track](https://docs.ultralytics.com/modes/track) mode is available for all Detect, Segment and Pose models. +YOLOv8 [Detect](https://docs.ultralytics.com/tasks/detect), [Segment](https://docs.ultralytics.com/tasks/segment) and [Pose](https://docs.ultralytics.com/tasks/pose) models pretrained on the [COCO](https://docs.ultralytics.com/datasets/detect/coco) dataset are available here, as well as YOLOv8 [Classify](https://docs.ultralytics.com/tasks/classify) models pretrained on the [ImageNet](https://docs.ultralytics.com/datasets/classify/imagenet) dataset. [Track](https://docs.ultralytics.com/modes/track) mode is available for all Detect, Segment and Pose models. - + All [Models](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/models) download automatically from the latest Ultralytics [release](https://github.com/ultralytics/assets/releases) on first use. diff --git a/README.zh-CN.md b/README.zh-CN.md index 3cde911..e401710 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -102,9 +102,9 @@ success = model.export(format="onnx") # 将模型导出为 ONNX 格式 ##
模型
-在[COCO](https://docs.ultralytics.com/datasets/detect/coco)数据集上预训练的YOLOv8 [检测](https://docs.ultralytics.com/tasks/detect),[分割](https://docs.ultralytics.com/tasks/segment)和[姿态](https://docs.ultralytics.com/tasks/pose)模型可以在这里找到,以及在[ImageNet](https://docs.ultralytics.com/datasets/classify/imagenet)数据集上预训练的YOLOv8 [分类](https://docs.ultralytics.com/modes/classify)模型。所有的检测,分割和姿态模型都支持[追踪](https://docs.ultralytics.com/modes/track)模式。 +在[COCO](https://docs.ultralytics.com/datasets/detect/coco)数据集上预训练的YOLOv8 [检测](https://docs.ultralytics.com/tasks/detect),[分割](https://docs.ultralytics.com/tasks/segment)和[姿态](https://docs.ultralytics.com/tasks/pose)模型可以在这里找到,以及在[ImageNet](https://docs.ultralytics.com/datasets/classify/imagenet)数据集上预训练的YOLOv8 [分类](https://docs.ultralytics.com/tasks/classify)模型。所有的检测,分割和姿态模型都支持[追踪](https://docs.ultralytics.com/modes/track)模式。 - + 所有[模型](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/models)在首次使用时会自动从最新的Ultralytics [发布版本](https://github.com/ultralytics/assets/releases)下载。 diff --git a/docs/tasks/index.md b/docs/tasks/index.md index 2534431..982bb62 100644 --- a/docs/tasks/index.md +++ b/docs/tasks/index.md @@ -10,7 +10,7 @@ perform [detection](detect.md), [segmentation](segment.md), [classification](cla and [pose](pose.md) estimation. Each of these tasks has a different objective and use case.
- + ## [Detection](detect.md) diff --git a/examples/tutorial.ipynb b/examples/tutorial.ipynb index 9842bf7..50a6dac 100644 --- a/examples/tutorial.ipynb +++ b/examples/tutorial.ipynb @@ -548,7 +548,7 @@ "\n", "YOLOv8 can train, val, predict and export models for the most common tasks in vision AI: [Detect](https://docs.ultralytics.com/tasks/detect/), [Segment](https://docs.ultralytics.com/tasks/segment/), [Classify](https://docs.ultralytics.com/tasks/classify/) and [Pose](https://docs.ultralytics.com/tasks/pose/). See [YOLOv8 Tasks Docs](https://docs.ultralytics.com/tasks/) for more information.\n", "\n", - "
\n" + "
\n" ], "metadata": { "id": "Phm9ccmOKye5" diff --git a/mkdocs.yml b/mkdocs.yml index c1f2049..e18ed6b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -17,7 +17,7 @@ theme: icon: repo: fontawesome/brands/github font: - text: Roboto + text: Helvetica code: Roboto Mono palette: diff --git a/ultralytics/__init__.py b/ultralytics/__init__.py index 95febf1..94be8f8 100644 --- a/ultralytics/__init__.py +++ b/ultralytics/__init__.py @@ -1,6 +1,6 @@ # Ultralytics YOLO 🚀, AGPL-3.0 license -__version__ = '8.0.116' +__version__ = '8.0.117' from ultralytics.hub import start from ultralytics.vit.rtdetr import RTDETR diff --git a/ultralytics/yolo/engine/exporter.py b/ultralytics/yolo/engine/exporter.py index d63c22c..8017a2f 100644 --- a/ultralytics/yolo/engine/exporter.py +++ b/ultralytics/yolo/engine/exporter.py @@ -172,7 +172,8 @@ class Exporter: # Input im = torch.zeros(self.args.batch, 3, *self.imgsz).to(self.device) - file = Path(getattr(model, 'pt_path', None) or getattr(model, 'yaml_file', None) or model.yaml['yaml_file']) + file = Path( + getattr(model, 'pt_path', None) or getattr(model, 'yaml_file', None) or model.yaml.get('yaml_file', '')) if file.suffix == '.yaml': file = Path(file.name) @@ -207,7 +208,8 @@ class Exporter: self.im = im self.model = model self.file = file - self.output_shape = tuple(y.shape) if isinstance(y, torch.Tensor) else tuple(tuple(x.shape) for x in y) + self.output_shape = tuple(y.shape) if isinstance(y, torch.Tensor) else \ + tuple(tuple(x.shape if isinstance(x, torch.Tensor) else []) for x in y) self.pretty_name = Path(self.model.yaml.get('yaml_file', self.file)).stem.replace('yolo', 'YOLO') trained_on = f'trained on {Path(self.args.data).name}' if self.args.data else '(untrained)' description = f'Ultralytics {self.pretty_name} model {trained_on}' diff --git a/ultralytics/yolo/nas/model.py b/ultralytics/yolo/nas/model.py index f375dac..bfe7dcd 100644 --- a/ultralytics/yolo/nas/model.py +++ b/ultralytics/yolo/nas/model.py @@ -1,6 +1,12 @@ # Ultralytics YOLO 🚀, AGPL-3.0 license """ -# NAS model interface +YOLO-NAS model interface. + +Usage - Predict: + from ultralytics import NAS + + model = NAS('yolo_nas_s') + results = model.predict('ultralytics/assets/bus.jpg') """ from pathlib import Path @@ -33,11 +39,13 @@ class NAS: self.model.args = DEFAULT_CFG_DICT # attach args to model # Standardize model - self.model.fuse = lambda verbose: self.model + self.model.fuse = lambda verbose=True: self.model self.model.stride = torch.tensor([32]) self.model.names = dict(enumerate(self.model._class_names)) self.model.is_fused = lambda: False # for info() self.model.yaml = {} # for info() + self.model.pt_path = model # for export() + self.model.task = 'detect' # for export() self.info() @smart_inference_mode()