Lei Feng Net Not: Bu makale, AI Araştırma Enstitüsü tarafından derlenen teknik bir blogdur, orijinal başlık Kaggle # 1 Kazanan Görüntü Sınıflandırma Mücadelesi Yaklaşımıdır ve yazar Kumar Shridhar'dır.
Tercüme | Jingpeng Zhang Xiaotian Jiang Hualie Cheng Lei Redaksiyon | Yuhang Bitirme | BEN
Bitki Fidesi Sınıflandırma Yarışması Şampiyonu
Bu makale Kaggle bitki fidesi sınıflandırma yarışmasına katılmak için kullandığım yöntemi belgeliyor. Birkaç ay üst üste en üst sırada yer aldım ve beşinci sıraya yerleştim. Bu yöntemler çok yönlüdür ve diğer görüntü sınıflandırma görevlerine uygulanabilir.
Kaggle, istatistikçilerin ve veri madencilerinin şirket ve kullanıcılar tarafından yüklenen veri setini tahmin etmek ve açıklamak için en iyi modeli üretmek için yarıştığı öngörücü modelleme ve analiz yarışmaları için bir platformdur. Bu kitle kaynaklı yaklaşım, herhangi bir tahmine dayalı modelleme görevi için sayısız stratejinin olduğu gerçeğine dayanır ve hangi teknik veya analizin en etkili olduğunu önceden bilmek imkansızdır.
Göreve genel bakış
Yabancı otları mahsul fidelerinden ayırt edebilir misiniz?
Etkili çözümler, daha iyi mahsul verimi ve daha iyi çevre yönetimi anlamına gelir.
Aarhus Üniversitesi Sinyal İşleme Grubu ve Danimarka Güney Üniversitesi, farklı büyüme aşamalarında 12 türde yaklaşık 960 bitkinin görüntülerini içeren bir veri seti yayınladı.
Bitki örneklerinden biri: Kuş otu
Bahsi geçen görüntü veri tabanı kamuya açıklanmıştır. Milimetre başına yaklaşık 10 piksel çözünürlüğe sahip açıklamalı RGB görüntüleri içerir.
Sınıflandırma sonuçları, F1 puanlarına dayalı göstergeler kullanılarak değerlendirilir. Veri kümesi bağlantısı URLdedir
Aşağıdaki görüntü, veri kümesindeki 12 sınıfın tümünü açıklayan bir örnektir:
Görüntü sınıflandırma görevi aşağıdaki 5 adımdan oluşur:
Aşama 1:
Makine öğrenimindeki ilk görev, herhangi bir algoritma gerçekleştirilmeden önce veri setini analiz etmektir. Veri setinin karmaşıklığını anlamak için bu adım çok önemlidir ve sonuçta algoritma tasarımına yardımcı olacaktır.
Görsellerin ve sınıfların dağılımı aşağıdaki gibidir:
Yukarıda bahsedildiği gibi, bu 12 kategoride 4750 resim içeriyor. Bununla birlikte, yukarıdan, çeşitli değerlerin dağılımının düzensiz olduğu ve görüntü değerlerinin dağılımının en büyük 654'ten en küçüğüne 221 kadar değiştiği görülebilir. Bu, verilerin eşit olmadığını açıkça gösteriyor, ancak en iyi sonuçları elde etmek için verileri tartmamız gerekiyor. 3. adımda bu görevi yerine getireceğiz.
Her kategorinin görüntü dağılımı
Verileri daha iyi anlamak için artık görüntüyü görselleştirmek önemlidir. Bu nedenle, görüntülerin nasıl farklılaştığını görmek için her sınıfta bazı örnekler göstereceğiz.
Tüm görüntüler aynı görünüyor ve yukarıdaki görüntü grubundan neredeyse hiçbir şey elde edilemiyor. Bu nedenle, görüntü dağılımını gözlemlemek için t-dağıtılmış rastgele komşuluk gömme (t. SNE) adı verilen bir görselleştirme tekniği kullanmaya karar verdim.
t-dağıtılmış rastgele komşuluk gömme (t. SNE), özellikle yüksek boyutlu veri kümeleri için uygun bir görsel boyutluluk azaltma tekniğidir. Bu teknik, tekniğin büyük gerçek dünya veri setlerine uygulanmasına izin veren Barnes-hut yaklaşım modeli ile uygulanabilir.
Veri setinin T-SNE görselleştirmesi
Dikkatli bir gözlemden sonra, kategoriler arasındaki farkı pek göremiyoruz. Bu nedenle, bu verilerin yalnızca insanlar için mi yoksa makine öğrenimi modelleri için mi ayırt edilemez olduğunu anlamak çok önemlidir. Bunun için temel bir kıyaslama yapacağız.
Eğitim ve doğrulama seti
Model karşılaştırması başlamadan önce, verileri eğitim verilerine ve doğrulama veri setlerine bölmemiz gerekir. Doğrulama seti, orijinal test setini test etmeden önce bir test veri seti olarak işlev görür. Bu nedenle, model temel olarak eğitim veri setinde test edilir ve doğrulama setinde test edilir.Bundan sonra, model setin çoklu doğrulamaları ile geliştirilir. Doğrulama setinin sonuçlarından memnun kaldığımızda, modeli gerçek test verilerine uygulayabiliriz. Bunu, modelin doğrulama setimize aşırı mı yoksa yetersiz mi oturduğunu görmek için kullanabiliriz, bu da modeli daha iyi ayarlamamıza yardımcı olabilir.
4750 görsellik veri setini, görsellerin% 80'ini eğitim veri seti ve% 20'sini doğrulama seti olarak tutarak ikiye ayırıyoruz.
Eğitim ve doğrulama verilerinin bölünmesi
Adım 2:
Eğitim setine ve doğrulama setine sahip olduktan sonra, veri setinin kıyaslamasıyla başlıyoruz. Bu, test setine dayalı bir sınıflandırma problemidir Test setindeki her bir örneği 12 kategoriden birine bölmemiz gerekir. Bu nedenle, bu görevi gerçekleştirmek için bir Evrişimli Sinir Ağı (CNN) kullanacağız.
CNN modeli oluşturmanın birçok yolu vardır, ancak başlangıç olarak Keras derin öğrenme kitaplığını kullansak iyi olur. Ayrıca Keras'ta sağlanan önceden eğitilmiş modelleri de kullanacağız. Bu modeller ImageNet veri kümesinde eğitilmiştir ve geçebiliriz Buradaki görevlerimiz için bu modellere ince ayar yapın.
Evrişimli bir sinir ağını sıfırdan eğitmek aslında çok verimsizdir. Bu nedenle, 1000 sınıf ImageNet veri setinde önceden eğitilmiş CNN model parametrelerini kullanırız ve ince ayar sırasında bazı katmanların parametrelerini düzelttik ve diğer katmanların parametreleri buradaki veri setimiz üzerinde çalışmaya devam eder. Bunun nedeni, önceki katmanların bazılarının görüntünün temel özelliklerini öğrenmek için kullanılması, eğitmemize gerek olmaması ve doğrudan görevlerimizde kullanılabilmesidir. Dikkatimize değer önemli bir nokta, veri setimizin ImageNet'e ne kadar benzediğini kontrol etmemiz gerektiğidir. Bu iki veri kümesinin özellikleri, ağda nasıl ince ayar yapmamız gerektiğini belirler. Ağ ince ayarı hakkında ayrıntılı bilgi için lütfen Andrej Karpathy'nin bloguna bakın:
Buradaki örneğimiz için, veri seti küçüktür ve ImageNet'e biraz benzer. Bu nedenle, ağırlıkları ilk olarak doğrudan ImageNet üzerinde kullanıyoruz ve ilk karşılaştırma programımızı oluşturmak için son çıktı katmanını 12 kategoriyle ekliyoruz. Daha sonra, sonraki katmanlardan bazılarını "gevşetmeye" gidiyoruz ve yalnızca bu katmanları eğitiyoruz.
Keras çok sayıda önceden eğitilmiş model sağladığından, ilk karşılaştırma programımızı tamamlamak için Keras'ı kullanacağız ve görevlerimiz için ResNet50 ve InceptionResNetV2'yi kullanacağız. Belirli bir model altında veri setini fazla mı yoksa yetersiz mi sığdırdığımızı anlamak için, bir kıyaslama olarak veri seti için basit bir model ve karmaşık bir model hazırlamak çok önemlidir.
Kıyaslama modelimizi seçmek için bu modellerin ImageNet veri setindeki performansını veya her modelin parametre sayısını da kontrol edebiliriz.
İlk kıyaslama modeli için, son çıktı katmanını kaldırdım ve yalnızca 12 kategoriye karşılık gelen çıktı katmanlarını ekledim. Model özeti burada yayınlanmıştır, parametreleri ve ardından son birkaç katmanın ekran görüntülerini görebiliriz.
İlk kıyaslamayı elde etmek için yoğun bir katman ekledik
Model toplam 10 tur için eğitildi ve sonuçlar 6 turdan sonra doyuruldu. Eğitim setindeki doğruluk% 88'e ulaştı ve doğrulama setindeki doğruluk% 87 idi.
Performansı iyileştirmek için, önceki katmanlardan bazıları "rahattır" ve bu katmanları, katlanarak azalan bir öğrenme oranıyla eğitiyoruz. Bu,% 2 oranında daha da iyileştirilebilir.
Önceki bazı katmanları eğitmenin sonucu
Bu işlemde kullanılan bazı hiperparametreler:
Aşama 3:
İlgili bilgilerle, yukarıdaki modeli iyileştirmek için görüntü verisi miktarını artırmaya çalışabiliriz.
Veriler olmadan makine öğrenimi de olmaz!
Ancak, sahip olduğumuz verilerin veri kategorileri açısından genellikle dengesiz olduğu unutulmamalıdır. Öncelikle bu sorunu ele almalıyız, böylece modelin her bir örneği grubu, az miktarda görüntü verisiyle bile daha iyi sınıflandırma sonuçları elde edebilir.
Gerçek hayatta veri kümeleri nadiren veri dengesini sağlayabilir ve model, azınlık örneklemlerini sınıflandırmada iyi performans göstermez. Bir azınlık örneğinin yanlış sınıflandırılması, genellikle normal sayıda örneğin yanlış sınıflandırılmasından daha pahalıdır.
Veri dengesizliği sorununu çözmek için aşağıdaki iki algoritmayı kullanabiliriz:
1. Dengesiz öğrenme uyarlanabilir sentetik örnekleme algoritması (ADASYN): ADASYN, öğrenmesi daha zor olan daha fazla veri setini sentezler, böylece azınlık örnekleri için daha fazla veri sentezler.
ADASYN algoritmasının temel fikri, farklı azınlık örneklemlerinin veri öğrenmenin zorluğuna göre ağırlık dağılımını sağlamaktır. Öğrenmesi kolay azınlık örnekleriyle karşılaştırıldığında, öğrenmesi daha zor olan azınlık örnekleri için daha fazla veri sentezleyin. Bu nedenle, ADASYN algoritması verileri aşağıdaki iki şekilde iyileştirir: 1) sınıf dengesizliğinin neden olduğu önyargıyı azaltır ve 2) sınıflandırma karar sınırını, öğrenmesi zor olan örneklere uyarlamalı olarak kaydırın.
2. Sentetik Azınlık Yüksek Hızla Örnekleme Algoritması (SMOTE): SMOTE, azınlık sınıfını yüksek hızda örnekleyerek ve çoğunluk sınıfını örnekleyerek en iyi sonuçları elde eder.
Çoğunluk sınıftaki örneklerin yetersiz örneklenmesi ile karşılaştırıldığında, azınlık (anormal) örneklerin aşırı örneklenmesi ve çoğunluk (normal) sınıfın örneklenmesi birleştirilerek daha iyi bir sınıflandırma etkisi (ROC alanında) elde edilir. .
Bu örnek için SMOTE algoritması, ADASYN algoritmasından daha iyi performans gösterir. Veriler dengelendikten sonra, verileri veri kümesini genişletmek için kullanabiliriz.
Ayrıca, aralarında en önemlileri olan bazı veri geliştirme yöntemleri de vardır:
Yakınlaştır
Kırp
Çevir
arkanı dön
tercüme
Gürültüyü artırın
Aydınlatma koşullarını değiştirin
GAN gibi ileri teknoloji
Zaten yukarıdaki tüm teknikleri açıklayan çok iyi bloglar var. Bu nedenle, burada ayrıntılara girmeyeceğim. GAN dışında yukarıda belirtilen tüm veri geliştirme teknikleri burada kullanılmaktadır.
4. Adım:
...
Okumaya devam etmek için lütfen AI Araştırma Topluluğu topluluğumuza gidin: https://club.leiphone.com/page/TextTranslation/618
AI Araştırma Enstitüsü'nde daha heyecan verici içerikler mevcuttur.
Farklı alanlar arasında bilgisayar görüşü, konuşma semantiği, blok zinciri, otonom sürüş, veri madenciliği, akıllı kontrol, programlama dilleri ve diğer günlük güncellemeler bulunur.
Cep telefonu şunlara erişmek için QR kodunu tarayabilir:
Lei Feng Ağı Lei Feng Ağı