Ultralytics HUB ์ถ๋ก API
๋ชจ๋ธ์ ํ์ตํ ํ์๋ ๊ณต์ ์ถ๋ก API๋ฅผ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. Pro ์ฌ์ฉ์์ ๊ฒฝ์ฐ, ์ ์ฉ ์ถ๋ก API์ ์ก์ธ์คํ ์ ์์ต๋๋ค. Ultralytics HUB ์ถ๋ก API๋ฅผ ์ฌ์ฉํ๋ฉด Ultralytics YOLO ํ๊ฒฝ์ ๋ก์ปฌ์ ์ค์น ๋ฐ ์ค์ ํ ํ์ ์์ด REST API๋ฅผ ํตํด ์ถ๋ก ์ ์คํํ ์ ์์ต๋๋ค.
Watch: Ultralytics HUB ์ถ๋ก API ์ฐ์ต
์ ์ฉ ์ถ๋ก API
๋์ ์์์ ํญ๋์ ๊ด์ฌ์ ๋ถ์ํ์ฌ, ํ๋ก ์ฌ์ฉ์๋ฅผ ์ํ ์ ์ฉ ํ๊ฒฝ์์ ํด๋ฆญ ํ ๋ฒ์ผ๋ก ๋ฐฐํฌํ ์ ์๋ Ultralytics HUB ์ ์ฉ ์ถ๋ก API๋ฅผ ๊ณต๊ฐํ๊ฒ ๋์ด ๋งค์ฐ ๊ธฐ์๊ฒ ์๊ฐํฉ๋๋ค!
์ฐธ๊ณ
ํ๋ก ์๊ธ์ ์ ์ผ๋ถ๋ก ๊ณต๊ฐ ๋ฒ ํ ๋ฒ์ ์์ ์ด ๊ธฐ๋ฅ์ ๋ฌด๋ฃ๋ก ์ ๊ณตํ๊ฒ ๋์ด ๊ธฐ์๊ฒ ์๊ฐํ๋ฉฐ, ํฅํ ์ ๋ฃํํ ์์ ์ ๋๋ค.
- ๊ธ๋ก๋ฒ ์๋น์ค ๋ฒ์: ์ ์ธ๊ณ 38๊ฐ ์ง์ญ์ ๋ฐฐํฌ๋์ด ์ด๋ ์์น์์๋ ์ง์ฐ ์๊ฐ์ด ์งง์ ์ก์ธ์ค๋ฅผ ๋ณด์ฅํฉ๋๋ค. Google ํด๋ผ์ฐ๋ ๋ฆฌ์ ์ ์ฒด ๋ชฉ๋ก ๋ณด๊ธฐ.
- Google ํด๋ผ์ฐ๋ ๋ฐ ์ง์: ๋ฌดํํ ํ์ฅ์ฑ๊ณผ ๋์ ์์ ์ฑ์ ์ธํ๋ผ๋ฅผ ์ ๊ณตํ๋ Google Cloud Run์ ์ง์์ ๋ฐ์ต๋๋ค.
- ๋น ๋ฅธ ์๋: Ultralytics ํ ์คํธ ๊ฒฐ๊ณผ, ์ธ๊ทผ ์ง์ญ์์ 640 ํด์๋๋ก YOLOv8n ์ถ๋ก ์ 100ms ๋ฏธ๋ง์ ์ง์ฐ ์๊ฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๊ฐํ๋ ๋ณด์: ๊ฐ๋ ฅํ ๋ณด์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๊ณ ์ ๊ณ ํ์ค์ ์ค์ํ ์ ์๋๋ก ํฉ๋๋ค. Google ํด๋ผ์ฐ๋ ๋ณด์์ ๋ํด ์์ธํ ์์๋ณด์ธ์.
Ultralytics HUB ์ ์ฉ ์ถ๋ก API๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์๋ํฌ์ธํธ ์์ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์๋ ๊ฐ์ด๋์ ์ค๋ช ๋ ๋๋ก ๊ณ ์ ํ ์๋ํฌ์ธํธ URL์ ์ฌ์ฉํฉ๋๋ค.
ํ
์ค๋ช ์์ ์ค๋ช ๋ ๋๋ก ์ต์์ ์ฑ๋ฅ์ ์ํด ์ง์ฐ ์๊ฐ์ด ๊ฐ์ฅ ์งง์ ์ง์ญ์ ์ ํํ์ธ์.
์ ์ฉ ์๋ํฌ์ธํธ๋ฅผ ์ข ๋ฃํ๋ ค๋ฉด ์๋ํฌ์ธํธ ์ค์ง ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
๊ณต์ ์ถ๋ก API
Ultralytics HUB ๊ณต์ ์ถ๋ก API๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์๋ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ธ์.
๋ฌด๋ฃ ์ฌ์ฉ์์๊ฒ๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ์ฉ ์ ํ์ด ์์ต๋๋ค:
- ์๊ฐ๋น 100 ํตํ
- ์ 1,000 ํตํ
ํ๋ก ์ฌ์ฉ์์๊ฒ๋ ๋ค์๊ณผ ๊ฐ์ ์ฌ์ฉ ์ ํ์ด ์์ต๋๋ค:
- ์๊ฐ๋น 1,000 ํตํ
- ์ 10000 ํตํ
Python
Python ์ ์ฌ์ฉํ์ฌ Ultralytics HUB ์ถ๋ก API์ ์ก์ธ์คํ๋ ค๋ฉด ๋ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค:
import requests
# API URL
url = "https://predict.ultralytics.com"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"file": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
์ฐธ๊ณ
๊ต์ฒด MODEL_ID
๋ฅผ ์ํ๋ ๋ชจ๋ธ ID์ ํจ๊ป ์
๋ ฅํฉ๋๋ค, API_KEY
์ค์ API ํค์ path/to/image.jpg
๋ฅผ ์ถ๋ก ์ ์คํํ๋ ค๋ ์ด๋ฏธ์ง์ ๊ฒฝ๋ก์ ํจ๊ป ์
๋ ฅํฉ๋๋ค.
์ฌ์ฉ ์ค์ธ ๊ฒฝ์ฐ ์ ์ฉ ์ถ๋ก API์์ url
๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค.
cURL
cURL์ ์ฌ์ฉํ์ฌ Ultralytics HUB ์ถ๋ก API์ ์ก์ธ์คํ๋ ค๋ฉด ๋ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค:
curl -X POST "https://predict.ultralytics.com" \
-H "x-api-key: API_KEY" \
-F "model=https://hub.ultralytics.com/models/MODEL_ID" \
-F "file=@/path/to/image.jpg" \
-F "imgsz=640" \
-F "conf=0.25" \
-F "iou=0.45"
์ฐธ๊ณ
๊ต์ฒด MODEL_ID
๋ฅผ ์ํ๋ ๋ชจ๋ธ ID์ ํจ๊ป ์
๋ ฅํฉ๋๋ค, API_KEY
์ค์ API ํค์ path/to/image.jpg
๋ฅผ ์ถ๋ก ์ ์คํํ๋ ค๋ ์ด๋ฏธ์ง์ ๊ฒฝ๋ก์ ํจ๊ป ์
๋ ฅํฉ๋๋ค.
์ฌ์ฉ ์ค์ธ ๊ฒฝ์ฐ ์ ์ฉ ์ถ๋ก API์์ url
๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค.
์ธ์
์ฌ์ฉ ๊ฐ๋ฅํ ์ถ๋ก ์ธ์์ ์ ์ฒด ๋ชฉ๋ก์ ์๋ ํ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ธ์ | ๊ธฐ๋ณธ๊ฐ | ์ ํ | ์ค๋ช |
---|---|---|---|
file |
file |
์ถ๋ก ์ ์ฌ์ฉํ ์ด๋ฏธ์ง ๋๋ ๋์์ ํ์ผ์ ๋๋ค. | |
imgsz |
640 |
int |
์
๋ ฅ ์ด๋ฏธ์ง์ ํฌ๊ธฐ, ์ ํจํ ๋ฒ์๋ 32 - 1280 ํฝ์
. |
conf |
0.25 |
float |
์์ธก์ ๋ํ ์ ๋ขฐ๋ ์๊ณ๊ฐ, ์ ํจ ๋ฒ์ 0.01 - 1.0 . |
iou |
0.45 |
float |
์ ๋์จ ์์ ๊ต์ฐจ๋ก (IoU) ์๊ณ๊ฐ, ์ ํจ ๋ฒ์ 0.0 - 0.95 . |
์๋ต
Ultralytics HUB ์ถ๋ก API๋ JSON ์๋ต์ ๋ฐํํฉ๋๋ค.
๋ถ๋ฅ
๋ถ๋ฅ ๋ชจ๋ธ
import requests
# API URL
url = "https://predict.ultralytics.com"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"file": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
ํ์ง
ํ์ง ๋ชจ๋ธ
import requests
# API URL
url = "https://predict.ultralytics.com"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"file": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
OBB
OBB ๋ชจ๋ธ
import requests
# API URL
url = "https://predict.ultralytics.com"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"file": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
{
"images": [
{
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {
"x1": 374.85565,
"x2": 392.31824,
"x3": 412.81805,
"x4": 395.35547,
"y1": 264.40704,
"y2": 267.45728,
"y3": 150.0966,
"y4": 147.04634
}
}
],
"shape": [
750,
600
],
"speed": {
"inference": 200.8,
"postprocess": 0.8,
"preprocess": 2.8
}
}
],
"metadata": ...
}
์ธ๋ถํ
์ธ๋ถํ ๋ชจ๋ธ
import requests
# API URL
url = "https://predict.ultralytics.com"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"file": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
{
"images": [
{
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {
"x1": 118,
"x2": 416,
"y1": 112,
"y2": 660
},
"segments": {
"x": [
266.015625,
266.015625,
258.984375,
...
],
"y": [
110.15625,
113.67188262939453,
120.70311737060547,
...
]
}
}
],
"shape": [
750,
600
],
"speed": {
"inference": 200.8,
"postprocess": 0.8,
"preprocess": 2.8
}
}
],
"metadata": ...
}
ํฌ์ฆ
ํฌ์ฆ ๋ชจ๋ธ
import requests
# API URL
url = "https://predict.ultralytics.com"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"file": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
{
"images": [
{
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {
"x1": 118,
"x2": 416,
"y1": 112,
"y2": 660
},
"keypoints": {
"visible": [
0.9909399747848511,
0.8162999749183655,
0.9872099757194519,
...
],
"x": [
316.3871765136719,
315.9374694824219,
304.878173828125,
...
],
"y": [
156.4207763671875,
148.05775451660156,
144.93240356445312,
...
]
}
}
],
"shape": [
750,
600
],
"speed": {
"inference": 200.8,
"postprocess": 0.8,
"preprocess": 2.8
}
}
],
"metadata": ...
}