TensorFlow hedef tespit API'si ile Pikachu'yu keşfedin!

Lei Feng Net Not: Bu makale, Lei Feng'in altyazı grubu tarafından derlenen teknik bir blogdur, orijinal metin Tensorflow Nesne Algılama kullanan videolarda Pikachu'yu Algılamaktır, yazar Juan De Dios Santos.

Çeviri | Düzenleyen Zhipeng Yu | Xuan Wu

TensorFlow'un birçok işlevi ve aracı arasında, TensorFlow Object Detection API adlı bir bileşen vardır. Bu kütüphanenin işlevi tıpkı adı gibidir, sinir ağını video karesindeki hedefi, örneğin bir görüntüyü tespit etmek için eğitmek için kullanılır.

Önceki çalışmamı gözden geçirmeniz gerekirse, Android cihazlarda Pikachu'yu tanımak için TensorFlow kullanma sürecini anlattım. Ek olarak, bu kütüphaneyi ve farklı mimarilerini ve ilgili özelliklerini tanıttım ve eğitim sürecini değerlendirmek için TensorBoard'un nasıl kullanılacağını gösterdim.

Birkaç ay sonra, videodaki hedefi tespit etmek için doğrudan Python, OpenCV ve TensorFlow kullanmak amacıyla Bikachu'yu tespit etmek için eğittiğim modeli optimize etmeye başladım. Kaynak kodu GitHub'ımdan elde edilebilir.

Bikachu

Bu makale kullandığım adımları açıklıyor. İlk olarak, orijinal modelde bulduğum sorunları ve onu nasıl optimize ettiğimi anlatacağım. Ardından, bu yeni optimize edilmiş modelin nasıl kullanılacağını açıklayacağım ve bir video algılama sistemi kuracağım. Son olarak, birden fazla pikachusu tespit eden iki video göreceksiniz.

Ancak başlamadan önce, işte bazı hızlı testleri gösteren kısa bir gif.

Bikachu tespit edildi

Bu Bikachu

Model optimizasyonu

Yukarıda da bahsettiğim gibi, önceki çalışmamda Kach algılama modeli üzerine başlangıç eğitimi vermiştim.Bu modelin amacı, Android cihazlarda veya Python dizüstü bilgisayarlarda Pikachu tespiti yapmaktır. Ancak, sistemi optimize etmeme neden olan bu modelin performansından tamamen memnun olmadığım için bu yazıyı yazdım.

O sıralar asıl endişem bu sistemi inşa etmek için kullanılan Bikachus sayısı 230'du. Bunun% 70'i eğitim için, kalan% 30'u ise test için kullanılıyor. Bu nedenle eğitim için kullanılan sayı çok fazla değil. Bu teknik bir sorun olmamasına rağmen (çünkü model "okayish" yürüttüğü için) eğitim setine 70 görsel ekledim (toplam sayı hala çok değil ama hiç yoktan iyidir ).

Sonuç olarak artık daha fazla resmim olduğu için sıfırdan başlamak yerine bu modelin eğitimini uzatmam gerekiyor. Önceki modelin eğitim kontrol noktasını kullandım ve daha sonra kontrol noktasından devam ettim; eski 15.000 kez ve yenisi 20.000 kez eğitildi. Aşağıdaki iki grafik (TensorBoard'dan elde edilen) genel kayıp ve doğruluğu göstermektedir; açıkçası, 15.000'den 20.000'e (özellikle kayıp açısından) çok fazla değişiklik yoktur.

kayıp

Hassas

Yaptığım son (ve küçük) düzeltme, Android uygulamasının algılama eşiğini değiştirmekti. Varsayılan değer 0,6'dır, 0,85'e yükselir.

Bu optimizasyon bir şeyi değiştirdi mi? Doğrulama önyargımı bir kenara bıraksak bile, evet diyebilirim. Küçük bir optimizasyon fark ettim. Fark ettiğim en büyük değişiklik, Android uygulamalarındaki yanlış pozitiflerin sayısının azalması, çünkü bu nesnelerin sarı noktalara benzemesi; elbette bunun nedeni de eşiğin artması olabilir.

Şimdi, videodaki Bikachu'yu tespit etmek için en son ve optimize edilmiş modeli kullanın. Devam etmeden önce, tüm model dondurma ve içe aktarma sürecini göz ardı edeceğimi açıklamam gerekiyor, çünkü önceki çalışmamda zaten cevaplamıştım.

Videodan algıla

Videodan hedef tespiti duyulduğu kadar zor veya tuhaf değildir. Bir meslekten olmayan kişinin bakış açısından, bir videonun sırayla düzenlenmiş bir dizi görüntü olduğunu söyleyebiliriz, bu nedenle bir videodan hedef tespiti normal bir görüntüdeki algılamaya çok benzer. Neden çok benzerler? Videonun doğası gereği, video karelerinin işlenmesi ve hazırlanması, videoyu algılama modeline girmeden önce çok sayıda adım gerektirir. Bunu ilerleyen bölümlerde açıklayacağım ve ayrıca tespit sürecini ve bunları göstermek için yeni bir videonun nasıl oluşturulacağını açıklayacağım.

Kodumun çoğu TensorFlow hedef tespit deposu tarafından sağlanan Python not defterine dayanıyor. Bu kodlar, zor işlerin çoğunu yapar, çünkü algılama sürecini basitleştirebilecek birçok işlevi içerir. Aşağıdaki paragrafları okumanız için Komut Dosyama bir kılavuz olarak bakmanızı öneririm.

Üst düzey bir bakış açısıyla, bu kod üç ana görevi içerir:

Kaynakları yükle

İlk olarak, dondurulmuş model, veri etiketleri ve video yüklenmelidir. Basit olması açısından, kısa, orta boyutlu bir video öneririm çünkü tüm filmi işlemek çok zaman alır.

Video boyunca ilerleyin

Bu komut dosyasının ana işlevi, videonun her karesinden geçen bir döngüye dayanır. Her geçiş sırasında çerçeve okunur ve renk alanı değiştirilir. Sonra, tüm o güzel sarı Pikachusları bulmak için gerçek inceleme işlemini gerçekleştirin. Sonuç, Pikachu'nun konumunun sınır koordinatlarını (eğer bulunursa) ve tespit sonucunun güvenirliğini döndürmektir. Daha sonra, güvenirlik seviyesi verilen eşikten yüksek olduğu sürece, Pikachu'nun konumunun sınırlayıcı kutusunu içeren video karesinin bir kopyası oluşturulacaktır. Bu proje için% 20 gibi çok düşük bir güven eşiği belirledim Yanlış pozitiflerin sayısının çok düşük olduğunu bulduğum için daha fazla Pikachu tespit etmek için performans riskini almaya karar verdim.

Yeni video oluştur

Önceki adımlarda, yeni oluşturulan çerçevelerin bir kopyasıyla yeni bir video yeniden oluşturulur ve bu çerçeveler algılanan sınırlayıcı kutuları taşır. Bu videoyu oluşturmak için, VideoWriter nesnesini kullanmanız gerekir, her geçiş yaptığınızda, çerçevenin bir kopyası bu nesneye (ses olmadan) yazılacaktır.

sonuçlar ve tartışma

Bu iki video, modelin işleyiş sürecini göstermektedir:

İlk videonun tespiti çok iyi. Pikachu video boyunca ketçap şişesini tutsa da bu model çoğu sahnede ketçap şişesini algılayabilir. Öte yandan, 0:22 de tespit edilemeyen bir tane vardı.Ayrıca, "tırpan" ın (yeşil mantis görüntüsü) ketçap şişesini kırdığı atış (0:40 ila 0:44) yanlış bir alarmdı.

İkinci videoda bu modelin performansı ilk videodaki kadar iyi değil. Asıl sorun videoda iki Pikachu sahnesinin görünmesidir. Bu durumda, model iki Pikachus'u ayrı ayrı değil, tek olarak algılıyor gibi görünüyor. Açık bir örnek 0: 13'te, iki Pikachus birbirine tokatlandı (üzücü sahne: (, biliyorum).

Özet ve inceleme

Bu makalede, videolarda Bikachu'yu tespit etmek için TensorFlow nesne algılama kitaplığının nasıl kullanılacağını anlattım. Makalenin başında, Android cihazlarda hedef tespiti yapmak için modelin erken bir sürümünü kullanarak önceki çalışmalarımdan bazılarını tanıttım. Modele gelince, yapması gereken işi yapmış olsa da çözmek istediğim bazı problemler vardı; bu optimizasyonlar projeyi tamamlamamı ve video için bir algılama modeli oluşturmamı sağladı.

Yeni model beklendiği gibi çalışıyor. Tabii ki, yanlış yargılara yol açan veya Bikachu'yu tespit edemeyen az çok eksiklikler var, ancak model yine de yapması gerekeni yaptı. Gelecekteki bir çalışma yönü olarak, eğitim setine farklı açılardan daha fazla Bikachu görüntüsü ekleyeceğim. Örneğin, yandan görünüm ve arkadan görünüm görüntüleri, mükemmel performans elde etmek için veri çeşitliliğini artırır.

Okuduğunuz için teşekkürler. Umarım bu rehber makalesi size yardımcı olabilir.

Kaynak https://towardsdatascience.com/detecting-pikachu-in-videos-using-tensorflow-object-detection-cd872ac42c1d

Lei Feng Ağı Lei Feng Ağı

Guangzhou Otomobil Fuarı Exploration Pavilion: Mini yeni 7 Serisi gibi BMW Brilliance 1 Serisi sedan versiyonu
önceki
JD.com cep telefonu pil patlama sigortasını başlattı: Huawei, Samsung ve Xiaomi ayrımcılığa maruz kaldı
Sonraki
55 yaşında güçlü bir şekilde geri gel, yeniden davran? Netizenler kör: 404 senin kadar iyi değil!
Zaobao: Xiaomi 8 şeffaf keşif sürümü güncellemesi / Razer yeni ürünler yayınladı
Mandarin seviyesinden dolayı netizenler tarafından şikayet edildi: Nubia Z17 konferansının tek eksikliği
Belki bu adidas Stan Smith'in piyasaya sürülmesinden sonra, birden fazla "yeşil kuyruk" olacak!
Guangzhou Otomobil Fuarı Pavyonu: Yeni Mondeo hibrit versiyonu aynı anda görücüye çıkıyor
"Yenilmez Yıkım Kralı 2" 23 Kasım'da ülke çapında hayal gücüyle dolu olacak
Bu bir patlama! Gençler için en kişiselleştirilmiş 6 moda önerisi
Telefonu kapatmak! Gençlerin üçte biri aslında "partiye geç uyuyor", bakım için ayda 3,500 harcamaya razı!
Güçlü gece çekimi / ultra geniş açı, fotoğraf çekmek için bu telefonlara bakmanız gerekiyor
LEGO'nun bir çocuk oyuncağı olduğunu kim söyledi? Bir metre yüksekliğinde yeni bir roket satın alırsanız, arkadaşlarınızdan beğeni alabilirsiniz
Nesnelerin İnterneti'nin girişinde dururken, 100 milyar akıllı ev pazarı nasıl elde edilir?
Genç gözleri çekmek, 2017 Ankewei'yi test etmek
To Top