From 80ba92afab3b4ec167e95ec7b1d4a668ba7d3832 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 6 Aug 2025 20:14:16 +0200 Subject: [PATCH 1/7] Remove `cd` from push.yml Signed-off-by: Glenn Jocher --- .github/workflows/push.yml | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index b995253..ff18a39 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -48,17 +48,11 @@ jobs: ls -la yolo11n/ - name: Build model image - run: | - cd yolo11n - cog build + run: cog build yolo11n - name: Test model - run: | - cd yolo11n - cog predict -i image=@../assets/bus.jpg -i conf=0.25 -i iou=0.45 + run: cog predict yolo11n -i image=@assets/bus.jpg -i conf=0.25 -i iou=0.45 - name: Push to Replicate if: github.ref == 'refs/heads/main' - run: | - cd yolo11n - cog push + run: cog push yolo11n From 1549f6e2b76548baccf10b41408bc4729b035be3 Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Wed, 6 Aug 2025 18:14:54 +0000 Subject: [PATCH 2/7] Auto-format by https://ultralytics.com/actions --- yolo11n/predict.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/yolo11n/predict.py b/yolo11n/predict.py index 4d80c42..3f23445 100644 --- a/yolo11n/predict.py +++ b/yolo11n/predict.py @@ -1,9 +1,9 @@ # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license -import json from typing import Optional + +from cog import BaseModel, BasePredictor, Input, Path from ultralytics import YOLO -from cog import BasePredictor, Input, Path, BaseModel class Output(BaseModel): @@ -32,9 +32,6 @@ def predict( result.save(image_path) if return_json: - return Output( - image=Path(image_path), - json_str=result.to_json() - ) + return Output(image=Path(image_path), json_str=result.to_json()) else: return Output(image=Path(image_path)) From 3278d51bbc8a11990b40ff8c67c0e54c9c3b49e2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 6 Aug 2025 20:25:56 +0200 Subject: [PATCH 3/7] Update push.yml Signed-off-by: Glenn Jocher --- .github/workflows/push.yml | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index ff18a39..f1fba58 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -13,46 +13,33 @@ jobs: build_test_push: name: Build, Test & Push Model runs-on: ubuntu-latest + strategy: + matrix: + model: [yolo11n] steps: - #- name: Cleanup disk space - # uses: ultralytics/actions/cleanup-disk@main - - name: Checkout uses: actions/checkout@v4 - - name: Setup Python uses: actions/setup-python@v5 with: python-version: 3.12 - - name: Setup uv uses: astral-sh/setup-uv@v6 - - name: Install dependencies run: uv pip install --system ultralytics --extra-index-url https://download.pytorch.org/whl/cpu - - name: Setup Cog uses: replicate/setup-cog@v2 with: token: ${{ secrets.REPLICATE_API_TOKEN }} - - name: Download YOLO11n weights - run: | - python << 'EOF' - from ultralytics import YOLO - model = YOLO('yolo11n.pt') - EOF - ls -la yolo11n* - mv yolo11n.pt yolo11n/ - echo "Files in yolo11n directory:" - ls -la yolo11n/ - + run: python ${{ matrix.model }}/download.py - name: Build model image - run: cog build yolo11n - + working-directory: ${{ matrix.model }} + run: cog build - name: Test model - run: cog predict yolo11n -i image=@assets/bus.jpg -i conf=0.25 -i iou=0.45 - + working-directory: ${{ matrix.model }} + run: cog predict -i image=@../assets/bus.jpg -i conf=0.25 -i iou=0.45 - name: Push to Replicate if: github.ref == 'refs/heads/main' - run: cog push yolo11n + working-directory: ${{ matrix.model }} + run: cog push From 1a6e2a393f7a57cb1484ba94f73da2de4812823a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 6 Aug 2025 20:27:12 +0200 Subject: [PATCH 4/7] Create download.py Signed-off-by: Glenn Jocher --- yolo11n/download.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 yolo11n/download.py diff --git a/yolo11n/download.py b/yolo11n/download.py new file mode 100644 index 0000000..8d251cd --- /dev/null +++ b/yolo11n/download.py @@ -0,0 +1,14 @@ +from pathlib import Path +from ultralytics import YOLO + +def main(): + """Download YOLO11n weights and move to model directory.""" + model = YOLO(Path(__file__).parent / 'yolo11n.pt') + + # List files in model directory + print(f"Files in {current_dir.name} directory:") + for file in sorted(current_dir.iterdir()): + print(f" {file.stat().st_size:>10} {file.name}") + +if __name__ == '__main__': + main() From 994a6201c343afda712e76a5d8236e485feb919c Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Wed, 6 Aug 2025 18:27:29 +0000 Subject: [PATCH 5/7] Auto-format by https://ultralytics.com/actions --- yolo11n/download.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/yolo11n/download.py b/yolo11n/download.py index 8d251cd..f5d9192 100644 --- a/yolo11n/download.py +++ b/yolo11n/download.py @@ -1,14 +1,19 @@ +# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license + from pathlib import Path + from ultralytics import YOLO + def main(): """Download YOLO11n weights and move to model directory.""" - model = YOLO(Path(__file__).parent / 'yolo11n.pt') - + YOLO(Path(__file__).parent / "yolo11n.pt") + # List files in model directory print(f"Files in {current_dir.name} directory:") for file in sorted(current_dir.iterdir()): print(f" {file.stat().st_size:>10} {file.name}") -if __name__ == '__main__': + +if __name__ == "__main__": main() From b5ad0eb029ec95ec868d9c41d1e85bbb5b281365 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 6 Aug 2025 20:29:40 +0200 Subject: [PATCH 6/7] Update download.py Signed-off-by: Glenn Jocher --- yolo11n/download.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/yolo11n/download.py b/yolo11n/download.py index f5d9192..8940470 100644 --- a/yolo11n/download.py +++ b/yolo11n/download.py @@ -7,7 +7,8 @@ def main(): """Download YOLO11n weights and move to model directory.""" - YOLO(Path(__file__).parent / "yolo11n.pt") + current_dir = Path(__file__).parent + YOLO(current_dir / "yolo11n.pt") # List files in model directory print(f"Files in {current_dir.name} directory:") From bcb79b10ed3fd7af2103100a25d29f1e78b25df4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 6 Aug 2025 20:37:28 +0200 Subject: [PATCH 7/7] Remove extra packages that are already ultralytics deps Signed-off-by: Glenn Jocher --- yolo11n/cog.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/yolo11n/cog.yaml b/yolo11n/cog.yaml index 3889754..8b5fd54 100644 --- a/yolo11n/cog.yaml +++ b/yolo11n/cog.yaml @@ -9,11 +9,6 @@ build: - "ffmpeg" python_packages: - "ultralytics>=8.3.0" - - "torch==2.3.1" - - "torchvision" - - "numpy>=1.24.0" - - "opencv-python" - - "pillow" predict: predict.py:Predictor image: r8.im/ultralytics/yolo11n