mirror of
				https://github.com/THU-MIG/yolov10.git
				synced 2025-10-31 06:15:39 +08:00 
			
		
		
		
	Update OpenVINO INT8 export (#7515)
Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com> Co-authored-by: UltralyticsAssistant <web@ultralytics.com>
This commit is contained in:
		
							parent
							
								
									4dc8c406f9
								
							
						
					
					
						commit
						30185e0d4c
					
				| @ -25,7 +25,6 @@ pip install ultralytics[explorer] | ||||
| 
 | ||||
|     Explorer works on embedding/semantic search & SQL querying and is powered by [LanceDB](https://lancedb.com/) serverless vector database. Unlike traditional in-memory DBs, it is persisted on disk without sacrificing performance, so you can scale locally to large datasets like COCO without running out of memory. | ||||
| 
 | ||||
| 
 | ||||
| ### Explorer API | ||||
| 
 | ||||
| This is a Python API for Exploring your datasets. It also powers the GUI Explorer. You can use this to create your own exploratory notebooks or scripts to get insights into your datasets. | ||||
| @ -41,6 +40,7 @@ yolo explorer | ||||
| ``` | ||||
| 
 | ||||
| !!! note "Note" | ||||
| 
 | ||||
|     Ask AI feature works using OpenAI, so you'll be prompted to set the api key for OpenAI when you first run the GUI. | ||||
|     You can set it like this - `yolo settings openai_api_key="..."` | ||||
| 
 | ||||
|  | ||||
| @ -16,7 +16,6 @@ Create embeddings for your dataset, search for similar images, run SQL queries, | ||||
| <img width="1709" alt="Screenshot 2024-01-08 at 7 19 48 PM (1)" src="https://github.com/AyushExel/assets/assets/15766192/e536b0eb-6bce-43fe-b800-3e79510d2e5b"> | ||||
| </p> | ||||
| 
 | ||||
| 
 | ||||
| - Try the [GUI Demo](explorer/index.md) | ||||
| - Learn more about the [Explorer API](explorer/index.md) | ||||
| 
 | ||||
|  | ||||
| @ -91,7 +91,7 @@ Benchmarks will attempt to run automatically on all possible export formats belo | ||||
| | [PyTorch](https://pytorch.org/)                                    | -                 | `yolov8n.pt`              | ✅        | -                                                   | | ||||
| | [TorchScript](https://pytorch.org/docs/stable/jit.html)            | `torchscript`     | `yolov8n.torchscript`     | ✅        | `imgsz`, `optimize`                                 | | ||||
| | [ONNX](https://onnx.ai/)                                           | `onnx`            | `yolov8n.onnx`            | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `opset`     | | ||||
| | [OpenVINO](https://docs.openvino.ai/latest/index.html)             | `openvino`        | `yolov8n_openvino_model/` | ✅        | `imgsz`, `half`, `int8`                             | | ||||
| | [OpenVINO](../integrations/openvino.md)                            | `openvino`        | `yolov8n_openvino_model/` | ✅        | `imgsz`, `half`, `int8`                             | | ||||
| | [TensorRT](https://developer.nvidia.com/tensorrt)                  | `engine`          | `yolov8n.engine`          | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `workspace` | | ||||
| | [CoreML](https://github.com/apple/coremltools)                     | `coreml`          | `yolov8n.mlpackage`       | ✅        | `imgsz`, `half`, `int8`, `nms`                      | | ||||
| | [TF SavedModel](https://www.tensorflow.org/guide/saved_model)      | `saved_model`     | `yolov8n_saved_model/`    | ✅        | `imgsz`, `keras`, `int8`                            | | ||||
|  | ||||
| @ -96,7 +96,7 @@ Available YOLOv8 export formats are in the table below. You can export to any fo | ||||
| | [PyTorch](https://pytorch.org/)                                    | -                 | `yolov8n.pt`              | ✅        | -                                                   | | ||||
| | [TorchScript](https://pytorch.org/docs/stable/jit.html)            | `torchscript`     | `yolov8n.torchscript`     | ✅        | `imgsz`, `optimize`                                 | | ||||
| | [ONNX](https://onnx.ai/)                                           | `onnx`            | `yolov8n.onnx`            | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `opset`     | | ||||
| | [OpenVINO](https://docs.openvino.ai/latest/index.html)             | `openvino`        | `yolov8n_openvino_model/` | ✅        | `imgsz`, `half`, `int8`                             | | ||||
| | [OpenVINO](../integrations/openvino.md)                            | `openvino`        | `yolov8n_openvino_model/` | ✅        | `imgsz`, `half`, `int8`                             | | ||||
| | [TensorRT](https://developer.nvidia.com/tensorrt)                  | `engine`          | `yolov8n.engine`          | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `workspace` | | ||||
| | [CoreML](https://github.com/apple/coremltools)                     | `coreml`          | `yolov8n.mlpackage`       | ✅        | `imgsz`, `half`, `int8`, `nms`                      | | ||||
| | [TF SavedModel](https://www.tensorflow.org/guide/saved_model)      | `saved_model`     | `yolov8n_saved_model/`    | ✅        | `imgsz`, `keras`, `int8`                            | | ||||
|  | ||||
| @ -761,5 +761,7 @@ Here's a Python script using OpenCV (`cv2`) and YOLOv8 to run inference on video | ||||
| This script will run predictions on each frame of the video, visualize the results, and display them in a window. The loop can be exited by pressing 'q'. | ||||
| 
 | ||||
| [car spare parts]: https://github.com/RizwanMunawar/ultralytics/assets/62513924/a0f802a8-0776-44cf-8f17-93974a4a28a1 | ||||
| 
 | ||||
| [football player detect]: https://github.com/RizwanMunawar/ultralytics/assets/62513924/7d320e1f-fc57-4d7f-a691-78ee579c3442 | ||||
| 
 | ||||
| [human fall detect]: https://github.com/RizwanMunawar/ultralytics/assets/62513924/86437c4a-3227-4eee-90ef-9efb697bdb43 | ||||
|  | ||||
| @ -354,5 +354,7 @@ To initiate your contribution, please refer to our [Contributing Guide](https:// | ||||
| Together, let's enhance the tracking capabilities of the Ultralytics YOLO ecosystem 🙏! | ||||
| 
 | ||||
| [fish track]: https://github.com/RizwanMunawar/ultralytics/assets/62513924/a5146d0f-bfa8-4e0a-b7df-3c1446cd8142 | ||||
| 
 | ||||
| [people track]: https://github.com/RizwanMunawar/ultralytics/assets/62513924/93bb4ee2-77a0-4e4e-8eb6-eb8f527f0527 | ||||
| 
 | ||||
| [vehicle track]: https://github.com/RizwanMunawar/ultralytics/assets/62513924/ee6e6038-383b-4f21-ac29-b2a1c7d386ab | ||||
|  | ||||
| @ -4,7 +4,6 @@ description: Detailed reference for the Explorer GUI. Includes brief description | ||||
| keywords: Ultralytics, data explorer, gui, function reference, documentation, AI queries, image similarity, SQL queries, streamlit, semantic search | ||||
| --- | ||||
| 
 | ||||
| 
 | ||||
| # Reference for `ultralytics/data/explorer/gui/dash.py` | ||||
| 
 | ||||
| !!! Note | ||||
|  | ||||
| @ -167,7 +167,7 @@ Available YOLOv8-cls export formats are in the table below. You can predict or v | ||||
| | [PyTorch](https://pytorch.org/)                                    | -                 | `yolov8n-cls.pt`              | ✅        | -                                                   | | ||||
| | [TorchScript](https://pytorch.org/docs/stable/jit.html)            | `torchscript`     | `yolov8n-cls.torchscript`     | ✅        | `imgsz`, `optimize`                                 | | ||||
| | [ONNX](https://onnx.ai/)                                           | `onnx`            | `yolov8n-cls.onnx`            | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `opset`     | | ||||
| | [OpenVINO](https://docs.openvino.ai/latest/index.html)             | `openvino`        | `yolov8n-cls_openvino_model/` | ✅        | `imgsz`, `half`                                     | | ||||
| | [OpenVINO](../integrations/openvino.md)                            | `openvino`        | `yolov8n-cls_openvino_model/` | ✅        | `imgsz`, `half`, `int8`                             | | ||||
| | [TensorRT](https://developer.nvidia.com/tensorrt)                  | `engine`          | `yolov8n-cls.engine`          | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `workspace` | | ||||
| | [CoreML](https://github.com/apple/coremltools)                     | `coreml`          | `yolov8n-cls.mlpackage`       | ✅        | `imgsz`, `half`, `int8`, `nms`                      | | ||||
| | [TF SavedModel](https://www.tensorflow.org/guide/saved_model)      | `saved_model`     | `yolov8n-cls_saved_model/`    | ✅        | `imgsz`, `keras`                                    | | ||||
|  | ||||
| @ -168,7 +168,7 @@ Available YOLOv8 export formats are in the table below. You can predict or valid | ||||
| | [PyTorch](https://pytorch.org/)                                    | -                 | `yolov8n.pt`              | ✅        | -                                                   | | ||||
| | [TorchScript](https://pytorch.org/docs/stable/jit.html)            | `torchscript`     | `yolov8n.torchscript`     | ✅        | `imgsz`, `optimize`                                 | | ||||
| | [ONNX](https://onnx.ai/)                                           | `onnx`            | `yolov8n.onnx`            | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `opset`     | | ||||
| | [OpenVINO](https://docs.openvino.ai/latest/index.html)             | `openvino`        | `yolov8n_openvino_model/` | ✅        | `imgsz`, `half`, `int8`                             | | ||||
| | [OpenVINO](../integrations/openvino.md)                            | `openvino`        | `yolov8n_openvino_model/` | ✅        | `imgsz`, `half`, `int8`                             | | ||||
| | [TensorRT](https://developer.nvidia.com/tensorrt)                  | `engine`          | `yolov8n.engine`          | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `workspace` | | ||||
| | [CoreML](https://github.com/apple/coremltools)                     | `coreml`          | `yolov8n.mlpackage`       | ✅        | `imgsz`, `half`, `int8`, `nms`                      | | ||||
| | [TF SavedModel](https://www.tensorflow.org/guide/saved_model)      | `saved_model`     | `yolov8n_saved_model/`    | ✅        | `imgsz`, `keras`, `int8`                            | | ||||
|  | ||||
| @ -30,7 +30,7 @@ YOLOv8 pretrained OBB models are shown here, which are pretrained on the [DOTAv1 | ||||
| [Models](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/cfg/models) download automatically from the latest Ultralytics [release](https://github.com/ultralytics/assets/releases) on first use. | ||||
| 
 | ||||
| | Model                                                                                        | size<br><sup>(pixels) | mAP<sup>test<br>50 | Speed<br><sup>CPU ONNX<br>(ms) | Speed<br><sup>A100 TensorRT<br>(ms) | params<br><sup>(M) | FLOPs<br><sup>(B) | | ||||
| |----------------------------------------------------------------------------------------------|-----------------------| -------------------- | -------------------------------- | ------------------------------------- | -------------------- | ----------------- | | ||||
| |----------------------------------------------------------------------------------------------|-----------------------|--------------------|--------------------------------|-------------------------------------|--------------------|-------------------| | ||||
| | [YOLOv8n-obb](https://github.com/ultralytics/assets/releases/download/v8.1.0/yolov8n-obb.pt) | 1024                  | 76.9               | 204.77                         | 3.57                                | 3.1                | 23.3              | | ||||
| | [YOLOv8s-obb](https://github.com/ultralytics/assets/releases/download/v8.1.0/yolov8s-obb.pt) | 1024                  | 78.0               | 424.88                         | 4.07                                | 11.4               | 76.3              | | ||||
| | [YOLOv8m-obb](https://github.com/ultralytics/assets/releases/download/v8.1.0/yolov8m-obb.pt) | 1024                  | 80.5               | 763.48                         | 7.61                                | 26.4               | 208.6             | | ||||
| @ -165,7 +165,7 @@ Available YOLOv8-obb export formats are in the table below. You can predict or v | ||||
| | [PyTorch](https://pytorch.org/)                                    | -                 | `yolov8n-obb.pt`              | ✅        | -                                                   | | ||||
| | [TorchScript](https://pytorch.org/docs/stable/jit.html)            | `torchscript`     | `yolov8n-obb.torchscript`     | ✅        | `imgsz`, `optimize`                                 | | ||||
| | [ONNX](https://onnx.ai/)                                           | `onnx`            | `yolov8n-obb.onnx`            | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `opset`     | | ||||
| | [OpenVINO](https://docs.openvino.ai/latest/index.html)             | `openvino`        | `yolov8n-obb_openvino_model/` | ✅        | `imgsz`, `half`                                     | | ||||
| | [OpenVINO](../integrations/openvino.md)                            | `openvino`        | `yolov8n-obb_openvino_model/` | ✅        | `imgsz`, `half`, `int8`                             | | ||||
| | [TensorRT](https://developer.nvidia.com/tensorrt)                  | `engine`          | `yolov8n-obb.engine`          | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `workspace` | | ||||
| | [CoreML](https://github.com/apple/coremltools)                     | `coreml`          | `yolov8n-obb.mlpackage`       | ✅        | `imgsz`, `half`, `int8`, `nms`                      | | ||||
| | [TF SavedModel](https://www.tensorflow.org/guide/saved_model)      | `saved_model`     | `yolov8n-obb_saved_model/`    | ✅        | `imgsz`, `keras`                                    | | ||||
|  | ||||
| @ -170,7 +170,7 @@ Available YOLOv8-pose export formats are in the table below. You can predict or | ||||
| | [PyTorch](https://pytorch.org/)                                    | -                 | `yolov8n-pose.pt`              | ✅        | -                                                   | | ||||
| | [TorchScript](https://pytorch.org/docs/stable/jit.html)            | `torchscript`     | `yolov8n-pose.torchscript`     | ✅        | `imgsz`, `optimize`                                 | | ||||
| | [ONNX](https://onnx.ai/)                                           | `onnx`            | `yolov8n-pose.onnx`            | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `opset`     | | ||||
| | [OpenVINO](https://docs.openvino.ai/latest/index.html)             | `openvino`        | `yolov8n-pose_openvino_model/` | ✅        | `imgsz`, `half`                                     | | ||||
| | [OpenVINO](../integrations/openvino.md)                            | `openvino`        | `yolov8n-pose_openvino_model/` | ✅        | `imgsz`, `half`, `int8`                             | | ||||
| | [TensorRT](https://developer.nvidia.com/tensorrt)                  | `engine`          | `yolov8n-pose.engine`          | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `workspace` | | ||||
| | [CoreML](https://github.com/apple/coremltools)                     | `coreml`          | `yolov8n-pose.mlpackage`       | ✅        | `imgsz`, `half`, `int8`, `nms`                      | | ||||
| | [TF SavedModel](https://www.tensorflow.org/guide/saved_model)      | `saved_model`     | `yolov8n-pose_saved_model/`    | ✅        | `imgsz`, `keras`                                    | | ||||
|  | ||||
| @ -173,7 +173,7 @@ Available YOLOv8-seg export formats are in the table below. You can predict or v | ||||
| | [PyTorch](https://pytorch.org/)                                    | -                 | `yolov8n-seg.pt`              | ✅        | -                                                   | | ||||
| | [TorchScript](https://pytorch.org/docs/stable/jit.html)            | `torchscript`     | `yolov8n-seg.torchscript`     | ✅        | `imgsz`, `optimize`                                 | | ||||
| | [ONNX](https://onnx.ai/)                                           | `onnx`            | `yolov8n-seg.onnx`            | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `opset`     | | ||||
| | [OpenVINO](https://docs.openvino.ai/latest/index.html)             | `openvino`        | `yolov8n-seg_openvino_model/` | ✅        | `imgsz`, `half`                                     | | ||||
| | [OpenVINO](../integrations/openvino.md)                            | `openvino`        | `yolov8n-seg_openvino_model/` | ✅        | `imgsz`, `half`, `int8`                             | | ||||
| | [TensorRT](https://developer.nvidia.com/tensorrt)                  | `engine`          | `yolov8n-seg.engine`          | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `workspace` | | ||||
| | [CoreML](https://github.com/apple/coremltools)                     | `coreml`          | `yolov8n-seg.mlpackage`       | ✅        | `imgsz`, `half`, `int8`, `nms`                      | | ||||
| | [TF SavedModel](https://www.tensorflow.org/guide/saved_model)      | `saved_model`     | `yolov8n-seg_saved_model/`    | ✅        | `imgsz`, `keras`                                    | | ||||
|  | ||||
| @ -175,7 +175,7 @@ Available YOLOv8 export formats are in the table below. You can export to any fo | ||||
| | [PyTorch](https://pytorch.org/)                                    | -                 | `yolov8n.pt`              | ✅        | -                                                   | | ||||
| | [TorchScript](https://pytorch.org/docs/stable/jit.html)            | `torchscript`     | `yolov8n.torchscript`     | ✅        | `imgsz`, `optimize`                                 | | ||||
| | [ONNX](https://onnx.ai/)                                           | `onnx`            | `yolov8n.onnx`            | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `opset`     | | ||||
| | [OpenVINO](https://docs.openvino.ai/latest/index.html)             | `openvino`        | `yolov8n_openvino_model/` | ✅        | `imgsz`, `half`, `int8`                             | | ||||
| | [OpenVINO](../integrations/openvino.md)                            | `openvino`        | `yolov8n_openvino_model/` | ✅        | `imgsz`, `half`, `int8`                             | | ||||
| | [TensorRT](https://developer.nvidia.com/tensorrt)                  | `engine`          | `yolov8n.engine`          | ✅        | `imgsz`, `half`, `dynamic`, `simplify`, `workspace` | | ||||
| | [CoreML](https://github.com/apple/coremltools)                     | `coreml`          | `yolov8n.mlpackage`       | ✅        | `imgsz`, `half`, `int8`, `nms`                      | | ||||
| | [TF SavedModel](https://www.tensorflow.org/guide/saved_model)      | `saved_model`     | `yolov8n_saved_model/`    | ✅        | `imgsz`, `keras`, `int8`                            | | ||||
|  | ||||
| @ -286,7 +286,6 @@ Explorer API can be used to explore datasets with advanced semantic, vector-simi | ||||
| 
 | ||||
| [Explorer](../datasets/explorer/index.md){ .md-button } | ||||
| 
 | ||||
| 
 | ||||
| ## Using Trainers | ||||
| 
 | ||||
| `YOLO` model class is a high-level wrapper on the Trainer classes. Each YOLO task has its own trainer that inherits from `BaseTrainer`. | ||||
|  | ||||
| @ -182,16 +182,16 @@ import torch | ||||
| 
 | ||||
| # Model | ||||
| model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.pt') | ||||
|                                                        'yolov5s.torchscript ')       # TorchScript | ||||
|                                                        'yolov5s.onnx')               # ONNX Runtime | ||||
|                                                        'yolov5s_openvino_model')     # OpenVINO | ||||
|                                                        'yolov5s.engine')             # TensorRT | ||||
|                                                        'yolov5s.mlmodel')            # CoreML (macOS Only) | ||||
|                                                        'yolov5s_saved_model')        # TensorFlow SavedModel | ||||
|                                                        'yolov5s.pb')                 # TensorFlow GraphDef | ||||
|                                                        'yolov5s.tflite')             # TensorFlow Lite | ||||
|                                                        'yolov5s_edgetpu.tflite')     # TensorFlow Edge TPU | ||||
|                                                        'yolov5s_paddle_model')       # PaddlePaddle | ||||
| model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.torchscript ')  # TorchScript | ||||
| model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.onnx')  # ONNX Runtime | ||||
| model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s_openvino_model')  # OpenVINO | ||||
| model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.engine')  # TensorRT | ||||
| model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.mlmodel')  # CoreML (macOS Only) | ||||
| model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s_saved_model')  # TensorFlow SavedModel | ||||
| model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.pb')  # TensorFlow GraphDef | ||||
| model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.tflite')  # TensorFlow Lite | ||||
| model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s_edgetpu.tflite')  # TensorFlow Edge TPU | ||||
| model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s_paddle_model')  # PaddlePaddle | ||||
| 
 | ||||
| # Images | ||||
| img = 'https://ultralytics.com/images/zidane.jpg'  # or file, Path, PIL, OpenCV, numpy, list | ||||
|  | ||||
| @ -429,12 +429,20 @@ class Exporter: | ||||
|         )  # export | ||||
| 
 | ||||
|         if self.args.int8: | ||||
|             assert self.args.data, "INT8 export requires a data argument for calibration, i.e. 'data=coco8.yaml'" | ||||
|             if not self.args.data: | ||||
|                 self.args.data = DEFAULT_CFG.data or "coco128.yaml" | ||||
|                 LOGGER.warning( | ||||
|                     f"{prefix} WARNING ⚠️ INT8 export requires a missing 'data' arg for calibration. " | ||||
|                     f"Using default 'data={self.args.data}'." | ||||
|                 ) | ||||
|             check_requirements("nncf>=2.5.0") | ||||
|             import nncf | ||||
| 
 | ||||
|             def transform_fn(data_item): | ||||
|                 """Quantization transform function.""" | ||||
|                 assert ( | ||||
|                     data_item["img"].dtype == torch.uint8 | ||||
|                 ), "Input image must be uint8 for the quantization preprocessing" | ||||
|                 im = data_item["img"].numpy().astype(np.float32) / 255.0  # uint8 to fp16/32 and 0 - 255 to 0.0 - 1.0 | ||||
|                 return np.expand_dims(im, 0) if im.ndim == 3 else im | ||||
| 
 | ||||
| @ -442,6 +450,9 @@ class Exporter: | ||||
|             LOGGER.info(f"{prefix} collecting INT8 calibration images from 'data={self.args.data}'") | ||||
|             data = check_det_dataset(self.args.data) | ||||
|             dataset = YOLODataset(data["val"], data=data, imgsz=self.imgsz[0], augment=False) | ||||
|             n = len(dataset) | ||||
|             if n < 300: | ||||
|                 LOGGER.warning(f"{prefix} WARNING ⚠️ >300 images recommended for INT8 calibration, found {n} images.") | ||||
|             quantization_dataset = nncf.Dataset(dataset, transform_fn) | ||||
|             ignored_scope = nncf.IgnoredScope(types=["Multiply", "Subtract", "Sigmoid"])  # ignore operation | ||||
|             quantized_ov_model = nncf.quantize( | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Glenn Jocher
						Glenn Jocher