nesne tanıma etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
nesne tanıma etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

3 Eylül 2025 Çarşamba

Tarayıcıda WebGPU ile ONNX Runtime Web Kullanarak YOLOv8 Nesne Tanıma: Adım Adım Kurulum ve Performans İpuçları

Giriş

Tarayıcıda çalışan yapay zeka uygulamaları artık sadece demolarla sınırlı değil. WebGPU ve ONNX Runtime Web sayesinde, YOLOv8 gibi modern nesne tanıma modellerini doğrudan kullanıcıların cihazlarında, sunucuya ihtiyaç duymadan ve düşük gecikmeyle çalıştırmak mümkün hale geldi. Bu yazıda, YOLOv8 modelini ONNX formatına dönüştürüp WebGPU yürütücüsüyle tarayıcıda nasıl çalıştırabileceğinizi, performans odaklı pratik ipuçlarıyla adım adım anlatıyorum.

Neden WebGPU + ONNX Runtime Web?

WebGPU, modern GPU mimarilerine daha yakın bir API sunduğu için WebGL/Canvas tabanlı yaklaşımlara göre çok daha yüksek paralellik ve verimlilik sağlar. ONNX Runtime Web ise modelleri tarayıcıda WebGPU ya da WASM yürütücüleri ile çalıştırır. Bu ikili; hız, taşınabilirlik ve gizlilik avantajlarını aynı anda sunar: veriler tarayıcıdan çıkmaz, gecikme düşer, CDN üzerinden servis edilen statik dosyalarla ölçeklenebilir bir dağıtım sağlanır.

Ön Koşullar

Güncel bir Chromium tabanlı tarayıcı (Chrome/Edge 121+), WebGPU desteği açık bir ortam (HTTPS zorunlu), Node.js 18+ ve temel TypeScript/JavaScript bilgisi yeterli. Geliştirme için Vite ile hafif bir proje yapısı kuracağız.

Modeli Hazırlama (YOLOv8 → ONNX)

Ultralytics YOLOv8 modelini ONNX’e aktarmak için Python tarafında şu adımı izleyebilirsiniz: pip install ultralytics komutuyla paketi kurun ve ardından yolo export model=yolov8n.pt format=onnx opset=12 imgsz=640 komutunu çalıştırın. Bu işlem sonunda yolov8n.onnx dosyasını elde edersiniz. Alternatif olarak resmi depolardan hazır ONNX sürümlerini indirebilir ve doğrudan statik olarak sunabilirsiniz.

Projeyi Kurma (Vite + TypeScript)

Yeni bir proje başlatmak için şu komutu çalıştırın: npm create vite@latest onnx-webgpu -- --template vanilla-ts. Proje klasörüne geçip npm i onnxruntime-web komutuyla ONNX Runtime Web’i ekleyin. Modeli ve etiket dosyalarını public/models klasörüne kopyalayın. Geliştirme sunucusunu başlatmak için npm run dev yeterli olacaktır.

WebGPU Yürütücü ile İnferans

Tarayıcı tarafında WebGPU yürütücüsünü etkinleştirmek için modülü içeri aktarın: import 'onnxruntime-web/webgpu' ve ardından import { InferenceSession, Tensor } from 'onnxruntime-web'. Oturum oluştururken yürütücüyü belirtebilirsiniz: const session = await InferenceSession.create('/models/yolov8n.onnx', { executionProviders: ['webgpu'], graphOptimizationLevel: 'all' }). Eğer cihazda WebGPU uygun değilse bir yakalama bloğunda ['wasm'] ile geriye dönük destek sunmak mümkündür.

Görüntüyü tensöre dönüştürmek için bir <canvas> referansı yeterli. Görüntünün 640x640 boyutuna mektup kutusu (letterbox) ile ölçeklenmesi, ardından piksel verisinin Float32 tensöre [1, 3, H, W] düzeninde (RGB, kanal-öncelikli) aktarılması gerekir. Normalizasyon için genellikle 0–1 aralığı ve gerekiyorsa modelin beklediği ortalama/sapma değerleri kullanılır. Örnek akış: görüntüyü canvas’a çiz, getImageData ile veriyi al, Float32Array’e yaz ve new Tensor('float32', data, [1,3,640,640]) oluştur. Ardından await session.run({ images: inputTensor }) ile çıktıları alabilirsiniz.

YOLOv8 ONNX çıkışında genellikle [1, N, 84] benzeri bir matris döner (ilk 4 değer kutu, takip eden skorlar/sınıflar). Sonuçları yorumlarken skor eşiğini (örneğin 0.25) ve IoU tabanlı NMS adımını uygulayın. Basit bir döngü ile her satırı okuyup en yüksek sınıf skorunu, kutu koordinatlarını ölçekleyerek orijinal görüntü boyutuna geri projekte edebilirsiniz.

Performans ve Optimizasyon İpuçları

Isınma (warm-up): Uygulama açılışında bir kez sahte bir tensörle session.run yaparak JIT derleme/önbellek süreçlerini tetikleyin. Bu, ilk gerçek karedeki gecikmeyi ciddi ölçüde azaltır.

WASM geri dönüşü: WebGPU desteklenmeyen cihazlarda otomatik olarak WASM’a düşmek kullanıcı kapsamını artırır. executionProviders: ['webgpu', 'wasm'] sıralaması pratik bir stratejidir.

Kantizasyon ve hafif modeller: INT8 kantize edilmiş ONNX modelleri bellek ve bant genişliği tüketimini düşürür. Eğer doğruluk kabul edilebilir seviyede kalıyorsa yolov8n veya yolov8s gibi küçük türevleri tercih edin.

Web Worker / OffscreenCanvas: Ön işleme ve NMS’i Web Worker’a taşıyarak ana iş parçacığını serbest bırakabilir, kare atlamalarını azaltabilirsiniz. Destek varsa OffscreenCanvas ile piksel işlemlerini işçi tarafında yapın.

Toplu işleme ve kadans kontrolü: Canlı kamera akışında her kareyi çalıştırmak yerine zamanlayıcıyla kadansı sınırlayın (ör. 30 FPS yerine 15 FPS). Sabit görüntü yükleme senaryolarında, aynı anda birden fazla resmi işlemek yerine küçük partiler halinde ilerleyin.

Bellek yönetimi: Tekrar kullanılan tensör ve arabellekleri yeniden oluşturmak yerine mümkün olduğunca yeniden kullanın. Büyük Float32Array tahsislerinden kaçınmak çöp toplayıcı baskısını azaltır.

Sık Karşılaşılan Hatalar ve Çözümler

GPUUnavailableError: Tarayıcıda chrome://flags altında WebGPU kapalı olabilir veya sayfa HTTPS üzerinden servis edilmiyor olabilir. Yerel geliştirme için localhost genellikle güvenilir sayılır.

Model uyumsuzluğu: ONNX opset sürümü çok düşük/yüksek olduğunda düğümler çözümlenmeyebilir. Çoğu güncel senaryoda opset 12–13+ güvenlidir; export sırasında opseti açıkça belirtin.

Çapraz kaynak sorunları: Model dosyaları farklı bir origin’den yükleniyorsa CORS başlıklarını doğru ayarlayın. Üretimde model ve varlıkları aynı domain/CDN kökünden sunmak en pratik yoldur.

Sonuç

WebGPU ve ONNX Runtime Web ile YOLOv8’i tarayıcıda çalıştırmak, gerçek zamanlı nesne tanımayı istemci tarafında güvenli ve hızlı bir şekilde sunmanıza olanak verir. Doğru ön işleme, hafif model seçimi ve ısınma/optimizasyon teknikleri ile orta seviye cihazlarda bile akıcı deneyim elde edebilirsiniz. Bu yaklaşım; gizlilik, ölçeklenebilirlik ve kullanıcı deneyimi açısından modern web uygulamalarına güçlü bir kapı aralıyor. Birkaç küçük adımla siz de modelinizi WebGPU üzerinde hayata geçirebilirsiniz.

5 Ağustos 2025 Salı

Yapay Zeka Destekli Görüntü İşleme: Python ile OpenCV Kullanımı

Giriş: Yapay Zeka ve Görüntü İşlemenin Yükselişi

Günümüzde yapay zeka destekli teknolojiler, hayatımızın pek çok alanında karşımıza çıkıyor. Özellikle görüntü işleme teknikleri, akıllı telefonlardan güvenlik kameralarına kadar birçok cihazda kullanılıyor. Bu alanda en çok tercih edilen araçlardan biri ise Python programlama dili ve onun güçlü kütüphanesi OpenCV’dir. Bu makalede, Python ile OpenCV kullanarak temel görüntü işleme işlemlerini nasıl gerçekleştirebileceğinizi adım adım anlatacağım.

Python ve OpenCV Nedir?

Python, basit ve okunabilir yapısı ile son yılların en popüler programlama dillerinden biri haline geldi. OpenCV ise, açık kaynaklı ve ücretsiz bir bilgisayarla görü kütüphanesidir. OpenCV sayesinde görüntüleri analiz edebilir, filtreler uygulayabilir, nesne tanıma ve yüz algılama gibi ileri seviye işlemleri kolaylıkla gerçekleştirebilirsiniz. Ayrıca, yapay zeka ve makine öğrenmesi projelerinde de sıklıkla tercih edilmektedir.

OpenCV Kurulumu ve İlk Adımlar

OpenCV’yi kullanmaya başlamak için öncelikle Python bilgisayarınızda kurulu olmalı. Ardından, komut satırına pip install opencv-python yazarak OpenCV’yi kolayca yükleyebilirsiniz. Kurulum tamamlandıktan sonra, temel bir resim dosyasını okuma ve görüntüleme işlemini şu şekilde yapabilirsiniz:

import cv2
img = cv2.imread('resim.jpg')
cv2.imshow('Görüntü', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Bu kod, belirtilen ‘resim.jpg’ dosyasını okur ve yeni bir pencerede görüntüler. cv2.waitKey(0) fonksiyonu, bir tuşa basılana kadar pencerenin açık kalmasını sağlar.

Görüntü Üzerinde Temel İşlemler

OpenCV ile görüntü üzerinde pek çok işlem yapabilirsiniz. En çok kullanılanlardan bazıları; gri tonlamaya çevirme, bulanıklaştırma ve kenar tespiti işlemleridir. Örneğin, bir görüntüyü gri tonlara çevirmek için şu kodu kullanabilirsiniz:

gri = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

Bulanıklaştırma işlemi ise, görüntüdeki parazitleri azaltmak için kullanılır:

bulanik = cv2.GaussianBlur(gri, (5, 5), 0)

Kenar tespiti için en popüler algoritmalardan biri Canny Kenar Algılama’dır:

kenar = cv2.Canny(bulanik, 50, 150)

Bu temel işlemler birleştirilerek, görüntülerdeki detayları ortaya çıkarmak ve nesne tespiti yapmak mümkündür.

Yapay Zeka ile Nesne Tanıma

OpenCV, klasik görüntü işleme yöntemlerinin yanı sıra, yapay zeka tabanlı nesne tanıma işlemleri için de kullanılabilir. Özellikle önceden eğitilmiş modeller ve Haar Cascade Classifier gibi araçlar ile insan yüzü, göz veya farklı nesneleri tespit etmek oldukça kolaydır. Örneğin, yüz tespiti yapmak için aşağıdaki kod satırlarını kullanabilirsiniz:

yuz_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
yuzler = yuz_cascade.detectMultiScale(gri, 1.3, 5)

Bu kod, görüntüdeki yüzleri tespit eder ve koordinatlarını döndürür. Daha ileri seviye işlemler için derin öğrenme tabanlı modeller de OpenCV ile entegre şekilde çalıştırılabilir.

Güncel Uygulama Alanları ve Sonuç

Bugün akıllı telefon kameralarında, trafik güvenlik sistemlerinde, endüstriyel otomasyonlarda ve hatta sosyal medya filtrelerinde bile OpenCV ve görüntü işleme teknikleri kullanılmaktadır. Python ile OpenCV, hem yeni başlayanlara hem de profesyonellere güçlü araçlar sunar. Basit kodlarla başlayarak, kendi projelerinizi hayata geçirebilir ve yapay zeka destekli uygulamalar geliştirebilirsiniz.

Sonuç olarak, OpenCV ve Python ile görüntü işleme, günümüzün en çok ihtiyaç duyulan ve hızla gelişen teknolojilerinden biridir. Siz de bu dünyaya adım atmak için yukarıdaki adımları takip edebilir, kendi uygulamalarınızı kolayca geliştirebilirsiniz.

21 Temmuz 2025 Pazartesi

Yapay Zekâ ile Görüntüden Nesne Tanıma: YOLOv8 Kullanımı ve Kurulumu

YOLOv8 Nedir? Modern Nesne Tanımanın Gücü

Yapay zekâ ve makine öğrenmesi alanındaki hızlı gelişmeler, bilgisayarla görme teknolojilerine de büyük bir ivme kazandırdı. Bu alanda öne çıkan en popüler algoritmalardan biri olan YOLO (You Only Look Once), görüntülerdeki nesneleri gerçek zamanlı olarak tespit edebilme yeteneğiyle dikkat çekiyor. YOLO ailesinin en güncel sürümü olan YOLOv8, daha yüksek doğruluk oranı, hızlı tahmin ve kolay entegrasyon özellikleriyle öne çıkıyor. Bu yazıda, YOLOv8’in temel özelliklerinden başlayarak, nasıl kurulacağını ve ilk nesne tanıma işleminin nasıl gerçekleştirileceğini detaylı şekilde anlatacağız.

YOLOv8’in Temel Özellikleri ve Avantajları

YOLOv8, açık kaynak kodlu bir nesne tanıma algoritmasıdır ve Ultralytics tarafından geliştirilmiştir. Modern derin öğrenme mimarileriyle optimize edilmiş olan bu sürüm; hız, doğruluk ve esneklik anlamında önceki sürümlerin bir adım ötesindedir. YOLOv8’in temel avantajları arasında, farklı donanım ve platformlarda kolayca çalışabilmesi, veri etiketleme desteği ve geniş topluluk desteği yer alır. Ayrıca, modelin kendi kendine güncellenebilir yapısı sayesinde yeni nesne sınıfları kolayca eklenebilir.

Bir diğer önemli özellik ise, YOLOv8’in PyTorch tabanlı olmasıdır. Bu sayede, Python ile kolayca entegre edilebilir ve hem CPU hem de GPU üzerinde çalıştırılabilir. YOLOv8, karmaşık görüntü işleme işlemlerini sadeleştirirken, aynı zamanda derin öğrenmeye yeni başlayanlar için de kullanıcı dostu bir arayüz sunar.

YOLOv8 Kurulumu ve İlk Proje Adımları

YOLOv8’i kullanmaya başlamak için ilk adım, Python ve gerekli kütüphaneleri bilgisayarınıza kurmaktır. Python 3.8 veya üzeri bir sürüm önerilmektedir. Ardından, aşağıdaki komut ile Ultralytics’in resmi YOLOv8 paketini yükleyebilirsiniz:

pip install ultralytics

Kurulumun ardından, temel bir nesne tanıma işlemi için hazır hale gelirsiniz. YOLOv8, önceden eğitilmiş modellerle birlikte gelir ve aşağıdaki gibi bir kod bloğu ile bir görüntüdeki nesneleri kolayca tespit edebilirsiniz:

import cv2
from ultralytics import YOLO
model = YOLO('yolov8n.pt')
results = model('resim.jpg')
results.show()

Bu örnekte, 'yolov8n.pt' önceden eğitilmiş hafif bir modeldir ve 'resim.jpg' üzerinde nesneleri algılar. Sonuçlar, tespit edilen nesnelerin konumlarını ve sınıflarını gösteren bir görsel olarak sunulur. Elbette, kendi veri setinizi kullanarak modeli yeniden eğitebilir ve özelleştirilmiş nesne tespiti gerçekleştirebilirsiniz.

Gerçek Hayatta YOLOv8 Kullanım Senaryoları

YOLOv8, güvenlik kameralarından endüstriyel otomasyona, sağlık sektöründen trafik yönetimine kadar pek çok alanda kullanılabilir. Örneğin, fabrika ortamında hatalı ürünlerin otomatik tespiti, şehir içi trafik akışının izlenmesi veya perakende mağazalarında müşteri davranışlarının analiz edilmesi gibi uygulamalarda başarıyla görev alabilir. Bunun yanı sıra, araştırma ve geliştirme projelerinde de hızlı prototipleme ve test süreçlerinde önemli bir rol oynamaktadır.

Özetle, YOLOv8 günümüzün en güçlü ve erişilebilir nesne tanıma çözümlerinden biridir. Açık kaynak yapısı, kolay kurulumu ve esnek kullanımı sayesinde hem amatörler hem de profesyoneller için ideal bir tercihtir. Siz de kendi projelerinizde görüntüden nesne tanıma ihtiyacı duyuyorsanız, YOLOv8’i deneyerek yapay zekâ dünyasına sağlam bir adım atabilirsiniz.

3.