YOLOv8'i STM32N6'da Çalıştırmak: Kaybolmadan Bir Yerden Başlamak
Hazır bir modeli embedded bir cihazda çalıştırmanın adım adım rehberi.
YOLOv8'i STM32N6'da Çalıştırmak: Kaybolmadan Bir Yerden Başlamak
Hazır bir modeli embedded bir cihazda çalıştırmanın adım adım rehberi.

Embedded-AI üzerine çalışmaya başladığımda vaktimin büyük kısmı kod yazmakla değil, nereden başlayacağımı bulmaya çalışmakla geçiyordu. Bir şeyi denemek istiyorsunuz, elinizde model var, donanım var. Ama hangi dökümana bakacaksınız, hangi adımı atlıyorsunuz, neden bu hata çıkıyor… Bunları çözmek bazen asıl işten daha fazla zaman alıyor.
Kaynaklar yok değil. ST’nin kendi dökümantasyonları oldukça kapsamlı. Ama kapsamlı olmak her zaman anlaşılır olmak anlamına gelmiyor. Özellikle embedded tarafına yeni geliyorsanız, nereden tutacağınızı bulmak gerçekten yorucu gelebilir.
Bu yüzden basit bir şey yapmak istedim. Hazır bir YOLOv8 modelini alıp STM32N6'da çalıştırmanın adımlarını, mümkün olduğunca sade bir şekilde bir araya getirdim. Başkalarının daha az kaybolarak ilerleyebilmesine destek olmak umuduyla 🙂
STM32N6 nedir, neden bu kart?
STM32N6, STMicroelectronics’in en yeni mikrodenetleyicilerinden biri. Embedded AI çalışmalarında klasik MCU’lardan farkını belirleyen şey içinde bir NPU bulunması.
Bu NPU, ST’nin kendi geliştirdiği Neural-ART Accelerator. 1 GHz’de çalışıyor ve 600 GOPS’a kadar işlem gücü sunuyor. Yani sinir ağı hesaplamalarını CPU’ya yüklemek yerine, bu iş için özel tasarlanmış bir donanıma devrediyorsunuz. Sonuç: daha az enerji tüketimi, gerçek zamanlı inference.
Bunun yanında kamera entegrasyonu için MIPI CSI-2 arayüzü ve görüntü işleme birimi (ISP) doğrudan çipte mevcut. Bilgisayarlı görü uygulamaları için bunu ayrıca halletmeniz gerekmiyor. 4.2 MB gömülü RAM, sinir ağları için yeterli bir başlangıç noktası. Harici bellek desteğiyle de genişletilebiliyor.
( Quantization’ın bu denklemdeki rolü için: https://medium.com/t%C3%BCrkiye/quantization-ger%C3%A7ekten-ne-kazand%C4%B1r%C4%B1r-7c4aeecbe0db )
Başlamadan önce ne lazım?
Projeye buradan ulaşabilirsiniz: *https://github.com/IlaydaIoglu/stm32ai-n6-yolov8-objectdetection*
Adım adım kurulum ve donanım gereksinimleri README’de mevcut.
Embedded AI’ın eşiği yüksek görünebilir. Ama çoğu zaman sorun teknik değil — doğru başlangıç noktasını bulmak. Umarım bu biraz kolaylaştırır.
Donanım tarafında:
- STM32N6570-DK geliştirme kartı
- Kamera modülü (DK ile MB1854 geliyor)
- USB-C to USB-C kablo — USB-A yeterli güç sağlamayabiliyor, buna dikkat
Yazılım tarafında:
- Python 3.11+
- STM32CubeIDE
- ST Edge AI
Kurulum
Önce sanal ortamı kurun:
python3.11 -m venv .venv
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
Sonra bağımlılıkları yükleyin:
pip install --upgrade pip
pip install -r requirements.txt
Adımlara geçmeden önce bir not → Projede tüm adımları tek komutla çalıştıran bir pipeline.py da mevcut. Ama adımları tek tek geçmenizi tavsiye ederim. Özellikle deploy aşaması kartın fiziksel olarak bağlı ve hazır olmasını gerektiriyor. Pipeline bu durumu kontrol etmiyor, bir şeyler ters giderse nerede takıldığınızı anlamak zorlaşabilir. Adımları sırayla anlayarak ilerlerseniz, bir sorunla karşılaştığınızda nereye bakacağınızı bilirsiniz.
Adım 1 — Model Export
YOLOv8, nesne tespiti için yaygın kullanılan modellerden biri. Gerçek zamanlı çalışacak şekilde tasarlanmış ve farklı boyutlarda geliyor: nano, small, medium… Biz burada en hafif versiyonu olan yolov8n ile ilerliyoruz. Embedded bir cihazda çalıştıracağımız için bu tercih mantıklı bir başlangıç noktası.
Model eğitilmiş haliyle PyTorch formatında geliyor (.pt). Ama STM32N6 PyTorch’u doğrudan çalıştıramıyor. Bu yüzden önce modeli TFLite formatına dönüştürmemiz gerekiyor. Aynı zamanda INT8 quantization da bu adımda başlıyor; model boyutu küçülüyor, embedded donanımın işleyebileceği bir formata geliyor.
imgsz=256 parametresi görüntü boyutunu belirliyor. STM32N6 için 256x256 makul bir başlangıç noktası; daha yüksek çözünürlük daha fazla hesaplama demek.
yolo export model=yolov8n.pt format=tflite imgsz=256 int8=True
Adım 2 — INT8 Quantization
Export adımında INT8 formatına geçiş başlamıştı. Bu adımda o süreci tamamlıyoruz.
Quantization’da model ağırlıkları daha düşük hassasiyetli bir formata dönüştürülüyor. Ama bu dönüşümün sağlıklı olması için modelin “neyle karşılaşacağını” önceden görmesi gerekiyor. İşte kalibrasyon veri seti burada devreye giriyor. Model bu veriler üzerinde çalışarak hangi değerlerin önemli olduğunu anlıyor, hassasiyet kaybını minimize etmeye çalışıyor. Kullandığınız kalibrasyon verisi ne kadar temsil ediciyse sonuç o kadar iyi oluyor.
cd yolov8_quantization
python tflite_quant.py --config-name user_config_quant.yaml
Çalıştırmadan önce user_config_quant.yamldosyasını düzenlemeniz gerekiyor. Birkaç kritik alan var:
model: name: yolov8n_256
model_path: ../yolov8n_saved_model
input_shape: [256, 256, 3]
quantization: calib_dataset_path: ../datasets/coco8/images/val
export_path: ./quantized_models`
model_path export adımında oluşan modelin yolu. calib_dataset_path kalibrasyon için kullanacağınız görüntülerin bulunduğu klasör. Bu iki alanı kendi kurulumunuza göre güncellemeniz yeterli.
Adım 3 — Deploy
Bu adım diğerlerinden biraz farklı. Artık sadece yazılım tarafında değil, fiziksel donanımla da çalışıyorsunuz. Başlamadan önce kartın bilgisayara bağlı ve hazır olduğundan emin olun.
cd ../object_detection
python stm32ai_main.py --config-path ./config_file_examples/ --config-name deployment_n6_yolov8_config.yaml
Bu komut modeli karta yüklemek için gerekli dosyaları hazırlıyor. Tamamlandıktan sonra STM32CubeIDE devreye giriyor.
STM32CubeIDE’de STM32N6/ klasörünü açın ve projeyi build edin. Build başarılı olduktan sonra binary'yi karta yükleyin. Son olarak kartı Boot from Flash moduna alıp yeniden başlatın. Bu noktada kamera devreye girmeli ve model gerçek zamanlı çalışmaya başlamalı.
Ben de bu süreci ilk kez geçerken gömülü sistemler konusunda deneyimli biri değildim. Bir yerde takılırsanız README’deki HARDWARE_GUIDE kısmına bakmanızı öneririm, donanım kurulumu ve boot modu detayları orada mevcut.

Buradan nereye?
Bu yazıda hazır bir YOLOv8 modelini alıp STM32N6 üzerinde çalıştırmanın adımlarını geçtik. PyTorch modelini TFLite formatına dönüştürmekten INT8 quantization’a, oradan karta deploy etmeye kadar. Her adımın neden gerekli olduğunu anlamak, bir sonrakinde ne yapacağınızı da netleştiriyor. Embedded AI tarafı ilk bakışta karmaşık görünebilir, özellikle bu alana yeni geliyorsanız. Ama sürecin mantığını bir kez kavradıktan sonra tekrar edilebilir bir şey haline geliyor. Bir sonraki adım kendi verinizle model eğitmek ve aynı pipeline’dan geçirmek. O süreci de anlatmayı planlıyorum, tabi vakit buldukça..
Github Link : https://github.com/IlaydaIoglu/stm32ai-n6-yolov8-objectdetection
Bu projenin donanım kısmında Enis’in yardımı olmasaydı çok daha fazla kaybolurdum, çok teşekkürler…
메타데이터
- post_id
- 1f0d2e3d44b9
- slug
- yolov8i-stm32n6-da-çalıştırmak-kaybolmadan-bir-yerden-başlamak-1f0d2e3d44b9
- url
- https://medium.com/t%C3%BCrkiye/yolov8i-stm32n6-da-%C3%A7al%C4%B1%C5%9Ft%C4%B1rmak-kaybolmadan-bir-yerden-ba%C5%9Flamak-1f0d2e3d44b9
- canonical_url
- https://medium.com/t%C3%BCrkiye/yolov8i-stm32n6-da-%C3%A7al%C4%B1%C5%9Ft%C4%B1rmak-kaybolmadan-bir-yerden-ba%C5%9Flamak-1f0d2e3d44b9
- author_url
- https://medium.com/@i.ilaydaioglu
- status
- ok
- fetched_at
- 2026-07-14 19:34:30