ultralytics 8.3.65 Rockchip RKNN Integration for Ultralytics YOLO models (#16308)
Signed-off-by: Francesco Mattioli <Francesco.mttl@gmail.com> Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com> Co-authored-by: Burhan <62214284+Burhan-Q@users.noreply.github.com> Co-authored-by: Lakshantha Dissanayake <lakshantha@ultralytics.com> Co-authored-by: Burhan <Burhan-Q@users.noreply.github.com> Co-authored-by: Laughing-q <1185102784@qq.com> Co-authored-by: UltralyticsAssistant <web@ultralytics.com> Co-authored-by: Laughing <61612323+Laughing-q@users.noreply.github.com> Co-authored-by: Ultralytics Assistant <135830346+UltralyticsAssistant@users.noreply.github.com> Co-authored-by: Lakshantha Dissanayake <lakshanthad@yahoo.com> Co-authored-by: Francesco Mattioli <Francesco.mttl@gmail.com> Co-authored-by: Glenn Jocher <glenn.jocher@ultralytics.com>
This commit is contained in:
parent
617dea8e25
commit
b5e0cee943
41 changed files with 390 additions and 118 deletions
|
|
@ -4,25 +4,26 @@ Benchmark a YOLO model formats for speed and accuracy.
|
|||
|
||||
Usage:
|
||||
from ultralytics.utils.benchmarks import ProfileModels, benchmark
|
||||
ProfileModels(['yolov8n.yaml', 'yolov8s.yaml']).profile()
|
||||
benchmark(model='yolov8n.pt', imgsz=160)
|
||||
ProfileModels(['yolo11n.yaml', 'yolov8s.yaml']).profile()
|
||||
benchmark(model='yolo11n.pt', imgsz=160)
|
||||
|
||||
Format | `format=argument` | Model
|
||||
--- | --- | ---
|
||||
PyTorch | - | yolov8n.pt
|
||||
TorchScript | `torchscript` | yolov8n.torchscript
|
||||
ONNX | `onnx` | yolov8n.onnx
|
||||
OpenVINO | `openvino` | yolov8n_openvino_model/
|
||||
TensorRT | `engine` | yolov8n.engine
|
||||
CoreML | `coreml` | yolov8n.mlpackage
|
||||
TensorFlow SavedModel | `saved_model` | yolov8n_saved_model/
|
||||
TensorFlow GraphDef | `pb` | yolov8n.pb
|
||||
TensorFlow Lite | `tflite` | yolov8n.tflite
|
||||
TensorFlow Edge TPU | `edgetpu` | yolov8n_edgetpu.tflite
|
||||
TensorFlow.js | `tfjs` | yolov8n_web_model/
|
||||
PaddlePaddle | `paddle` | yolov8n_paddle_model/
|
||||
MNN | `mnn` | yolov8n.mnn
|
||||
NCNN | `ncnn` | yolov8n_ncnn_model/
|
||||
PyTorch | - | yolo11n.pt
|
||||
TorchScript | `torchscript` | yolo11n.torchscript
|
||||
ONNX | `onnx` | yolo11n.onnx
|
||||
OpenVINO | `openvino` | yolo11n_openvino_model/
|
||||
TensorRT | `engine` | yolo11n.engine
|
||||
CoreML | `coreml` | yolo11n.mlpackage
|
||||
TensorFlow SavedModel | `saved_model` | yolo11n_saved_model/
|
||||
TensorFlow GraphDef | `pb` | yolo11n.pb
|
||||
TensorFlow Lite | `tflite` | yolo11n.tflite
|
||||
TensorFlow Edge TPU | `edgetpu` | yolo11n_edgetpu.tflite
|
||||
TensorFlow.js | `tfjs` | yolo11n_web_model/
|
||||
PaddlePaddle | `paddle` | yolo11n_paddle_model/
|
||||
MNN | `mnn` | yolo11n.mnn
|
||||
NCNN | `ncnn` | yolo11n_ncnn_model/
|
||||
RKNN | `rknn` | yolo11n_rknn_model/
|
||||
"""
|
||||
|
||||
import glob
|
||||
|
|
@ -41,7 +42,7 @@ from ultralytics import YOLO, YOLOWorld
|
|||
from ultralytics.cfg import TASK2DATA, TASK2METRIC
|
||||
from ultralytics.engine.exporter import export_formats
|
||||
from ultralytics.utils import ARM64, ASSETS, IS_JETSON, IS_RASPBERRYPI, LINUX, LOGGER, MACOS, TQDM, WEIGHTS_DIR
|
||||
from ultralytics.utils.checks import IS_PYTHON_3_12, check_requirements, check_yolo
|
||||
from ultralytics.utils.checks import IS_PYTHON_3_12, check_requirements, check_yolo, is_rockchip
|
||||
from ultralytics.utils.downloads import safe_download
|
||||
from ultralytics.utils.files import file_size
|
||||
from ultralytics.utils.torch_utils import get_cpu_info, select_device
|
||||
|
|
@ -121,6 +122,11 @@ def benchmark(
|
|||
assert not isinstance(model, YOLOWorld), "YOLOWorldv2 IMX exports not supported"
|
||||
assert model.task == "detect", "IMX only supported for detection task"
|
||||
assert "C2f" in model.__str__(), "IMX only supported for YOLOv8"
|
||||
if i == 15: # RKNN
|
||||
assert not isinstance(model, YOLOWorld), "YOLOWorldv2 RKNN exports not supported yet"
|
||||
assert not is_end2end, "End-to-end models not supported by RKNN yet"
|
||||
assert LINUX, "RKNN only supported on Linux"
|
||||
assert not is_rockchip(), "RKNN Inference only supported on Rockchip devices"
|
||||
if "cpu" in device.type:
|
||||
assert cpu, "inference not supported on CPU"
|
||||
if "cuda" in device.type:
|
||||
|
|
@ -334,7 +340,7 @@ class ProfileModels:
|
|||
Examples:
|
||||
Profile models and print results
|
||||
>>> from ultralytics.utils.benchmarks import ProfileModels
|
||||
>>> profiler = ProfileModels(["yolov8n.yaml", "yolov8s.yaml"], imgsz=640)
|
||||
>>> profiler = ProfileModels(["yolo11n.yaml", "yolov8s.yaml"], imgsz=640)
|
||||
>>> profiler.profile()
|
||||
"""
|
||||
|
||||
|
|
@ -368,7 +374,7 @@ class ProfileModels:
|
|||
Examples:
|
||||
Initialize and profile models
|
||||
>>> from ultralytics.utils.benchmarks import ProfileModels
|
||||
>>> profiler = ProfileModels(["yolov8n.yaml", "yolov8s.yaml"], imgsz=640)
|
||||
>>> profiler = ProfileModels(["yolo11n.yaml", "yolov8s.yaml"], imgsz=640)
|
||||
>>> profiler.profile()
|
||||
"""
|
||||
self.paths = paths
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue