Hızlı Başlangıç Kılavuzu: Raspberry Pi ile Ultralytics YOLOv8
Bu kapsamlı kılavuz, Raspberry Pi cihazlarına Ultralytics YOLOv8 adresini dağıtmak için ayrıntılı bir yol göstermektedir. Ayrıca, bu küçük ve güçlü cihazlarda YOLOv8 'un yeteneklerini göstermek için performans kıyaslamalarını sergilemektedir.
İzle: Raspberry Pi 5 güncellemeleri ve iyileştirmeleri.
Not
Bu kılavuz, en son Raspberry Pi OS Bookworm (Debian 12) çalıştıran Raspberry Pi 4 ve Raspberry Pi 5 ile test edilmiştir. Bu kılavuzun Raspberry Pi 3 gibi daha eski Raspberry Pi cihazları için kullanılmasının, aynı Raspberry Pi OS Bookworm yüklü olduğu sürece çalışması beklenir.
Raspberry Pi nedir?
Raspberry Pi küçük, uygun fiyatlı, tek kartlı bir bilgisayardır. Hobi amaçlı ev otomasyonundan endüstriyel kullanımlara kadar çok çeşitli proje ve uygulamalar için popüler hale gelmiştir. Raspberry Pi kartları çeşitli işletim sistemlerini çalıştırabilir ve sensörler, aktüatörler ve diğer donanım bileşenleri ile kolay entegrasyon sağlayan GPIO (Genel Amaçlı Giriş/Çıkış) pinleri sunar. Farklı özelliklere sahip farklı modellerde gelirler, ancak hepsi düşük maliyetli, kompakt ve çok yönlü olma konusunda aynı temel tasarım felsefesini paylaşırlar.
Raspberry Pi Serisi Karşılaştırması
Raspberry Pi 3 | Raspberry Pi 4 | Raspberry Pi 5 | |
---|---|---|---|
CPU | Broadcom BCM2837, Cortex-A53 64Bit SoC | Broadcom BCM2711, Cortex-A72 64Bit SoC | Broadcom BCM2712, Cortex-A76 64Bit SoC |
CPU Maksimum Frekans | 1.4GHz | 1.8GHz | 2.4GHz |
GPU | Videocore IV | Videocore VI | VideoCore VII |
GPU Maksimum Frekans | 400Mhz | 500Mhz | 800Mhz |
Hafıza | 1GB LPDDR2 SDRAM | 1GB, 2GB, 4GB, 8GB LPDDR4-3200 SDRAM | 4GB, 8GB LPDDR4X-4267 SDRAM |
PCIe | N/A | N/A | 1xPCIe 2.0 Arayüz |
Maksimum Güç Çekimi | 2,5A@5V | 3A@5V | 5A@5V (PD etkin) |
Raspberry Pi OS nedir?
Raspberry Pi OS (eski adıyla Raspbian), Raspberry Pi Vakfı tarafından dağıtılan Raspberry Pi kompakt tek kartlı bilgisayar ailesi için Debian GNU/Linux dağıtımını temel alan Unix benzeri bir işletim sistemidir. Raspberry Pi OS, ARM CPU'lu Raspberry Pi için son derece optimize edilmiştir ve Openbox istifleme pencere yöneticisi ile değiştirilmiş bir LXDE masaüstü ortamı kullanır. Raspberry Pi OS, Raspberry Pi'de mümkün olduğunca çok sayıda Debian paketinin kararlılığını ve performansını artırmaya vurgu yaparak aktif olarak geliştirilmektedir.
Raspberry Pi OS'yi Raspberry Pi'ye Flashlama
Raspberry Pi'yi elinize aldıktan sonra yapmanız gereken ilk şey, Raspberry Pi OS ile bir micro-SD kartı flaşlamak, cihaza takmak ve işletim sistemini başlatmaktır. Cihazınızı ilk kullanıma hazırlamak için Raspberry Pi'nin ayrıntılı Başlangıç Dokümantasyonunu takip edin.
Kurulum Ultralytics
There are two ways of setting up Ultralytics package on Raspberry Pi to build your next Computer Vision project. You can use either of them.
Docker ile başlayın
Raspberry Pi üzerinde Ultralytics YOLOv8 kullanmaya başlamanın en hızlı yolu Raspberry Pi için önceden oluşturulmuş docker imajı ile çalıştırmaktır.
Docker konteynerini çekmek ve Raspberry Pi üzerinde çalıştırmak için aşağıdaki komutu yürütün. Bu, Python3 ortamında Debian 12 (Bookworm) içeren arm64v8/debian docker görüntüsüne dayanmaktadır.
Bu işlem tamamlandıktan sonra Raspberry Pi üzerinde NCNN adresini kullanın bölümüne geçin.
Docker olmadan başlayın
Ultralytics Paketini Yükleyin
Here we will install Ultralytics package on the Raspberry Pi with optional dependencies so that we can export the PyTorch models to other different formats.
-
Paket listesini güncelleyin, pip yükleyin ve en son sürüme yükseltin
-
Kurulum
ultralytics
isteğe bağlı bağımlılıklarla pip paketi -
Cihazı yeniden başlatın
Raspberry Pi üzerinde NCNN kullanın
Ultralytics tarafından desteklenen tüm model dışa aktarma formatlarından , NCNN Raspberry Pi cihazlarıyla çalışırken en iyi çıkarım performansını sunar çünkü NCNN mobil / gömülü platformlar (ARM mimarisi gibi) için son derece optimize edilmiştir. Bu nedenle bizim tavsiyemiz Raspberry Pi ile NCNN adresini kullanmanızdır.
Modeli NCNN 'a Dönüştürün ve Çıkarım Çalıştırın
PyTorch biçimindeki YOLOv8n modeli, dışa aktarılan modelle çıkarım yapmak için NCNN biçimine dönüştürülür.
Örnek
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates 'yolov8n_ncnn_model'
# Load the exported NCNN model
ncnn_model = YOLO("yolov8n_ncnn_model")
# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
İpucu
Desteklenen dışa aktarma seçenekleri hakkında daha fazla bilgi için dağıtım seçenekleriyle ilgiliUltralytics belge sayfasını ziyaret edin.
Raspberry Pi 5 vs Raspberry Pi 4 YOLOv8 Benchmarklar
YOLOv8 benchmarks were run by the Ultralytics team on nine different model formats measuring speed and accuracy: PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, NCNN. Benchmarks were run on both Raspberry Pi 5 and Raspberry Pi 4 at FP32 precision with default input image size of 640.
Not
Diğer modellerin boyutları Raspberry Pis üzerinde çalıştırmak için çok büyük olduğundan ve iyi bir performans sunmadığından, yalnızca YOLOv8n ve YOLOv8s modelleri için kıyaslamalara yer verdik.
Karşılaştırma Tablosu
Performans
Detaylı Karşılaştırma Tablosu
Aşağıdaki tablo, iki farklı model için kıyaslama sonuçlarını temsil etmektedir (YOLOv8n, YOLOv8s) dokuz farklı formatta (PyTorch, TorchScript, ONNX, OpenVINO, TF SavedModel, TF GraphDef, TF Lite PaddlePaddle, NCNN), hem Raspberry Pi 4 hem de Raspberry Pi 5 üzerinde çalışır ve bize her kombinasyon için durumu, boyutu, mAP50-95(B) metriğini ve çıkarım süresini verir.
Performans
Biçim | Durum | Disk üzerindeki boyut (MB) | mAP50-95(B) | Çıkarım süresi (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 6.2 | 0.6381 | 508.61 |
TorchScript | ✅ | 12.4 | 0.6092 | 558.38 |
ONNX | ✅ | 12.2 | 0.6092 | 198.69 |
OpenVINO | ✅ | 12.3 | 0.6092 | 704.70 |
TF SavedModel | ✅ | 30.6 | 0.6092 | 367.64 |
TF GraphDef | ✅ | 12.3 | 0.6092 | 473.22 |
TF Lite | ✅ | 12.3 | 0.6092 | 380.67 |
PaddlePaddle | ✅ | 24.4 | 0.6092 | 703.51 |
NCNN | ✅ | 12.2 | 0.6034 | 94.28 |
Biçim | Durum | Disk üzerindeki boyut (MB) | mAP50-95(B) | Çıkarım süresi (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 21.5 | 0.6967 | 969.49 |
TorchScript | ✅ | 43.0 | 0.7136 | 1110.04 |
ONNX | ✅ | 42.8 | 0.7136 | 451.37 |
OpenVINO | ✅ | 42.9 | 0.7136 | 873.51 |
TF SavedModel | ✅ | 107.0 | 0.7136 | 658.15 |
TF GraphDef | ✅ | 42.8 | 0.7136 | 946.01 |
TF Lite | ✅ | 42.8 | 0.7136 | 1013.27 |
PaddlePaddle | ✅ | 85.5 | 0.7136 | 1560.23 |
NCNN | ✅ | 42.7 | 0.7204 | 211.26 |
Biçim | Durum | Disk üzerindeki boyut (MB) | mAP50-95(B) | Çıkarım süresi (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 6.2 | 0.6381 | 1068.42 |
TorchScript | ✅ | 12.4 | 0.6092 | 1248.01 |
ONNX | ✅ | 12.2 | 0.6092 | 560.04 |
OpenVINO | ✅ | 12.3 | 0.6092 | 534.93 |
TF SavedModel | ✅ | 30.6 | 0.6092 | 816.50 |
TF GraphDef | ✅ | 12.3 | 0.6092 | 1007.57 |
TF Lite | ✅ | 12.3 | 0.6092 | 950.29 |
PaddlePaddle | ✅ | 24.4 | 0.6092 | 1507.75 |
NCNN | ✅ | 12.2 | 0.6092 | 414.73 |
Biçim | Durum | Disk üzerindeki boyut (MB) | mAP50-95(B) | Çıkarım süresi (ms/im) |
---|---|---|---|---|
PyTorch | ✅ | 21.5 | 0.6967 | 2589.58 |
TorchScript | ✅ | 43.0 | 0.7136 | 2901.33 |
ONNX | ✅ | 42.8 | 0.7136 | 1436.33 |
OpenVINO | ✅ | 42.9 | 0.7136 | 1225.19 |
TF SavedModel | ✅ | 107.0 | 0.7136 | 1770.95 |
TF GraphDef | ✅ | 42.8 | 0.7136 | 2146.66 |
TF Lite | ✅ | 42.8 | 0.7136 | 2945.03 |
PaddlePaddle | ✅ | 85.5 | 0.7136 | 3962.62 |
NCNN | ✅ | 42.7 | 0.7136 | 1042.39 |
Sonuçlarımızı Yeniden Üretin
Yukarıdaki Ultralytics kıyaslamalarını tüm dışa aktarma biçimlerinde yeniden oluşturmak için bu kodu çalıştırın:
Örnek
Kıyaslama sonuçlarının, bir sistemin tam donanım ve yazılım yapılandırmasının yanı sıra kıyaslamaların çalıştırıldığı sırada sistemin mevcut iş yüküne bağlı olarak değişebileceğini unutmayın. En güvenilir sonuçlar için çok sayıda görüntü içeren bir veri kümesi kullanın, örn. data='coco8.yaml' (4 val images), or
data='coco.yaml'` (5000 val görüntü).
Raspberry Pi Kamera Kullanın
Raspberry Pi'yi Bilgisayarla Görme projeleri için kullanırken, çıkarım yapmak için gerçek zamanlı video beslemeleri almak esas olabilir. Raspberry Pi üzerindeki yerleşik MIPI CSI konektörü, resmi Raspberry PI kamera modüllerini bağlamanıza olanak tanır. Bu kılavuzda, video akışlarını almak ve YOLOv8 modellerini kullanarak çıkarım yapmak için bir Raspberry Pi Kamera Modülü 3 kullandık.
İpucu
Raspberry Pi tarafından sunulan farklı kamera modülleri hakkında daha fazla bilgi edinin ve ayrıca Raspberry Pi kamera modüllerini kullanmaya nasıl başlayacağınızı öğrenin.
Not
Raspberry Pi 5, Raspberry Pi 4'ten daha küçük CSI konektörleri kullanır (15-pin vs 22-pin), bu nedenle bir Raspberry Pi Kameraya bağlanmak için 15-pin - 22pin adaptör kablosuna ihtiyacınız olacaktır.
Kamerayı Test Edin
Kamerayı Raspberry Pi'ye bağladıktan sonra aşağıdaki komutu çalıştırın. Yaklaşık 5 saniye boyunca kameradan canlı bir video akışı görmelisiniz.
İpucu
Hakkında daha fazla bilgi edinin rpicam-hello
Resmi Raspberry Pi belgelerinde kullanım
Kamera ile Çıkarım
Raspberry Pi Kamerayı YOLOv8 modellerini çıkarmak için kullanmanın 2 yöntemi vardır.
Kullanım
Kullanabiliriz picamera2
Raspberry Pi OS ile önceden yüklenmiş olarak gelen kamera ve çıkarım YOLOv8 modellerine erişmek için.
Örnek
import cv2
from picamera2 import Picamera2
from ultralytics import YOLO
# Initialize the Picamera2
picam2 = Picamera2()
picam2.preview_configuration.main.size = (1280, 720)
picam2.preview_configuration.main.format = "RGB888"
picam2.preview_configuration.align()
picam2.configure("preview")
picam2.start()
# Load the YOLOv8 model
model = YOLO("yolov8n.pt")
while True:
# Capture frame-by-frame
frame = picam2.capture_array()
# Run YOLOv8 inference on the frame
results = model(frame)
# Visualize the results on the frame
annotated_frame = results[0].plot()
# Display the resulting frame
cv2.imshow("Camera", annotated_frame)
# Break the loop if 'q' is pressed
if cv2.waitKey(1) == ord("q"):
break
# Release resources and close windows
cv2.destroyAllWindows()
ile bir TCP akışı başlatmamız gerekiyor rpicam-vid
Böylece daha sonra çıkarım yaparken bu akış URL'sini bir girdi olarak kullanabiliriz. TCP akışını başlatmak için aşağıdaki komutu yürütün.
Hakkında daha fazla bilgi edinin rpicam-vid
Resmi Raspberry Pi belgelerinde kullanım
İpucu
Görüntü/video giriş türünü değiştirmek istiyorsanız Çıkarım Kaynakları hakkındaki belgemize bakın
Raspberry Pi kullanırken en iyi uygulamalar
YOLOv8 çalıştıran Raspberry Pis üzerinde maksimum performans sağlamak için izlenecek birkaç en iyi uygulama vardır.
-
Bir SSD kullanın
Raspberry Pi'yi 7x24 sürekli kullanım için kullanırken, bir SD kart sürekli yazmaya dayanamayacağı ve kırılabileceği için sistem için bir SSD kullanılması önerilir. Raspberry Pi 5 üzerindeki yerleşik PCIe konektörü ile artık Raspberry Pi 5 için NVMe Base gibi bir adaptör kullanarak SSD'leri bağlayabilirsiniz.
-
GUI olmadan Flash
Raspberry Pi OS'yi yanıp sönerken, Masaüstü ortamını (Raspberry Pi OS Lite) yüklememeyi seçebilirsiniz ve bu, cihazda biraz RAM tasarrufu sağlayarak bilgisayar görüşü işleme için daha fazla alan bırakabilir.
Sonraki Adımlar
Raspberry Pi'nizde YOLO 'u başarıyla kurduğunuz için tebrikler! Daha fazla öğrenme ve destek için Ultralytics YOLOv8 Docs ve Kashmir World Foundation adreslerini ziyaret edin.
Teşekkür ve Atıflar
Bu kılavuz ilk olarak Daan Eeltink tarafından, nesli tükenmekte olan türlerin korunması için YOLO adresinin kullanılmasına adanmış bir kuruluş olan Kashmir World Foundation için hazırlanmıştır. Nesne algılama teknolojileri alanındaki öncü çalışmalarını ve eğitime odaklanmalarını takdirle karşılıyoruz.
Kashmir World Foundation'ın faaliyetleri hakkında daha fazla bilgi için web sitesini ziyaret edebilirsiniz.
SSS
Docker kullanmadan Raspberry Pi üzerinde Ultralytics YOLOv8 adresini nasıl kurabilirim?
Docker olmadan bir Raspberry Pi üzerinde Ultralytics YOLOv8 kurmak için aşağıdaki adımları izleyin:
- Paket listesini güncelleyin ve yükleyin
pip
: - Ultralytics paketini isteğe bağlı bağımlılıklarla birlikte yükleyin:
- Değişiklikleri uygulamak için cihazı yeniden başlatın:
Ayrıntılı talimatlar için Docker olmadan başlat bölümüne bakın.
Yapay zeka görevleri için Raspberry Pi'de neden Ultralytics YOLOv8 'un NCNN formatını kullanmalıyım?
Ultralytics YOLOv8'in NCNN formatı, mobil ve gömülü platformlar için son derece optimize edilmiştir ve Raspberry Pi cihazlarında yapay zeka görevlerini çalıştırmak için idealdir. NCNN , ARM mimarisinden yararlanarak çıkarım performansını en üst düzeye çıkarır ve diğer formatlara kıyasla daha hızlı ve daha verimli işleme sağlar. Desteklenen dışa aktarma seçenekleri hakkında daha fazla bilgi için dağıtım seçenekleriyle ilgiliUltralytics dokümantasyon sayfasını ziyaret edin.
Raspberry Pi'de kullanmak için bir YOLOv8 modelini NCNN formatına nasıl dönüştürebilirim?
Bir PyTorch YOLOv8 modelini Python veya CLI komutlarını kullanarak NCNN biçimine dönüştürebilirsiniz:
Örnek
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates 'yolov8n_ncnn_model'
# Load the exported NCNN model
ncnn_model = YOLO("yolov8n_ncnn_model")
# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
Daha fazla ayrıntı için Raspberry Pi'de NCNN adresini kullanma bölümüne bakın.
Raspberry Pi 4 ve Raspberry Pi 5 arasındaki YOLOv8 çalıştırma ile ilgili donanım farklılıkları nelerdir?
Temel farklılıklar şunları içerir:
- CPU: Raspberry Pi 4, Broadcom BCM2711, Cortex-A72 64-bit SoC kullanırken, Raspberry Pi 5 Broadcom BCM2712, Cortex-A76 64-bit SoC kullanır.
- Maksimum CPU Frekans: Raspberry Pi 4 maksimum 1.8GHz frekansa sahipken, Raspberry Pi 5 2.4GHz'e ulaşır.
- Bellek: Raspberry Pi 4, 8GB'a kadar LPDDR4-3200 SDRAM sunarken Raspberry Pi 5, 4GB ve 8GB varyantları bulunan LPDDR4X-4267 SDRAM'a sahiptir.
Bu geliştirmeler, Raspberry Pi 5'teki YOLOv8 modelleri için Raspberry Pi 4'e kıyasla daha iyi performans kıyaslamalarına katkıda bulunur. Daha fazla ayrıntı için Raspberry Pi Serisi Karşılaştırma tablosuna bakın.
Raspberry Pi Kamera Modülünü Ultralytics YOLOv8 ile çalışacak şekilde nasıl kurabilirim?
Raspberry Pi Kamerayı YOLOv8 çıkarımı için kurmanın iki yöntemi vardır:
-
Kullanma
picamera2
:import cv2 from picamera2 import Picamera2 from ultralytics import YOLO picam2 = Picamera2() picam2.preview_configuration.main.size = (1280, 720) picam2.preview_configuration.main.format = "RGB888" picam2.preview_configuration.align() picam2.configure("preview") picam2.start() model = YOLO("yolov8n.pt") while True: frame = picam2.capture_array() results = model(frame) annotated_frame = results[0].plot() cv2.imshow("Camera", annotated_frame) if cv2.waitKey(1) == ord("q"): break cv2.destroyAllWindows()
-
TCP Akışı Kullanma:
Ayrıntılı kurulum talimatları için Kamera ile Çıkarım bölümünü ziyaret edin.