Kaggle yarışmasında beşincilik kazandım, bu deneyimleri sizlerle paylaşıyorum

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ğı

Weichai Yingzhi G3S CVT versiyon konfigürasyonu açıklandı, 77.800'e satıldı
önceki
İki adamın sevdiği ve tüm dünyanın beklediği "Alita: Savaş Meleği" nin perde arkasındaki sır burada
Sonraki
AnTuTu, Ocak ayı fiyat performans listesini yayınladı ve Xiaomi hala en büyük kazanan!
Ebedi düşman yok, Samsung / Apple akıllı TV içeriği konusunda ortaklığa kavuşuyor
Bu konfigürasyonu görünce, imparator olmayı hak ediyorsunuz! Samsung Note 8 nihai konfigürasyon teşhiri
Yeni oyun açılıyor, geleneksel oteller nasıl daha akıllı hale gelebilir?
İşaret, savaş alanının her yerinde yanıyor ve Zhou Yu'nun klonunun analizi
İlk önce yeni Ford Mustang'e bakın veya yeni 10AT'ye yükseltin
Alt markalar cep telefonu pazarında rekabeti yoğunlaştırıyor ve Lenovo, Le Meng markasını yeniden başlatabilir!
Meitu V7 serisi burada! Snapdragon 845 çip ve Lamborghini sınırlı sayıda
"Kaçış Odası" bir buzdan gizli odanın bir parçasını yayınladı, alttaki akım sakinleşiyor!
Tiaz 7 koltuklu versiyon / otomatik şanzıman Nisan ayında piyasaya çıkacak, yıl sonuna kadar 1,6T artış
Kashen ve Luo Dao aslında aynı kadını seviyorlar, özel bir bölüm "Alita" nın yapımının arkasındaki zihniyeti ortaya koyuyor.
Xiaomi, Mi 9'u üç arka kamerayla resmen ısıttı ve MWC 2019'da tanıtılacağını doğruladı!
To Top