AWS Trainium & Inferentia 文件
YOLOS
並獲得增強的文件體驗
開始使用
YOLOS
概述
YOLOS 模型由 Yuxin Fang、Bencheng Liao、Xinggang Wang、Jiemin Fang、Jiyang Qi、Rui Wu、Jianwei Niu、Wenyu Liu 在 You Only Look at One Sequence: Rethinking Transformer in Vision through Object Detection 中提出。YOLOS 受 DETR 啟發,提出僅利用普通的 視覺 Transformer (ViT) 進行目標檢測。結果表明,一個基於編碼器(encoder-only)的 Transformer 也能在 COCO 上達到 42 AP,與 DETR 和 Faster R-CNN 等更復雜的框架相似。
匯出到 Neuron
要將 🤗 Transformers 模型部署到 Neuron 裝置上,您首先需要編譯模型並將其匯出為序列化格式以進行推理。以下是兩種編譯模型的方法,您可以選擇最適合您需求的一種。這裡我們以 feature-extraction
為例。
選項 1: CLI
您可以使用 Optimum 命令列介面匯出模型,如下所示:
optimum-cli export neuron --model hustvl/yolos-tiny --task object-detection --batch_size 1 yolos_object_detection_neuronx/
執行 optimum-cli export neuron --help
以顯示所有命令列選項及其描述。
選項 2: Python API
from optimum.neuron import NeuronModelForObjectDetection
from transformers import AutoImageProcessor
preprocessor = AutoImageProcessor.from_pretrained("hustvl/yolos-tiny")
neuron_model = NeuronModelForObjectDetection.from_pretrained("hustvl/yolos-tiny", export=True, batch_size=1)
neuron_model.save_pretrained("yolos_object_detection_neuronx")
neuron_model.push_to_hub(
"yolos_object_detection_neuronx", repository_id="optimum/yolos-tiny-neuronx-bs1" # Replace with your HF Hub repo id
)
NeuronYolosForObjectDetection
class optimum.neuron.NeuronYolosForObjectDetection
< 原始碼 >( model: ScriptModule config: PretrainedConfig model_save_dir: str | pathlib.Path | tempfile.TemporaryDirectory | None = None model_file_name: str | None = None preprocessors: list | None = None neuron_config: NeuronDefaultConfig | None = None **kwargs )
引數
- config (
transformers.PretrainedConfig
) — PretrainedConfig 是模型配置類,包含模型的所有引數。使用配置檔案初始化並不會載入與模型關聯的權重,只加載配置。請檢視optimum.neuron.modeling.NeuronTracedModel.from_pretrained
方法以載入模型權重。 - model (
torch.jit._script.ScriptModule
) — torch.jit._script.ScriptModule 是包含由 neuron(x) 編譯器編譯的嵌入式 NEFF(Neuron 可執行檔案格式)的 TorchScript 模組。
Neuron 模型,頂部帶有目標檢測頭,用於 COCO 檢測等任務。
此模型繼承自 ~neuron.modeling.NeuronTracedModel
。請檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存)。
forward
< 原始碼 >( pixel_values: Tensor **kwargs )
引數
- pixel_values (
torch.Tensor | None
型別,形狀為(batch_size, num_channels, height, width)
,預設為None
) — 對應當前批次影像的畫素值。畫素值可以透過AutoImageProcessor
從編碼影像中獲取。
NeuronYolosForObjectDetection
的前向傳播方法,重寫了 __call__
特殊方法。僅接受編譯步驟中跟蹤的輸入。推理過程中提供的任何額外輸入都將被忽略。要包含額外輸入,請在指定這些輸入的情況下重新編譯模型。
示例
>>> import requests
>>> from PIL import Image
>>> from optimum.neuron import NeuronYolosForObjectDetection
>>> from transformers import AutoImageProcessor
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> preprocessor = AutoImageProcessor.from_pretrained("optimum/yolos-tiny-neuronx-bs1")
>>> model = NeuronYolosForObjectDetection.from_pretrained("optimum/yolos-tiny-neuronx-bs1")
>>> inputs = preprocessor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> target_sizes = torch.tensor([image.size[::-1]])
>>> results = image_processor.post_process_object_detection(outputs, threshold=0.9, target_sizes=target_sizes)[0]