Makine öğrenimi, sosyal medya, YouTube ve E-ticaret gibi yazılım endüstrisi uygulamalarında oldukça yaygın olarak benimsenmiştir. İnternet deneyimi aracılığıyla milyar seviyesinde veri edinmek zor değildir. Ancak, gerçek dünya uygulamalarına bakıldığında, yalnızca küçük verilere erişimi olan birçok başka endüstri bulunmaktadır; örneğin, tıbbi görüntüleme, üretim ve çevresel araştırma.

10K görüntü mü yoksa 500 ya da hatta 200 görüntü mü?
? Çok az örnekle bir veri seti eğitmek için Ultralytics YOLOv5 ve Roboflow kullanın.
Küçük miktarda veri, AI uygulamasında büyük bir zorluktur, dengesiz veri dağılımı dramatik bir şekilde artmaktadır. Ortalama olarak iyi doğruluk sağlayan ML modelleri oluşturabilsek de, bu modeller verilerde daha az sık rastlanan nadir olaylarda hala kötü performans gösterebilir. Andrew Ng’nin AI’nin Kanıt-Kavramından Üretim Açığına Köprü: Üretim kalitesi adlı sunumunda, AI üç ana zorlukla karşı karşıyadır:
1. Küçük Veri
2. Genelleme ve Dayanıklılık.
3. Değişim yönetimi
Neyse ki, araştırma algoritmaları sayesinde, küçük verilerle başa çıkma süreci devam ediyor.
İşte bazı örnekler:
- Sentetik veri üretimi (örneğin, GAN’lar)
- Bir/Az sayıda örnekle öğrenme (örneğin, GPT-3)
- Kendinden denetimli öğrenme
- Transfer öğrenme
- Anomali tespiti
Daha az eğitim örneği, transfer öğrenme ile daha hızlı eğitim süresi
Daha fazla ayrıntı için kontrol edin ve ? wiki’mizi takip ederek deneyin!
Çok az örnekle bir veri seti eğitmek için transfer öğrenme‘yi YOLOv5 ile nasıl kullanacağımıza bakalım. Burada, kendimiz tarafından toplanan küçük bir veri seti ile kamuya açık büyük bir veri seti kullanarak eğitim süresi arasındaki farkı göstereceğiz. Ayrıca, eğitilen modeli, NVIDIA Jetson platformu gibi bir kenar cihazında daha iyi doğrulukla daha hızlı çıkarım yapmak için kullanacağız.
Daha az eğitim örneği
Geleneksel olarak, bir makine öğrenimi modelini eğitmek istiyorsanız, yaklaşık 17112 görüntü içeren Pascal VOC 2012 veri seti gibi bir kamu veri seti kullanırsınız.

Ancak, transfer öğrenme adı verilen bir teknik kullanarak eğitim örneklerinin sayısını azaltabiliriz. Transfer öğrenmede, önce bir önceden eğitilmiş modelden ağırlıklarla bir modeli başlatıyoruz ve ardından ihtiyaç duyduğumuz makine öğrenimi modelini eğitmeye başlıyoruz. Bu blog için, 200 görüntü kadar küçük bir veri seti kullandık.
YOLOv5 nedir?
YOLO, ‘You Only Look Once’ teriminin kısaltmasıdır. Gerçek zamanlı olarak bir görüntüde çeşitli nesneleri tespit eden ve tanıyan bir algoritmadır. YOLOv5, önceki YOLO sürümlerine göre çok daha iyi performans gösteren ve artık PyTorch çerçevesine dayanan en son YOLO sürümüdür.
Ultralytics HUB, kodsuz ÜCRETSİZ YOLOv5 dağıtım aracı!
Modelleri 3 kolay adımda eğitin, ?şimdi deneyin!
Tüm YOLOv5 mimarisi ve modellerine erişim
Aşamalar, herkesin takip edebileceği 3 basit adıma ayrılmıştır: verilerinizi yükleyin, modelinizi eğitin ve ardından gerçek dünyaya dağıtın.
Roboflow: Görüntüleri süper hızlı bir şekilde, doğrudan tarayıcınız içinde etiketleyin.
Görüntüleri etiketlemek için Roboflow kullanıyoruz. Burada doğrudan görüntü veya video içe aktarabiliriz. Eğer bir video içe aktarırsak, bu bir dizi görüntüye dönüştürülecektir. Bu araç çok kullanışlıdır çünkü veri setini “eğitim, doğrulama ve test” olarak dağıtmamıza yardımcı olur. Ayrıca, Roboflow, etiketledikten sonra bu görüntüler üzerinde daha fazla işleme eklememize de olanak tanır. Dahası, etiketlenmiş veri setini YOLOV5 PyTorch formatında kolayca dışa aktarabilir ki bu tam olarak ihtiyacımız olan şeydir!

Daha hızlı eğitim süreleri
Bir makine öğrenimi modelini eğitmek için Pascal VOC 2012 veri seti gibi bir kamu veri seti kullanırsak, eğitimin tamamlanması uzun zaman alır. Sonuçları karşılaştırmak için, kendi veri setimizi 200 görüntü ile ve Pascal VOC 2012 veri setini hem yerel bir PC’de hem de Google Colab ortamında eğittik ve aşağıdaki sonuçları elde ettik.
Yerel eğitim
Burada eğitim, 6GB belleğe sahip bir NVIDIA GeForce GTX 1660 Super Grafik Kartı üzerinde yapıldı ve 100 epoch seçtik.
200 görüntü veri seti ile

Burada 100 epoch çalıştırmak sadece yaklaşık 1 saat sürdü. Bu, kamu veri setleri kullanarak eğitime göre karşılaştırıldığında daha hızlıdır.
Pascal VOC 2012 veri seti ile

1 epoch çalıştırmanın yaklaşık 50 dakika (0.846 saat * 60) sürdüğünü bulduk ve bu nedenle 1 epoch’ta eğitimi durdurduk. 100 epoch için eğitim süresini hesaplarsak, yaklaşık 50 * 100 dakika = 5000 dakika = 83 saat sürecektir ki bu, kendi veri setimiz için eğitim süresinden çok daha uzundur.
Google Colab Eğitimi
Burada, 12GB bellekli bir NVIDIA Tesla K80 Grafik Kartı ile eğitim yapıldı ve 100 epoch seçtik.
200 görüntü veri seti ile

Burada 100 epoch çalıştırmak sadece yaklaşık 42 dakika (0.697 saat * 60) sürdü. Bu, kamu veri setleri kullanarak yapılan eğitimden oldukça daha hızlıdır.
Pascal VOC 2012 veri seti ile

1 epoch çalıştırmanın yaklaşık 9 dakika (0.148 saat * 60) sürdüğünü bulduk ve bu nedenle 1 epoch’ta eğitimi durdurduk. 100 epoch için eğitim süresini hesaplarsak, yaklaşık 9 * 100 dakika = 900 dakika = 15 saat sürecektir ki bu, özel veri seti için eğitim süresinden çok daha uzundur.
Eğitim örnekleri sayısı ve eğitim süresi özeti
Önceki sonuçlardan elde ettiğimiz verilere göre, eğitim örnekleri sayısı ile eğitim süresi arasındaki özet aşağıdadır.
| Veri Seti | Eğitim örnekleri sayısı | Yerel PC’de eğitim süresi (GTX 1660 Super) | Google Colab’da eğitim süresi (NVIDIA Tesla K80) |
|---|---|---|---|
| Özel | 542 | 2.2 saat | 1.3 saat |
| 240 | 1 saat | 42 dakika | |
| Pascal VOC 2012 | 17112 | 83 saat | 15 saat |
| Microsoft COCO 2017 | 121408 | 750 saat | 125 saat |
Daha doğru
Yukarıda açıklandığı gibi 200 görüntü veri seti için eğitimi gerçekleştirdikten sonra elde ettiğimiz doğruluklar şu şekildedir:
Yerel eğitim için yaklaşık %87.9 (mAP) ve %65.3 (mAP) doğruluk elde ettik, oysa bulut eğitim için yaklaşık %88 (mAP) ve %63.6 (mAP) doğruluk elde ettik.
Daha Hızlı Çıkarım
Yukarıdaki veri setini eğittikten ve makine öğrenimi modelini elde ettikten sonra, bir NVIDIA Jetson cihazında çıkarım yaptık. Hem Jetson Nano hem de Jetson Xavier NX üzerindeki sonuçları FP16 kuantizasyon ayarı ile karşılaştırdık ve aşağıdaki sonuçları elde ettik.
Jetson Nano: ortalama yaklaşık 47ms(~21FPS)

Jetson Xavier NX: ortalama yaklaşık 20ms(~50FPS).

Son yenilikler hakkında daha fazla:
NVIDIA Gömülü Sistemleri ile güçlendirilmiş Yeni Edge AI cihazları

reComputer Jetson serisi NVIDIA’nın gelişmiş AI gömülü sistemleri ile inşa edilmiş kompakt edge bilgisayarlardır: Jetson Nano ve Xavier NX. Zengin genişletme modülleri, endüstriyel çevre birimleri, termal yönetim ve Seeed’in on yıllara dayanan donanım uzmanlığı ile birleştirildiğinde, reComputer Jetson, çeşitli AI senaryolarında ortaya çıkan bir sonraki nesil AI ürününü hızlandırmanıza ve ölçeklendirmenize yardımcı olmaya hazırdır.

reComputer Jetson, NVIDIA Jetson yazılım yığını, bulut yerel iş akışları ve sektör lideri AI çerçeveleri ile uyumludur ve kesintisiz AI entegrasyonu sağlamaya yardımcı olur.
Few-shot nesne tespiti ile nasıl oynayacağınızı bize bildirin! Discord #EdgeAI kanalında bizimle tartışın! Gelecekten ne bekliyorsunuz, bize bildirin! Çok az örnekle bir veri seti eğitmek için Ultralytics YOLOv5 ile birlikte bir sonraki transfer öğrenme destekli AI uygulamanıza başlayın. ?

