Klasik CV şablonu eşleştirmesi üzerinde görsel inceleme görevi için neden evrişimli NN'ler kullanılır?


9

Üzerinde çalıştığımız bir projeye dayanarak ilginç bir tartışma yaşadım: neden bir şablon eşleştirme algoritması üzerinde CNN görsel denetim sistemi kullanıyorsunuz?

Arka plan: Belirli bir nesne tipi "bozuk" / arızalı veya arızalıysa - bu durumda bir PCB devre kartı olup olmadığını saptayan basit bir CNN görüş sisteminin (web kamerası + dizüstü bilgisayar) bir demosunu göstermiştim. CNN modelim, statik bir arka plan üzerinde düzgün ve bozuk devre kartlarının (her birinin yaklaşık 100 görüntüsü) örneklerini gösterdi. Modelimiz, önceden eğitilmiş VGG16'nın ilk birkaç konv / maxpool katmanını kullandı (imagenet üzerinde) ve daha sonra birkaç yoğunlukla birkaç eğitilebilir dışbükey / havuz ekledik ve sınıflandırma için dim-3 bir sıcak kodlanmış vektörlü çıkışa yol açtık : (is_empty, has_good_product, has_defective_product).

Model oldukça kolay bir şekilde eğitildi ve sorun olmadan% 99 validasyona ulaştı; veri setimizin küçük olduğunu bildiğimiz için çeşitli veri artırımı konusunda da eğitim aldık. Pratikte, 10 üzerinden yaklaşık 9 kez çalıştı, ancak aynı devre kartının birkaç rastgele çevirisi / rotasyonu bazen karşı sınıfa yerleştirir. Belki de daha agresif veri artırımı yardımcı olabilirdi. Her neyse, bir prototip konsept projesi için mutluyduk.

Şimdi başka bir mühendis ve meslektaşına sunum yapıyorduk ve NN'lerin bunun için aşırıya kaçtığı argümanını gündeme getirdi, sadece şablon eşleşmesini kullanmalı, neden CNN yapmak istesin ki?

Bazı uygulamalarda (örneğin denetlenecek diğer parçalar) yaklaşımımızın neden daha iyi olabileceğine dair harika bir yanıtımız olmadı. Ortaya koyduğumuz bazı noktalar:

1) Değişmezliklere karşı daha sağlam (örneğin veri genişletme yoluyla)

2) Sistemi geliştirmek için çevrimiçi öğrenme yapabilir (örn. İnsan yazılıma hangi örneklerin yanlış olduğunu söyleyebilir)

3) Klasik bilgisayar görme algoritmalarında olduğu gibi eşikler ayarlamaya gerek yok Sizce bu tür bir denetim görevi için bir CNN sistemi için daha fazla avantaj var mı? Hangi durumlarda şablon eşleşmesinden daha iyi olur?

Derin NN'lerin iş için teknoloji olabileceği zamanlar için birkaç rastgele fikir daha: girişin bir parçası olarak 3D derinlik algılaması gerektiren veya deforme olabilen / gerilebilen / ezilen, ancak yine de "iyi" olabilecek herhangi bir nesne türü ve kusurlu değil (örneğin, doldurulmuş bir hayvan, teller, vb.). Düşüncelerinizi duymak meraklı :)


Derin öğrenme yaklaşımlarını seviyorum ve geleceğin de olduğunu biliyorum. Bununla birlikte, yüksek doğrulukta sonuçlara ihtiyacınız olduğunda, kesin döndürme ve kesin ölçek diyelim, şablon eşleme yine de daha iyi sonuçlar verir. Yaklaşık 0.1 derece / ölçek faktörü hatası veya daha azından bahsediyorum. Derin öğrenme, muhtemelen "en iyi" sonuç olan şeyin "olasılığını" vermeye devam eder, bu nedenle yüksek hassasiyet gerektiğinde yeterli değildir Derin öğrenmeyi kullanarak böyle bir doğruluk elde etmenin bir yolunu bulmak isterim ama yine de herhangi bir algoritma bulamıyorum derin öğrenme kullanarak yüksek hassasiyetli şablon eşleme. Ben herhangi bir görüş / öneriye açık veya
Pablo Gonzalez 5

Yanıtlar:


3

Söz konusu mühendis, uygulamanız için geleneksel CV yöntemleri önerdi, bunu alışkanlıktan çıkardı. Şablon eşleşmeyi kullanmak son derece güncel değildir ve çok kötü performans gösterdiği gösterilmiştir. Ancak, veri kümenizin boyutuna bağlı olarak bir CNN'nin aşırı dolu olduğunu düşünüyorum.

Şablon eşleme nasıl çalışır?

Şablon eşleme , görüntünüzde şablonla yüzde eşleşme sağlayacak bir pencere kaydırır. Yüzde eşleşmesi önceden belirlenmiş belirli bir eşiğin üzerindeyse, eşleşme olduğu varsayılır. Örneğin, bir köpek görüntünüz varsa ve görüntüde bir köpek olup olmadığını belirlemek istiyorsanız, bir köpek şablonunu tüm görüntü alanının etrafında kaydırır ve yeterince büyük bir yüzde eşleşmesi olup olmadığını görürsünüz. Şablonun görüntüyü aynı şekilde üst üste bindirmesini gerektirdiğinden, bu muhtemelen çok düşük performansa neden olacaktır . Uygulamada bunun olasılığı nedir? Çok yüksek değil.

Tek zaman şablonu eşleşmesi yeterli bir tekniktir, tam olarak ne aradığınızı biliyorsanız ve belirli bir sınıfın her örneğinde neredeyse aynı görüneceğinden eminseniz.

Bunun yerine neden makine öğrenimini kullanıyorsunuz?

Makine öğrenimi teknikleri katı değildir. Stmax'ın söylediklerinin aksine, CNN'ler bir veri kümesini çok iyi genelleştirebilir . Bu yüzden çok güçlüler. Köpek örneğini kullanarak, CNN'nin köpek olarak neyin oluştuğunu anlamak için var olan her köpeğin resmini görmesi gerekmez. Bir Google aramasından 1000 resim gösterebilir ve algoritma köpeğinizin aslında bir köpek olduğunu tespit edebilecektir. Makine öğrenme algoritmalarının çok iyi genelleme yapması, tüm eski CV tekniklerinin yerini almasının sebebidir. Şimdi sorun, bir CNN eğitmek için ihtiyaç duyduğunuz veri miktarıdır. Son derece veri yoğundur .

Güçlü bir CNN'yi eğitmek için 100 veri noktasının yeterli olduğunu düşünmüyorum. Önyargıyı sınırlamak için modelin derin karmaşıklığından dolayı örnek sayınızı artırmanız gerekir. Genellikle derin modeller için her özellik için 100 örnek ve sığ modeller için her özellik için 10 örnek öneririm. Her şey özellik alanınıza bağlıdır.

Ne öneririm.

Gerçekte yaptığınız şey anomali tespitidir . Aksi halde iyi durumda olan PCB'lerin sunulacağı birçok örneğiniz var. Kırılmış olanları tespit etmek istiyorsunuz. Bu yüzden bunun yerine bazı anomali tespit yöntemleri denerdim. Uygulanması çok daha basittir ve özellikle çarpık veri kümelerinde sığ modelleri kullanarak iyi sonuçlar alabilirsiniz (1 sınıf fazla temsil edilir).


Kapsamlı yorumunuz için teşekkürler! Anomali tespitini açıklayan (ve muhtemelen demo olan) proje veya makalelerden örnekler verebilir misiniz? Şerefe
JDS

1
İşte anomali tespiti V. Chandola, A. Banerjee ve V. Kumar, "Anomali tespiti: bir anket", ACM Computing Surveys, cilt. 41, hayır. 3, s. 15, 2009.
JahKnows

5

Cevap göreve bağlıdır. Şablon eşleme bazı görevler için kullanılabilir, ancak hepsi için geçerli olmayabilir. CNN'ler potansiyel olarak şablonlarınızdan hiçbiriyle eşleşmeyen görünmeyen girdileri genelleme yeteneğine sahiptir, bu nedenle potansiyel olarak daha iyi genelleme yapabilir.

Ancak CNN'lerin şablon eşleşmesini geçip geçmeyeceği, belirli göreve ve özel olarak neyi başarmaya çalıştığınıza bağlı olacaktır. Bu ampirik bir bilimdir; nihayetinde hangisinin daha iyi sonuç verdiğini bulma yöntemi ikisini de denemektir - ya da deneyen diğerlerinden öğrenmek (örneğin, literatürü okuyarak). Gerçek dünya verileri üzerine ampirik değerlendirmenin yerini alacak bazı teori veya taksonomi bulacağınızı sanmıyorum.


5

Bir NN (ve diğer sınıflandırma yöntemleri) ile karşılaşabileceğiniz bir sorun, sadece belirli kusurları gösterdiğiniz için, gelecekte ortaya çıkacak tamamen yeni / henüz görünmeyen kusurlara nasıl tepki verileceğini bilmeyebileceğidir.

NN'nin "arızalı olmayan PCB'ye benzemeyen herhangi bir şeyin arızalı bir PCB olduğunu" öğrenmesini istiyorsunuz. Peki ya "arızalı bir PCB'ye benzemeyen bir şey arızalı olmayan bir PCB" olduğunu öğrenmişse?

Rastgele konumlarda küçük beyaz bir nokta (veya başka bir küçük pertürbasyon) ekleyerek arızalı olmayan PCB'lerin bazı görüntülerini değiştirmeye çalışabilir ve sinir ağının bu değiştirilmiş görüntüleri sınıflandırmasını sağlayabilirsiniz. Kesinlikle kusurlu olarak sınıflandırmalı, değil mi? Ama muhtemelen bazılarını (ya da oldukça çoğunu) özleyecektir, çünkü daha önce bu tür kusurları görmemişti.

Tamamen yeni kusurları tespit etmek için, anomali tespit yöntemleri / bir sınıf sınıflandırıcı daha fazla olabilir .. trustworty, çünkü daha önce hiç görülmemiş bir şey almaları gerekir.

DW'ın dediği gibi, her iki yöntemi de denemek ve hangisinin daha iyi çalıştığını bulmak zorunda kalacaksınız. Sadece tamamen yeni kusurlar içeren gerçekten iyi bir test setine sahip olduğunuzdan emin olun!

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.