Dramadan öğrenmeyi unutmayın: Simpsonlar'ın karakterlerini tanımlamak için Keras'ı kullanın | Eğitim + Kod

Wang Xiaoxin Medium'dan derlendi Qubit Üretildi | Genel Hesap QbitAI

Alexandre Attia, Simpsonlar'ın büyük bir hayranıdır. Bir dizi Simpson dramasını izledi ve karakterleri tanıyabilecek bir sinir ağı kurmak istedi.

Ardından, Simpsonlar'daki çeşitli karakterleri tanımlamak için bir sinir ağının nasıl kurulacağını anlamak için makalesini takip edelim.

Bu projeyi gerçekleştirmek çok zor değil, ancak zaman alıcı olabilir çünkü her bir kişinin birden fazla fotoğrafını manuel olarak etiketlemeniz gerekiyor.

Şu anda, İnternette Simpsonlar'ın karakterleri için eğitim veri seti yok, bu yüzden bir eğitim veri seti oluşturmak için çeşitli resimlere açıklama ekliyorum. Bu veri setinin ilk sürümü Kaggle'a bağlandı ve güncellenmeye devam edecek. Umarım bu veri seti herkese yardımcı olabilir.

TensorFlow ile farklı projelerin nasıl oluşturulacağını öğrendikten sonra Keras kullanmaya karar verdim çünkü kullanımı TensorFlow'dan daha kolay ve güçlü bir uyumluluğa sahip arka uç olarak TensorFlow kullanıyor. Keras, Francois Chollet tarafından Python'da yazılmış bir derin öğrenme kitaplığıdır.

Bu makale, bu projeyi tamamlamak için Convolutional Neural Network'e (CNN) dayanmaktadır.CNN, birçok özelliği öğrenebilen çok katmanlı ileri beslemeli bir sinir ağıdır.

Veri setini hazırlayın

Veri setinde şu anda aşağıdaki karakterlerle 18 kategori bulunmaktadır: Homer, Marge, Lisa, Bart, Burns, Grampa, Flanders, Moe, Krusty, Sideshow Bob, Skinner, Milhouse, vb.

Amacım 20 kategoriye ulaşmak, elbette ne kadar çok kategori o kadar iyi. Çeşitli örneklerin boyutları farklıdır ve resimlerin arka planları da farklıdır.Onlar çoğunlukla 4-24. Sezonların bölümlerinden alınmıştır.

Bazı karakterlerin resimleri

Eğitim setinde, her karakter yaklaşık 1000 örnek içerir (bu sayıya ulaşmak için hala verileri etiketlemektedir). Her karakterin mutlaka görüntünün ortasında olması gerekmez, bazen etrafta başka karakterler de vardır.

Karakterlerin örneklem boyutu dağılımı

Label_data.py işlevi aracılığıyla, AVI filmindeki verileri etiketleyebiliriz: kırpılmış resmi (sol veya sağ kısım) veya tam sürümü alın ve ardından karakter adının yalnızca Charles Montgomery Burns için girdi yazma gibi bir kısmını girmemiz gerekir.

Veri eklerken Keras modelini de kullandım. Videonun ekran görüntüsünü alın ve her kare 3 resme, yani sol kısım, sağ kısım ve tam versiyona dönüştürülebilir ve ardından bir algoritma yazarak her resmi sınıflandırın.

Daha sonra bu algoritmanın sınıflandırma etkisini kontrol ettim, manuel olmasına rağmen kademeli bir süreçtir ve özellikle daha seyrek görünen küçük kategorilerdeki insanlar için hız artmaya devam edecektir.

Veri ön işleme

Görüntüyü önceden işlerken, ilk adım örnek boyutunu ayarlamaktır. Veri belleğinden tasarruf etmek için önce örneği float32 türüne dönüştürün ve normalleştirme için 255'e bölün.

Ardından, çeşitli karakterlerin etiketlerini adlardan sayılara dönüştürmek için Keras'ın kendi işlevini kullanın ve ardından bunları vektörlere dönüştürmek için tek sıcak kodlamayı kullanın:

kerasları içe aktar

Ayrıca, veri kümesini bir eğitim kümesine ve bir test kümesine bölmek için sklearn kitaplığının train_test_split işlevini kullanın.

Model oluştur

Şimdi en ilginç kısma geçelim: ağ modelini tanımlamak.

İlk olarak, ReLU etkinleştirme işlevlerine sahip 4 evrişimli katman ve tamamen bağlantılı bir gizli katman içeren bir ileri beslemeli ağ oluşturduk (veri miktarı arttıkça, ağ daha da derinleşebilir).

Bu model, Keras belgesindeki CIFAR örnek modeline benzer ve diğer modelleri test etmek için daha fazla veri kullanılacaktır. Ayrıca, ağın aşırı uymasını önlemek için modele bir bırakma katmanı ekledim. Çıktı katmanında, softmax işlevi, her kategorinin olasılıklarının çıktısını almak için kullanılır.

Kayıp işlevi Kategorik Çapraz Entropidir. Optimize edici optimizer, stokastik gradyan inişinde RMS Prop yöntemini kullanır ve bu noktadaki öğrenme oranını, pencerenin yakınındaki ağırlığın gradyan ortalamasına göre belirler.

Eğitim modeli

Bu model, 32 toplu iş boyutu ile 200 kez eğitim setinde yinelemeli olarak eğitildi.

Mevcut veri setinin çok fazla örneği olmadığı için, Keras kitaplığı kullanılarak hızlı bir şekilde uygulanabilen veri büyütme işlemlerini de kullandım.

Bu aslında resimde küçük açı dönüşü ve gürültü gibi bazı rastgele değişiklikler yapmak içindir, bu nedenle modele giriş örnekleri aynı değildir. Bu, modelin aşırı uymasını önlemeye ve modelin genelleme yeteneğini geliştirmeye yardımcı olur.

datagen = ImageDataGenerator (

Modeli CPU üzerinde eğitmek uzun zaman alıyor, bu yüzden AWS EC2'de GPU kaynaklarını kullanıyorum: her yineleme 8 saniye sürüyor ve toplamda 20 dakika sürüyor. Derin öğrenme modellerini eğitirken bu zaten daha hızlı.

200 yinelemeden sonra, model göstergelerini çizdik, performansın nispeten istikrarlı olduğunu, bariz bir aşırı uyum fenomeni olmadığını ve gerçek doğruluk oranının yüksek olduğunu görebiliriz.

Eğitim sırasında kayıp değeri ve doğru doğrulama seti ve eğitim seti oranı

Değerlendirme modeli

Mevcut örneklem boyutu küçük olduğu için doğru model doğruluğunu elde etmek zordur. Ancak eğitim seti örneklerinin artmasıyla bu, gerçek model performansına daha yakın olacaktır. Çeşitli tanıma sonuçlarını hızlı bir şekilde çıkarmak için sklearn kitaplığını kullanıyoruz.

Her kategorinin tanıma etkisi

Yukarıdaki şekilden de görülebileceği gibi, modelin doğruluğu (f1-skoru) nispeten yüksektir: Lisa dışında, diğer tüm türlerin doğruluğu% 80'i aşıyor. Lisa kategorisinin ortalama doğruluğu% 82'dir, bunun nedeni muhtemelen Lisa'nın örnekteki diğer karakterlerle karıştırılmış olmasıdır.

Her kategorinin çapraz ilişki diyagramı

Aslında, Bart genellikle Lisa örneklerine dahil edilir, bu nedenle düşük doğruluk oranı Bart'tan etkilenebilir.

Doğruluğu artırmak için eşik ekleyin

Modelin doğruluğunu artırmak ve geri çağırma oranını azaltmak için bir eşik ekledim.

Eşiği tartışmadan önce, geri çağırma ve doğruluk arasındaki ilişkiye girelim.

Her kategorinin çapraz ilişki diyagramı

Şimdi doğru tahmin ve yanlış tahminin ilgili verilerini sayın: en iyi olasılık tahmini, en benzer iki karakterin olasılık farkı ve standart sapma STD.

  • Doğru tahmin: maksimum değer 0,83, optimum olasılık farkı 0,773 ve STD değeri 0,21;

  • Yanlış tahmin: Maksimum değer 0.27, optimal olasılık farkı 0.092 ve STD değeri 0.07'dir.

Karakter 1'in tahmin doğruluğu çok düşükse, karakter 2'yi tahmin ederken standart sapma çok yüksekse veya en benzer iki karakter arasındaki olasılık farkı çok düşükse, ağın bu karakteri öğrenmediği düşünülebilir.

Bu nedenle, iki kategori için, doğru tahmini ve yanlış tahmini ayırmak için bir hiper düzlem bulmayı umarak, test setinin 3 göstergesini çizin.

Test setindeki çoklu göstergelerin dağılım grafiği

Yukarıdaki şekilde, doğru tahmin ile yanlış tahmini düz bir çizgi üzerinden veya bir eşik belirleyerek ayırmak kolay değildir. Elbette, yanlış tahmin edilen örneklerin genellikle grafiğin sol alt kısmında olduğu da görülebilir, ancak bu konumda dağıtılmış birçok doğru tahmin edilen örnek de vardır. Bir eşik belirlenirse (en benzer kişiler arasındaki olasılık farkı ve olasılık hakkında), gerçek geri çağırma oranı da azalacaktır.

Hatırlama oranını büyük ölçüde etkilemeden doğruluğu iyileştirmeyi umuyoruz. Bu nedenle, bu dağılım grafiklerini her karakter veya düşük doğruluk oranına sahip bir karakter (Lisa Simpson gibi) için çizmeliyiz.

Ek olarak, kahramanı olmayan veya karakter içermeyen örnekler için bir eşik değeri eklemek iyi sonuç verir. Şu anda, modele bir eşik eklenerek işlenebilecek bir "hiç kimse" kategorisi ekledim. En iyi olasılık tahmini, olasılık farkı ve standart sapma arasında bir denge bulmanın zor olduğunu düşünüyorum, bu yüzden en iyi tahmin olasılığına odaklanıyorum.

En iyi tahmin edilen olasılığın hatırlama oranı ve doğru oranı hakkında

Modelde, hatırlama ve doğruluk arasındaki ilişkiyi dengelemek zordur ve aynı anda hem hatırlamayı hem de doğruluğu geliştirmek imkansızdır. Bu nedenle, tek bir değer genellikle gerçek hedeflere göre artırılır.

Tahmin edilen kategorinin minimum olasılığı için, etkileri karşılaştırmak için F1 skoru, hatırlama ve doğruluğu çizin.

Doğru oran, geri çağırma oranı ve F1 skoru ile tahmin edilen kategorinin minimum olasılığı arasındaki ilişki

Modelin etkisinin farklı karakterlere bağlı olduğu Şekil 10'dan görülebilmektedir. Lisa Simpson kategorisine odaklanın, bu kategoriye minimum 0,2 olasılık eklemek etkiyi artırabilir, ancak tüm kategorileri birleştirdikten sonra, bu eşik tamamen geçerli değildir.

Bu nedenle, küresel etki göz önünde bulundurularak, tahmin edilen kategorinin minimum olasılığı için uygun bir eşik eklenmelidir ve aralık dahilinde olamaz.

İnsanları görsel olarak tahmin edin

12 farklı karakterin gerçek ve tahmini kategorileri

Şekil 11'de, insanları sınıflandırmak için kullanılan sinir ağı iyi çalışıyor, bu yüzden videodaki gerçek zamanlı tahmine uygulanıyor. Pratikte, her resmin tahmin süresi 0.1 saniyeyi geçmez ve saniyede birden çok kare tahmin edilebilir.

İlgili Bağlantılar

1. Simpsonlar'ın karakter veri kümesi:

https://www.kaggle.com/alexattia/the-simpsons-characters-dataset

2. Tam proje kodu:

https://github.com/alexattia/SimpsonRecognition

Bitiş

Bir uyarı

Qubit'ler, otonom sürüşle ilgili alanlarda çalışan öğrenciler veya ön saflardaki mühendisler için otonom bir sürüş teknolojisi grubu oluşturuyor. Li Kaifu, Wang Yonggang, Wang Naiyan Grupta büyük sığırları bekliyorlar. Herkese qubit WeChat (qbitbot) eklemeye hoş geldiniz, ha'ya katılmak için başvurmak için "otomatik sürüş" diyor ~

Panda Bamboo Slip hayranlara davet mektubu! Özel girişimcilerin arkadaş çevresi bu konferans yüzünden kaynıyor!
önceki
LPL Kıtalararası Şampiyonasını kazanın! Taraftarlar "şanslı" RNG'nin MLXG'si ve RW'nin Doinb'i aynı takımda değil
Sonraki
Bu yılki All-Star Maçı 5 büyük göz yaşartıcı hikaye, sadece Zhan Wei bağlantılı değil, Dirk tek bir cümleyle büyüklüğü gösteriyor!
Guoao'nun gözünde Hiddink nedir? Liu Ruofan: Çok tatlı ve şaka yaparak zihniyetimizi ayarlayabilir
Taze almak! Mart ayındaki Cenevre Otomobil Fuarı - göz alıcı yeni BMW X4
PlayerUnknown's Battlegrounds yeni yağmur ormanı haritası, orman için en uygun yer! Ayrıca çok sayıda köprü ücreti talep edebilirsiniz!
İlk All-Star Game MVP'nin efsanevi hayatı, tanrılaştırmaya sonsuz derecede yakın, ancak büyük bir hanedana dipnot görevi görüyor
Liu Ruofan nasıl bir performans sergiledi? Hiddink: Çok iyi performans gösterdi, rekabetçi bir ekip kurduk
Haikou'da beklenmedik trafik sıkışıklığı insanları utanç içinde sahneledi. Uzun mesafeli yolculuk için gerekli ekipman hakkında konuşun
PUBG oynamak için tavuk yemek istiyorsanız, pozitif olmanız gerektiğini kim söyledi! Size bir parça gökyüzü öğretin!
Ünlü rekor, Harden'ın çok yalnız oynadığı ve takım arkadaşlarından hoşnut olmadığı için patladı. Suçu kim üstlenecek, yoksa Harden?
Zall onurla döndü! Li Tie: İlk olarak takıma geldiğimde birlik istedim ve gelecek sezon hedefimi açıkladım
10.000 yuan'a bir bilet alın
Faker bile oynayamaz! Tekrar küresel bir oyuncu olmak için LOL, tarihteki en büyük değişikliği başlattı
To Top