Yapay sinir ağları için görüntüler nasıl hazırlanır / genişletilir?


41

Görüntü sınıflandırması için bir sinir ağı kullanmak istiyorum. Önceden eğitilmiş CaffeNet ile başlayacağım ve uygulamam için eğiteceğim.

Giriş görüntülerini nasıl hazırlamalıyım?

Bu durumda, tüm görüntüler aynı nesneye aittir, ancak varyasyonları vardır (düşün: kalite kontrol). Bunlar biraz farklı ölçeklerde / çözünürlüklerde / mesafelerde / aydınlatma koşullarında (ve çoğu durumda ölçeği bilmiyorum). Ayrıca, her resimde ağ tarafından göz ardı edilmesi gereken ilgilenilen nesnenin etrafında bir alan (bilinen) vardır.

Örneğin, ilgilenilen nesnenin bir kısmını ve yok sayılan alanın hiçbirini içermediği garanti edilen her görüntünün merkezini kırpabilirim; ancak bu bilgiyi ortadan kaldıracak gibi görünüyor ve ayrıca sonuçlar gerçekten aynı ölçekte olmayacaktı (belki 1.5x varyasyon).

Veri kümesi büyütme

Rasgele mahsul / ayna / etc ile daha fazla eğitim verisi yarattığımı duydum, bunun için standart bir yöntem var mı? Sınıflandırıcı doğruluğunda ne kadar gelişme sağladığına dair herhangi bir sonuç var mı?

Yanıtlar:


35

Yapay Sinir Ağları ile ilgili fikir, az ön işleme ihtiyaç duymalarıdır, çünkü ağır kaldırma özellikleri öğrenmekten sorumlu olan algoritma tarafından gerçekleştirilir.

Data Science Bowl 2015'in kazananları yaklaşımlarıyla ilgili çok iyi bir yazıya sahipler, bu nedenle bu cevap içeriğinin çoğu şunlardan alındı: Derin sinir ağları ile planktonların sınıflandırılması . Özellikle ön işleme ve veri büyütme ile ilgili bölümü okumanızı öneririm .

- Görüntüleri Yeniden Boyutlandır

Farklı boyutlarda, çözünürlüklerde veya mesafelerde ise aşağıdakileri yapabilirsiniz. Her görüntünün en büyük tarafını sabit bir uzunlukta yeniden ölçeklendirebilirsiniz.

Başka bir seçenek openCV veya scipy kullanmaktır. ve bu, görüntünün 100 sütun (genişlik) ve 50 satır (yükseklik) olacak şekilde yeniden boyutlandırılmasını sağlar:

resized_image = cv2.resize(image, (100, 50)) 

Diğer bir seçenek ise scipy modülünü kullanarak şunları kullanmaktır:

small = scipy.misc.imresize(image, 0.5)

- Veri Büyütme

Veri Büyütme, miktarın veri kümesine bağlı olmasına rağmen performansı her zaman iyileştirir. Verileri yapay olarak veri setinin boyutunu artırmak için arttırmak istiyorsanız, aşağıdaki durumlarda uygulayabilirsiniz: (örneğin, evlerin veya insanların 180 derece döndürürseniz tüm bilgileri kaybedecekleri yerlerdeki görüntüler olsa geçerli olmaz) ama onları bir ayna gibi çevirirseniz değil):

  • dönme: 0 ° ile 360 ​​° arasında açı ile rastgele (düzgün)
  • çeviri: -10 ile 10 piksel arasında değişen (rasgele) rastgele
  • yeniden ölçeklendirme: 1 / 1.6 ile 1.6 arasında ölçek faktörü ile rasgele (log -iform)
  • saygısız: evet veya hayır (bernoulli)
  • kesme: -20 ° ile 20 ° arasında açı ile rastgele (üniforma)
  • germe: 1 / 1.3 ve 1.3 (log -iform) arasındaki germe faktörü ile rastgele

Sonuçları Data Science'ın kase resimlerinde görebilirsiniz.

Önceden işlenmiş görüntüler

Önceden işlenmiş görüntüler

aynı görüntülerin artırılmış sürümleri

görüntü tanımını buraya girin

-Diğer teknikler

Bunlar, aydınlatma gibi diğer görüntü özellikleri ile ilgilenecektir ve zaten basit bir ön-işlem basamağı gibi ana algoritma ile ilgilidir. Listenin tamamını kontrol edin: UFLDL Eğitimi


1
Renk, veri artışına bakmaya da değer.
David C. Bishop,

Dönme ve kesme vb. Kodunu da paylaşabilir misiniz? @wacax
Arsenal Fanatik

Veri büyütme için keras benzeri bir paket kullanabilirsiniz.
Ricardo Cruz

2
Scipy.misc modülünün içe aktarılmasıyla ilgili sorun yaşayan herkes için. İhtiyacın var import scipy.misc. stackoverflow.com/questions/13581593/…
eleijonmarck

Görüntü yeniden boyutlandırmaya gelince, en son kullanılan yöntemlerde hangi yöntem kullanılır, örneğin ImageNet'te kullanılanlar?
HelloGoodbye

2

Wacax'ın cevabı tam ve gerçekten açıklayıcı olsa da, bu cevaba herhangi birinin tökezlemesi durumunda birkaç şey eklemek istiyorum.

Her şeyden önce, en scipy.miscgörüntüsü ilişkili işlevler ( imread, imsave, imresizeerc) ya lehine önerilmemektedir olmuştur ImageIO veya skimage .

İkinci olarak, herhangi bir artırma görevi için python kütüphanesi imgaugunu şiddetle tavsiye ederim . Kullanımı gerçekten kolaydır ve kullanmak isteyebileceğiniz neredeyse tüm büyütme tekniklerine sahiptir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.