Cursor Madrid
Hackathon 3

LibreYOLOトラック

Cursor
×
LibreYOLO
LibreYOLO

ハッカーのみなさん、ようこそ。LibreYOLOとは何かを読み、セットアップチュートリアルに沿って進み、サンプルをコピーして作り始めてください。

LibreYOLOとは

LibreYOLOは、最先端の物体検出を学習・デプロイするための、モダンで100% MITライセンスのエンジンです。YOLOを作者たちが常に意図していたとおり、再び誰もが利用できるようにするために存在します。

parkour_result.jpg
LibreYOLOの検出結果
✓ 物体を1個検出しました(人)0.023s

セットアップチュートリアル

下のプロンプトをCursorに貼り付けてください。エージェントがLibreYOLOをソースからインストールし、その動作を検証する手順を案内します。Windows、macOS、Linuxで動作します。

セットアッププロンプト
# Install LibreYOLO (Cursor Hackathon, LibreYOLO Track)
#
# Your job: get LibreYOLO installed from source on the user's machine and
# verify it imports. The user is on Windows, macOS, or Linux. Adapt the
# venv activation line to match. Everything else is identical across OSes.
#
# Prereqs the user must already have:
#   - Python 3.10 or newer  (check: python --version  or  python3 --version)
#   - git
# If either is missing, stop and tell the user. Do not silently install.
#
# If LibreYOLO is already installed and importable in the current environment,
# skip the install steps and jump straight to VERIFY.

# 1. Clone the dev branch (we will move to main later)
git clone -b dev https://github.com/LibreYOLO/libreyolo.git
cd libreyolo

# 2. Create a virtual environment (stdlib only, no extra tools required)
python -m venv .venv

# 3. Activate it
# macOS / Linux:
source .venv/bin/activate
# Windows PowerShell (run instead of the line above):
# .venv\Scripts\Activate.ps1
# Windows cmd.exe:
# .venv\Scripts\activate.bat

# 4. Upgrade pip (avoids resolver bugs on older Python installs)
python -m pip install --upgrade pip

# 5. Install LibreYOLO in editable mode
pip install -e .

# 6. VERIFY (should print: LibreYOLO ready)
python -c "from libreyolo import LibreYOLO; print('LibreYOLO ready')"

# OPTIONAL: smoke test on a real image (downloads small weights on first run)
python -c "from libreyolo import LibreYOLO; m = LibreYOLO('LibreYOLO9t.pt'); r = m('https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg'); print(len(r), 'detections')"

# === FAST PATH (only if the user already has `uv` installed) ===============
# Replaces steps 2-5 with a much faster resolver. Skip if uv is not present.
# Do NOT install uv just for this; pip is already fine.
#   uv venv
#   source .venv/bin/activate           # or .venv\Scripts\Activate.ps1 on Windows
#   uv pip install -e .

# === GPU NOTES =============================================================
# Step 5 installs the default PyTorch wheel from PyPI:
#   - Linux:   CUDA 12.x build (works with NVIDIA GPU out of the box)
#   - macOS:   CPU + MPS (Apple Silicon GPU works automatically)
#   - Windows: CPU only by default
# Windows + NVIDIA GPU: install a CUDA torch wheel BEFORE step 5:
#   pip install --index-url https://download.pytorch.org/whl/cu121 torch torchvision
# Hackathon-safe default: the CPU build is fine for small images and YOLO9t.

# === OPTIONAL EXTRAS (install only if your project needs them) =============
# pip install -e ".[onnx]"        # ONNX export + ONNX Runtime inference
# pip install -e ".[rfdetr]"      # RF-DETR transformer flagship
# pip install -e ".[tensorrt]"    # NVIDIA TensorRT (Linux/Windows + CUDA)
# pip install -e ".[openvino]"    # Intel CPU/GPU/VPU acceleration
# pip install -e ".[ncnn]"        # Lightweight CPU/Vulkan deployment

# === IF THINGS BREAK =======================================================
# Windows: "running scripts is disabled on this system" when activating venv:
#   Set-ExecutionPolicy -Scope CurrentUser RemoteSigned   (run once, then retry)
# macOS / Linux: "python: command not found":
#   use  python3 -m venv .venv  instead, and  python3 -m pip ... for step 4
# torch wheel mismatch / ImportError:
#   find the right wheel at https://pytorch.org/get-started/locally/
# Anything else: ask the user to paste the full error, then debug.

ボックス内の任意の場所をクリックしてすべて選択するか、コピーボタンを使ってください。

例1:物体検出

軽量なフラッグシップYOLO9tを使う、最小限のエンドツーエンド検出サンプルです。LibreYOLOをインストールしたら、これをPythonファイルまたはノートブックに貼り付け、すべてが動作することを確認し、Resultsオブジェクトの構造を見てください。

detect.py
from libreyolo import LibreYOLO, SAMPLE_IMAGE

# One factory, any architecture. Auto-detects family, size, and classes.
model = LibreYOLO("LibreYOLO9t.pt")

# Accepts file paths, URLs, PIL, NumPy, tensors, or raw bytes.
result = model(SAMPLE_IMAGE, save=True)

print(result.boxes.xyxy)        # (N, 4) tensor of bounding boxes
print(result.boxes.conf)        # (N,) confidence scores
print(result.names[int(result.boxes.cls[0].item())])  # first class name
print(result.saved_path)        # where the annotated image was saved

ボックス内の任意の場所をクリックしてすべて選択するか、コピーボタンを使ってください。

例2:RF-DETRによるセグメンテーション

トランスフォーマーのフラッグシップRF-DETRを使ったインスタンスセグメンテーションです。-segサフィックスはセグメンテーションヘッドを読み込むようファクトリに指示するため、同じ呼び出しからバウンディングボックスとインスタンスごとのバイナリマスクを取得できます。

RF-DETR追加機能をインストール
# Required once for RF-DETR examples
pip install -e ".[rfdetr]"

ボックス内の任意の場所をクリックしてすべて選択するか、コピーボタンを使ってください。

segment.py
from libreyolo import LibreYOLO, SAMPLE_IMAGE

# RF-DETR is the transformer flagship. The "-seg" suffix tells the factory
# to load the segmentation head. Same call shape as detection.
model = LibreYOLO("LibreRFDETRs-seg.pt")

# save=True draws boxes plus translucent mask overlays on top of the image.
result = model(SAMPLE_IMAGE, save=True)

# Boxes still work the same as in detection
print(result.boxes.xyxy)            # (N, 4) bounding boxes
print(result.boxes.cls)             # (N,) class IDs

# Masks are the new bit
print(result.masks.data.shape)      # (N, H, W) binary masks at image resolution
print(result.masks.xy[0].shape)     # polygon contour for the first instance
print(result.saved_path)            # annotated output path

ボックス内の任意の場所をクリックしてすべて選択するか、コピーボタンを使ってください。

例3:人物キーポイント

YOLO-NAS poseを使った人物の姿勢推定です。-poseサフィックスがキーポイントヘッドを読み込み、検出した人物ごとに人物ボックスと17個のCOCOキーポイントを返します。

keypoints.py
from libreyolo import LibreYOLO, SAMPLE_IMAGE

# YOLO-NAS pose predicts one person box plus 17 COCO keypoints per person.
model = LibreYOLO("LibreYOLONASs-pose.pt")
result = model(SAMPLE_IMAGE, save=True)

print(result.boxes.xyxy)             # (N, 4) person boxes
print(result.keypoints.xy.shape)     # (N, 17, 2) pixel coordinates
print(result.keypoints.conf.shape)   # (N, 17) keypoint confidence
if len(result):
    print(result.keypoints.xy[0, 0])  # first person's nose keypoint
print(result.saved_path)             # annotated output path

ボックス内の任意の場所をクリックしてすべて選択するか、コピーボタンを使ってください。

例4:動画推論

動画に対して同じLibreYOLO呼び出しを実行します。モデルの行を1つ入れ替えれば、検出、セグメンテーション、キーポイントを切り替えられますが、RF-DETRのセグメンテーションには引き続き例2のrfdetr追加機能が必要です。

video.py
from libreyolo import LibreYOLO

# Pick one model:
model = LibreYOLO("LibreYOLO9t.pt")          # detection
# model = LibreYOLO("LibreRFDETRs-seg.pt")   # segmentation
# model = LibreYOLO("LibreYOLONASs-pose.pt") # keypoints

for frame in model("clip.mp4", stream=True, save=True):
    print(frame.frame_idx, len(frame))

ボックス内の任意の場所をクリックしてすべて選択するか、コピーボタンを使ってください。

例5:物体追跡

ByteTrackは動画フレーム間で安定したIDを付与します。検出から人数計数、スポーツ映像、交通分析、同じ物体がまだ画面内にあるかを把握する必要があるあらゆる用途へ進む最短経路です。

追跡追加機能をインストール
pip install libreyolo[tracking]

ボックス内の任意の場所をクリックしてすべて選択するか、コピーボタンを使ってください。

track.py
from libreyolo import LibreYOLO

model = LibreYOLO("LibreYOLO9t.pt")

for result in model.track(
    "clip.mp4",
    track_conf=0.25,
    iou=0.45,
    save=True,      # writes runs/track/<video_stem>.mp4 by default
    vid_stride=1,
):
    print(result.frame_idx, result.track_id)

ボックス内の任意の場所をクリックしてすべて選択するか、コピーボタンを使ってください。