Wykrywanie obiektów z RT-DETR
RTDetrWorkflow uruchamia model RT-DETR z biblioteki Ultralytics i udostępnia
go przez API HTTP. Domyślny model to rtdetr-l.pt, a domyślna konfiguracja wymaga jednego
GPU NVIDIA RTX A5000.
Utwórz workflow
from cgc.sdk import Image
from cgc.sdk.recipes.rtdetr import RTDetrConfig, RTDetrWorkflow
workflow = RTDetrWorkflow(
name="sdk-rtdetr-inference-demo",
image=Image.from_registry("ultralytics/ultralytics:latest"),
config=RTDetrConfig(
model_name="rtdetr-l.pt",
inference_cpu=4,
inference_memory=16,
inference_gpu=1,
inference_gpu_type="nvidia-rtx-a5000",
),
)
Argumenty użyte powyżej:
| Argument | Znaczenie |
|---|---|
name="sdk-rtdetr-inference-demo" | Nazwa workflow i usługi modelu. Osobną nazwę usługi możesz ustawić przez inference_name. |
image=... | Obraz kontenera zawierający środowisko, w którym uruchomi się Ultralytics. |
"ultralytics/ultralytics:latest" | Publiczny obraz kontenera Ultralytics. Aby zachować tę samą wersję środowiska, wybierz konkretny tag zamiast latest. |
config=... | Konfiguracja modelu i zasobów RT-DETR. |
model_name="rtdetr-l.pt" | Wagi gotowego modelu pobierane i wczytywane przez Ultralytics. |
inference_cpu=4 | Liczba rdzeni CPU zarezerwowanych dla usługi. |
inference_memory=16 | Ilość pamięci zarezerwowanej dla usługi, w GB. |
inference_gpu=1 | Liczba GPU zarezerwowanych dla usługi. |
inference_gpu_type="nvidia-rtx-a5000" | Identyfikator wymaganego typu GPU w CGC. |
Uruchom usługę
endpoint = workflow.deploy_pretrained_inference(
wait=True,
reuse_existing=True,
)
endpoint.wait_http("/health", timeout_seconds=300)
print(endpoint.url)
Argumenty użyte powyżej:
| Argument | Znaczenie |
|---|---|
wait=True | Czeka, aż zasób CGC będzie uruchomiony. |
reuse_existing=True | Korzysta z istniejącej usługi o tej samej nazwie zamiast zgłaszać konflikt. |
"/health" | Endpoint sprawdzający gotowość usługi RT-DETR. |
timeout_seconds=300 | Maksymalny czas oczekiwania na gotowość HTTP, w sekundach. |
Wykryj obiekty
prediction = endpoint.post_json(
"/predict",
{"image_url": "https://ultralytics.com/images/bus.jpg"},
timeout=120,
)
for detection in prediction["detections"]:
print(detection["class_name"], detection["confidence"])
Argumenty użyte powyżej:
| Argument | Znaczenie |
|---|---|
"/predict" | Trasa HTTP RT-DETR wykonująca detekcję obiektów. |
{"image_url": "..."} | Treść żądania w formacie JSON. image_url musi wskazywać obraz, który można pobrać z kontenera usługi. API przyjmuje też image_base64. |
timeout=120 | Limit czasu żądania HTTP w sekundach. |
Pole annotated_image_base64 w odpowiedzi zawiera obraz z zaznaczonymi
detekcjami. Możesz go zdekodować i zapisać do pliku.
endpoint.delete()
Aby uruchomić ten przykład, utwórz plik Pythona we własnym projekcie, np.
rtdetr_inference.py, i połącz bloki kodu z tej strony:
from cgc.sdk import Image
from cgc.sdk.recipes.rtdetr import RTDetrConfig, RTDetrWorkflow
workflow = RTDetrWorkflow(
name="sdk-rtdetr-inference-demo",
image=Image.from_registry("ultralytics/ultralytics:latest"),
config=RTDetrConfig(
model_name="rtdetr-l.pt",
inference_cpu=4,
inference_memory=16,
inference_gpu=1,
inference_gpu_type="nvidia-rtx-a5000",
),
)
endpoint = workflow.deploy_pretrained_inference(
wait=True,
reuse_existing=True,
)
endpoint.wait_http("/health", timeout_seconds=300)
prediction = endpoint.post_json(
"/predict",
{"image_url": "https://ultralytics.com/images/bus.jpg"},
timeout=120,
)
for detection in prediction["detections"]:
print(detection["class_name"], detection["confidence"])
Uruchom plik z własnego projektu:
python rtdetr_inference.py
Nazwę pliku możesz wybrać samodzielnie. Przykład korzysta z pakietu cgcsdk
i tych importów:
from cgc.sdk import Image
from cgc.sdk.recipes.rtdetr import RTDetrConfig, RTDetrWorkflow
Pełny skrypt rtdetr_inference.py znajdziesz na stronie
Przykłady workflow.
Ten przykład korzysta z gotowych wag RT-DETR. Jeśli chcesz trenować model na własnych danych, zacznij od rozdziału Zbiory danych.
reuse_existing=True nie aktualizuje modelu, obrazu ani środowiska istniejącego
zasobu. Po zakończeniu przykładu usługa nadal działa, dopóki jej nie usuniesz.