Ultralytics YOLO NCNN Dışa Aktarma#
Mobil veya gömülü sistemler gibi hesaplama gücü sınırlı cihazlarda bilgisayarlı görü modellerini dağıtmak, biçimin dikkatle seçilmesini gerektirir. Optimize edilmiş bir biçim kullanmak, kaynakları kısıtlı cihazların bile gelişmiş bilgisayarlı görü görevlerini verimli şekilde gerçekleştirebilmesini sağlar.
NCNN biçimine dışa aktarma, Ultralytics YOLO26 modellerini hafif cihaz tabanlı uygulamalar için optimize etmeni sağlar. Bu kılavuzda, mobil ve gömülü cihazlarda performansı artırmak için modellerini NCNN biçimine nasıl dönüştüreceğin açıklanır.
Neden NCNN'ye Dışa Aktarılmalı?#
Tencent tarafından geliştirilen NCNN framework'ü, mobil telefonlar, gömülü cihazlar ve IoT cihazları dahil olmak üzere özellikle mobil platformlar için optimize edilmiş, yüksek performanslı bir sinir ağı çıkarım hesaplama framework'üdür. NCNN; Linux, Android, iOS ve macOS dahil çok çeşitli platformlarla uyumludur.
NCNN, mobil CPU'larda hızlı işlem hızıyla bilinir ve derin öğrenme modellerinin mobil platformlara hızlı şekilde dağıtılmasını sağlar; bu da onu yapay zekâ destekli uygulamalar geliştirmek için mükemmel bir seçenek haline getirir.
NCNN Modellerinin Temel Özellikleri#
NCNN modelleri, cihaz üzerinde makine öğrenmesini mümkün kılan ve geliştiricilerin modelleri mobil, gömülü ve uç cihazlarda dağıtmasına yardımcı olan çeşitli temel özellikler sunar:
-
Verimli ve Yüksek Performanslı: NCNN modelleri hafiftir ve sınırlı kaynaklara sahip Raspberry Pi gibi mobil ve gömülü cihazlar için optimize edilmiştir; aynı zamanda bilgisayarlı görü görevlerinde yüksek doğruluğu korur.
-
Nicemleme: NCNN, performansı artırmak ve bellek kullanımını azaltmak için model ağırlıklarının ve aktivasyonlarının hassasiyetini düşüren bir teknik olan nicemlemeyi destekler.
-
Uyumluluk: NCNN modelleri TensorFlow, Caffe ve ONNX dahil popüler derin öğrenme framework'leriyle uyumludur; bu sayede geliştiriciler mevcut modellerden ve iş akışlarından yararlanabilir.
-
Kullanım Kolaylığı: NCNN, modelleri biçimler arasında dönüştürmek için kullanıcı dostu araçlar sunarak farklı geliştirme ortamları arasında sorunsuz birlikte çalışabilirlik sağlar.
-
Vulkan GPU Hızlandırması: NCNN, AMD, Intel ve NVIDIA dışındaki diğer GPU'lar dahil olmak üzere birden çok üreticide GPU hızlandırmalı çıkarım için Vulkan'ı destekler ve daha geniş bir donanım yelpazesinde yüksek performanslı dağıtım sağlar.
NCNN ile Dağıtım Seçenekleri#
NCNN modelleri çeşitli dağıtım platformlarıyla uyumludur:
-
Mobil Dağıtım: Android ve iOS için optimize edilmiştir; verimli cihaz üzeri çıkarım için mobil uygulamalara sorunsuz entegrasyon sağlar.
-
Gömülü Sistemler ve IoT Cihazları: Raspberry Pi ve NVIDIA Jetson gibi kaynakları kısıtlı cihazlar için idealdir. Ultralytics Kılavuzu ile Raspberry Pi üzerinde standart çıkarım yetersiz kalırsa NCNN, önemli performans iyileştirmeleri sağlayabilir.
-
Masaüstü ve Sunucu Dağıtımı: Geliştirme, eğitim ve değerlendirme iş akışları için Linux, Windows ve macOS üzerinde dağıtımı destekler.
Vulkan GPU Hızlandırması#
NCNN, Vulkan aracılığıyla GPU hızlandırmasını destekleyerek AMD, Intel ve NVIDIA dışındaki diğer grafik kartları dahil çok çeşitli GPU'larda yüksek performanslı çıkarım sağlar. Bu özellikle şu durumlarda kullanışlıdır:
- Üreticiler Arası GPU Desteği: NVIDIA GPU'larıyla sınırlı olan CUDA'nın aksine Vulkan, birden çok GPU üreticisiyle çalışır.
- Çoklu GPU Sistemleri:
device="vulkan:0",device="vulkan:1"vb. kullanarak birden çok GPU bulunan sistemlerde belirli bir Vulkan cihazı seçebilirsin. - Uç ve Masaüstü Dağıtımları: CUDA'nın kullanılamadığı cihazlarda GPU hızlandırmasından yararlanabilirsin.
Vulkan hızlandırmasını kullanmak için çıkarımı çalıştırırken Vulkan cihazını belirt:
from ultralytics import YOLO
# Load the exported NCNN model
ncnn_model = YOLO("./yolo26n_ncnn_model")
# Run inference with Vulkan GPU acceleration (first Vulkan device)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")
# Use second Vulkan device in multi-GPU systems
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")GPU'n için Vulkan sürücülerinin yüklü olduğundan emin ol. Modern GPU sürücülerinin çoğu varsayılan olarak Vulkan desteği içerir. Linux'ta vulkaninfo gibi araçları veya Windows'ta Vulkan SDK'sını kullanarak Vulkan'ın kullanılabilirliğini doğrulayabilirsin.
Desteklenen Görevler#
NCNN dışa aktarma, yedi Ultralytics görevinin tamamını destekler. Anlamsal segmentasyon ve derinlik tahmini yalnızca bu başlıklarla birlikte sunulan tek aile olan YOLO26 ile kullanılabilir.
| Görev | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Algılama | ✅ | ✅ | ✅ |
| Segmentasyon | ✅ | ✅ | ✅ |
| Semantik | ❌ | ❌ | ✅ |
| Derinlik | ❌ | ❌ | ✅ |
| Sınıflandırma | ✅ | ✅ | ✅ |
| Poz | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
NCNN'ye Dışa Aktarma: YOLO26 Modelini Dönüştürme#
YOLO26 modellerini NCNN biçimine dönüştürerek model uyumluluğunu ve dağıtım esnekliğini artırabilirsin.
Kurulum#
Gerekli paketleri yüklemek için şunu çalıştır:
# Install the required package for YOLO26
pip install ultralyticsAyrıntılı talimatlar ve en iyi uygulamalar için Ultralytics Kurulum kılavuzuna bak. Herhangi bir zorlukla karşılaşırsan çözümler için Yaygın Sorunlar kılavuzumuza başvur.
Kullanım#
Tüm Ultralytics YOLO26 modelleri, kutudan çıktığı hâliyle dışa aktarmayı destekleyecek şekilde tasarlanmıştır; böylece bunları tercih ettiğin dağıtım iş akışına kolayca entegre edebilirsin. Uygulaman için en iyi kurulumu seçmek üzere desteklenen dışa aktarma biçimlerinin ve yapılandırma seçeneklerinin tam listesini görüntüleyebilirsin.
NCNN biçimi Dışa Aktarma, Tahmin ve Doğrulama modlarını destekler. Modelini dışa aktar, ardından çıkarım gerçekleştirmek veya doğruluğunu doğrulamak için dışa aktarılan modeli yükle.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates 'yolo26n_ncnn_model'from ultralytics import YOLO
# Load the exported NCNN model
model = YOLO("./yolo26n_ncnn_model")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported NCNN model
model = YOLO("./yolo26n_ncnn_model")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Dışa Aktarma Bağımsız Değişkenleri#
| Bağımsız değişken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
format | str | 'ncnn' | Dışa aktarılan model için hedef formatı belirtir ve çeşitli dağıtım ortamlarıyla uyumluluğu tanımlar. |
imgsz | int veya tuple | 640 | Model girdisi için istenen görüntü boyutu. Kare görüntüler için bir tam sayı veya belirli boyutlar için (height, width) tuple'ı olabilir. |
quantize | int veya str | None | Nicemleme hassasiyeti: 16 (FP16), dışa aktarılan ağırlıkları yarıya indirir; 32/ayarlanmamış değer, FP32 ağırlıklarını dışa aktarır ve NCNN'nin CPU çalışma zamanı, donanım desteklediğinde bunları varsayılan olarak yine FP16 ile hesaplar. Kullanımdan kaldırılan half seçeneğinin yerini alır. |
batch | int | 1 | Dışa aktarma modelinin toplu çıkarım boyutunu veya dışa aktarılan modelin predict modunda eşzamanlı olarak işleyeceği maksimum görüntü sayısını belirtir. |
device | str | None | Dışa aktarma cihazını belirtir: GPU (device=0), CPU (device=cpu), Apple silicon için MPS (device=mps). |
Dışa aktarma süreci hakkında daha fazla ayrıntı için Ultralytics'in dışa aktarma dokümantasyonu sayfasını ziyaret et.
Dışa Aktarılan YOLO26 NCNN Modellerini Dağıtma#
Ultralytics YOLO26 modellerini NCNN biçimine aktardıktan sonra, yukarıdaki kullanım örneğinde gösterildiği gibi YOLO("yolo26n_ncnn_model/") yöntemini kullanarak bunları dağıtabilirsin. Platforma özel dağıtım talimatları için aşağıdaki kaynaklara bak:
-
Android: Android uygulamalarında nesne algılama için NCNN modellerini oluştur ve entegre et.
-
macOS: NCNN modellerini macOS sistemlerinde dağıt.
-
Linux: NCNN modellerini Raspberry Pi ve benzeri gömülü sistemler dahil Linux cihazlarında dağıt.
-
Windows x64: Visual Studio kullanarak NCNN modellerini Windows x64 üzerinde dağıt.
Özet#
Bu kılavuzda, kaynakları kısıtlı cihazlarda verimliliği ve hızı artırmak için Ultralytics YOLO26 modellerinin NCNN biçimine aktarılması ele alındı.
Daha fazla ayrıntı için resmî NCNN belgelerine başvur. Diğer dışa aktarma seçenekleri için entegrasyon kılavuzu sayfamızı ziyaret et.
SSS#
Ultralytics YOLO26 modelini NCNN biçimine aktarmak için:
-
Python: YOLO sınıfındaki
exportyöntemini kullan.from ultralytics import YOLO # Load a YOLO26 model model = YOLO("yolo26n.pt") # Export to NCNN format model.export(format="ncnn") # creates 'yolo26n_ncnn_model' -
CLI:
yolo exportkomutunu kullan.yolo export model=yolo26n.pt format=ncnn # creates 'yolo26n_ncnn_model'
Ayrıntılı dışa aktarma seçenekleri için Dışa Aktarma belgelerine bak.
-
Ultralytics YOLO26 modellerini NCNN'ye aktarmak çeşitli avantajlar sunar:
- Verimlilik: NCNN modelleri mobil ve gömülü cihazlar için optimize edilmiştir ve sınırlı hesaplama kaynaklarıyla bile yüksek performans sağlar.
- Nicemleme: NCNN, model hızını artıran ve bellek kullanımını azaltan nicemleme gibi teknikleri destekler.
- Geniş Uyumluluk: NCNN modellerini Android, iOS, Linux ve macOS dahil birden çok platformda dağıtabilirsin.
- Vulkan GPU Hızlandırması: Daha hızlı çıkarım için Vulkan aracılığıyla AMD, Intel ve NVIDIA dışındaki diğer GPU'larda GPU hızlandırmasından yararlanabilirsin.
Daha fazla ayrıntı için Neden NCNN'ye Dışa Aktarılmalı? bölümüne bak.
Tencent tarafından geliştirilen NCNN, özellikle mobil platformlar için optimize edilmiştir. NCNN'yi kullanmanın temel nedenleri şunlardır:
- Yüksek Performans: Mobil CPU'larda verimli ve hızlı işlem için tasarlanmıştır.
- Platformlar Arası: TensorFlow ve ONNX gibi popüler framework'lerle uyumludur; bu da modelleri farklı platformlar arasında dönüştürmeyi ve dağıtmayı kolaylaştırır.
- Topluluk Desteği: Aktif topluluk desteği, sürekli iyileştirmeler ve güncellemeler sağlar.
Daha fazla bilgi için NCNN Modellerinin Temel Özellikleri bölümüne bak.
NCNN esnektir ve çeşitli platformları destekler:
- Mobil: Android, iOS.
- Gömülü Sistemler ve IoT Cihazları: Raspberry Pi ve NVIDIA Jetson gibi cihazlar.
- Masaüstü ve Sunucular: Linux, Windows ve macOS.
Raspberry Pi'de daha iyi performans için Raspberry Pi Kılavuzumuzda ayrıntıları verilen NCNN biçimini kullanmayı düşün.
YOLO26 modellerini Android'de dağıtmak için:
- Android için Derle: Android için NCNN Derleme kılavuzunu izle.
- Uygulamana Entegre Et: Dışa aktarılan modeli verimli cihaz üzeri çıkarım için uygulamana entegre etmek üzere NCNN Android SDK'sını kullan.
Ayrıntılı talimatlar için Dışa Aktarılan YOLO26 NCNN Modellerini Dağıtma bölümüne bak.
Daha gelişmiş kılavuzlar ve kullanım alanları için Ultralytics dağıtım kılavuzunu ziyaret et.
NCNN, AMD, Intel ve NVIDIA dışındaki diğer GPU'larda GPU hızlandırması için Vulkan'ı destekler. Vulkan'ı kullanmak için:
from ultralytics import YOLO # Load NCNN model and run with Vulkan GPU model = YOLO("yolo26n_ncnn_model") results = model("image.jpg", device="vulkan:0") # Use first Vulkan deviceÇoklu GPU sistemlerinde cihaz dizinini belirt (örneğin, ikinci GPU için
vulkan:1). GPU'n için Vulkan sürücülerinin yüklü olduğundan emin ol. Daha fazla ayrıntı için Vulkan GPU Hızlandırması bölümüne bak.