Konturlar boyunca görüntülerde deforme olmayan üç boyutlu nesnelerin tanınması. Google yakın gelecekte resimleri nasıl tanıyacak ve sıralayacak?

  • 28.06.2019
  • öğretici

Uzun zamandır Görüntü Tanıma'nın temellerini içeren genel bir makale, temel yöntemler için bir rehber, bunların ne zaman uygulanacağını, hangi görevleri çözdüklerini, akşamları dizlerimde neler yapılabileceğini ve neyin daha iyi olmadığını anlatan genel bir makale yazmak istedim. 20 kişilik bir ekip olmadan düşünmek.

Uzun zamandır Optik Tanıma üzerine bazı makaleler yazıyorum, bu yüzden ayda birkaç kez çeşitli insanlar bu konuyla ilgili sorularla bana yazıyor. Bazen onlarla farklı dünyalarda yaşadığınızı hissedersiniz. Bir yandan, bir kişinin büyük olasılıkla ilgili bir konuda profesyonel olduğunu anlıyorsunuz, ancak optik tanıma yöntemleri hakkında çok az şey biliyor. Ve en rahatsız edici olan şey, yakın bir bilgi alanından mantıklı olan, ancak Görüntü Tanıma'da tam olarak çalışmayan, ancak bunu anlamadığı ve bir şey anlatmaya başlarsa çok rahatsız olduğu bir yöntemi uygulamaya çalışmasıdır. en temelden. Ve temelden anlatmanın çok uzun bir zaman olduğunu düşünürsek, ki çoğu zaman öyle değildir, daha da üzücü hale gelir.

Bu makale, görüntü tanıma yöntemleriyle hiç ilgilenmemiş bir kişinin, 10-15 dakika içinde kafasında konuyla ilgili dünyanın belli bir temel resmini oluşturabilmesi ve hangi yöne kazması gerektiğini anlayabilmesi için tasarlandı. Burada açıklanan tekniklerin çoğu, radar ve ses işlemeye uygulanabilir.
Her zaman potansiyel bir müşteriye veya Optik Tanıma yapmaya başlamak isteyen bir kişiye anlatmaya başladığımız birkaç ilkeyle başlayacağım:

  • Bir problemi çözerken, her zaman en basitinden gidin. Bir kişiye turuncu bir etiket asmak, bir kişiyi takip etmekten, onu kaskadlarla vurgulamaktan çok daha kolaydır. Daha yüksek çözünürlüklü bir kamera çekmek, süper çözünürlüklü bir algoritma geliştirmekten çok daha kolaydır.
  • Optik tanıma yöntemlerinde problemin titiz bir formülasyonu, sistem programlama problemlerinden çok daha önemlidir: TK'deki fazladan bir kelime işin %50'sini ekleyebilir.
  • Tanıma sorunlarına evrensel çözümler yoktur. Basitçe “herhangi bir yazıyı tanıyacak” bir algoritma oluşturamazsınız. Sokaktaki bir işaret ve bir metin sayfası temelde farklı nesnelerdir. Muhtemelen genel bir algoritma yapmak mümkündür (Google'dan güzel bir örnek), ancak büyük bir ekibin çok çalışmasını gerektirecek ve onlarca farklı alt programdan oluşacaktır.
  • OpenCV, birçok yöntemi olan ve neredeyse her sorunun hacminin %50'sini çözebileceğiniz bir İncil'dir, ancak OpenCV gerçekte yapılabileceklerin sadece küçük bir kısmıdır. Bir çalışmada, sonuçlar yazılmıştır: "Sorun OpenCV yöntemleriyle çözülmez, bu nedenle çözülemez." Bundan kaçınmaya çalışın, tembel olmayın ve mevcut görevi OpenCV şablonlarını kullanmadan her seferinde sıfırdan değerlendirin.
Bir tür evrensel tavsiye vermek ya da keyfi bilgisayar görme sorunlarına çözüm oluşturabileceğiniz bir tür yapının nasıl oluşturulacağını söylemek çok zordur. Bu makalenin amacı, kullanabileceklerinizi yapılandırmaktır. Mevcut yöntemleri üç gruba ayırmaya çalışacağım. Birinci grup ön filtreleme ve görüntü hazırlamadır. İkinci grup, filtreleme sonuçlarının mantıksal olarak işlenmesidir. Üçüncü grup, mantıksal işlemeye dayalı karar verme algoritmalarıdır. Gruplar arasındaki sınırlar çok koşulludur. Bir problemi çözmek için tüm gruplardan yöntemleri uygulamak her zaman gerekli olmaktan uzaktır; bazen iki, bazen bir bile yeterlidir.

Burada sağlanan yöntemlerin listesi tam değildir. Yazmadığım yorumlara eleştirel yöntemler eklemeyi ve her birine 2-3 eşlik eden kelime atfetmeyi öneriyorum.

Bölüm 1. Filtrasyon

Bu grupta, resimlerdeki ilgi alanlarını analiz etmeden vurgulamanıza olanak tanıyan yöntemler yerleştirdim. Bu yöntemlerin çoğu, görüntüdeki tüm noktalara bir tür tek biçimli dönüşüm uygular. Filtreleme düzeyinde, görüntü analiz edilmez, ancak filtrelenen noktalar özel özelliklere sahip alanlar olarak kabul edilebilir.
Eşik ikilileştirme, histogram alanı seçimi
En basit dönüşüm, görüntünün eşik ikilileştirilmesidir. RGB görüntü ve gri tonlamalı görüntü için eşik renk değeridir. Böyle bir dönüşümün yeterli olduğu ideal görevler vardır. Beyaz bir kağıt üzerindeki nesneleri otomatik olarak seçmek istediğinizi varsayalım:




İkilileştirmenin meydana geldiği eşiğin seçimi, ikilileştirme sürecinin kendisini büyük ölçüde belirler. Bu durumda, görüntü ortalama renkle ikilileştirildi. Genellikle ikilileştirme, eşiği uyarlamalı olarak seçen bir algoritma kullanılarak yapılır. Bu algoritma, beklenti veya mod seçimi olabilir. Ve histogramın en büyük zirvesini seçebilirsiniz.

İkilileştirme, bir görüntüyü RGB'de değil HSV'de düşündüğümüz bir durum da dahil olmak üzere, histogramlarla çalışırken çok ilginç sonuçlar verebilir. Örneğin, ilgilendiğiniz renkleri segmentlere ayırın. Bu ilke hem bir etiket dedektörü hem de bir insan derisi dedektörü oluşturmak için kullanılabilir.
Klasik filtreleme: Fourier, LPF, HPF
Radardan filtreleme ve sinyal işlemenin klasik yöntemleri, çeşitli Örüntü Tanıma görevlerinde başarıyla uygulanabilir. Saf görüntülerde neredeyse hiç kullanılmayan radardaki geleneksel yöntem, Fourier dönüşümüdür (daha spesifik olarak, FFT). Tek boyutlu Fourier dönüşümünün kullanıldığı birkaç istisnadan biri görüntü sıkıştırmadır. Görüntü analizi için genellikle tek boyutlu bir dönüşüm yeterli olmaz, çok daha fazla kaynak yoğun iki boyutlu bir dönüşüm kullanmanız gerekir.

Çok az insan bunu gerçekten hesaplar, genellikle yüksek (HPF) veya düşük (LPF) frekanslar için keskinleştirilmiş hazır bir filtre ile ilgilenilen bölgenin evrişimini kullanmak çok daha hızlı ve kolaydır. Böyle bir yöntem, elbette, spektrum analizine izin vermez, ancak belirli bir video işleme görevinde, genellikle bir analize değil, bir sonuca ihtiyaç duyulur.


Düşük geçişi (Gauss filtresi) ve yüksek geçişi (Gabor filtresi) vurgulayan en basit filtre örnekleri.
Görüntünün her noktası için bir pencere seçilir ve aynı boyutta bir filtre ile çarpılır. Böyle bir evrişimin sonucu yeni bir nokta değeridir. Bir alçak geçiren filtre ve bir yüksek geçiren filtre uygularken, aşağıdaki türden görüntüler elde edilir:



dalgacıklar
Ama ya bir sinyalle evrişim için keyfi bir karakteristik fonksiyon kullanırsak? Daha sonra "Dalgacık dönüşümü" olarak adlandırılacaktır. Dalgacıkların bu tanımı doğru değildir, ancak geleneksel olarak, birçok komutta dalgacık analizinin, bu modelin bir modeliyle evrişim kullanarak bir görüntüde rastgele bir modelin aranması olduğu geliştirilmiştir. Dalgacık analizinde kullanılan bir dizi klasik fonksiyon vardır. Bunlar Haar dalgacık, Morlet dalgacık, Meksika şapka dalgacık vb. Daha önceki makalelerimden birkaçının (,) olduğu Haar ilkelleri, iki boyutlu uzay için bu tür fonksiyonlara atıfta bulunur.


Yukarıda klasik dalgacıklara 4 örnek verilmiştir. 3B Haar dalgacık, 2B Meyer dalgacık, Mexican Hat dalgacık, Daubechies dalgacık. Dalgacıkların genişletilmiş yorumunu kullanmanın iyi bir örneği, parlamanın kendisinin dalgacık olduğu gözdeki parlamayı bulma problemidir:

Klasik dalgacıklar genellikle veya sınıflandırmaları için kullanılır (aşağıda açıklanmıştır).
korelasyon
Benim açımdan dalgacıkların böylesine özgür bir yorumundan sonra, onların altında yatan gerçek korelasyondan bahsetmeye değer. Görüntüleri filtrelerken vazgeçilmez bir araçtır. Klasik uygulama, kaymaları veya optik akışları bulmak için video akışı korelasyonudur. En basit kaydırma detektörü aynı zamanda bir anlamda bir fark bağdaştırıcısıdır. Görüntülerin birbiriyle ilişkili olmadığı yerde hareket vardı.

Filtreleme fonksiyonları
İlginç bir filtre sınıfı, işlev filtrelemedir. Bunlar, görüntüdeki basit bir matematiksel işlevi (çizgi, parabol, daire) algılamanıza izin veren tamamen matematiksel filtrelerdir. Orijinal görüntünün her bir noktası için, onu oluşturan bir dizi fonksiyonun çizildiği bir birikimli görüntü oluşturulur. En klasik dönüşüm, çizgiler için Hough dönüşümüdür. Bu dönüşümde, her (x; y) noktası için, y = ax + b doğrusunun (a; b) noktaları kümesi çizilir ve bu eşitlik doğrudur. Güzel fotoğraflar elde ediyoruz:


(ilk artı resimdeki avı ve böyle bir tanımı ilk bulan ve açıklayan içindir, ikinci artı burada gösterileni ilk söyleyen içindir)
Hough dönüşümü, herhangi bir parametrelenebilir işlevi bulmanızı sağlar. Örneğin, bir daire. Herhangi birini aramanıza izin veren değiştirilmiş bir dönüşüm var. Bu dönüşüm matematikçilerin çok hoşuna gidiyor. Ancak görüntüleri işlerken ne yazık ki her zaman çalışmıyor. Çok yavaş hız, ikilileştirme kalitesine çok yüksek hassasiyet. İdeal durumlarda bile başka yöntemlerle idare etmeyi tercih ettim.
Düz çizgiler için Hough dönüşümünün analogu Radon dönüşümüdür. Çok fazla puanın olduğu bir durumda performans avantajı sağlayan FFT ile hesaplanır. Ayrıca, ikilileştirilmemiş bir görüntüye de uygulanabilir.
Konturları filtreleme
Ayrı bir filtre sınıfı, kenarlık ve anahat filtrelemedir. Anahatlar, bir görüntüyle çalışmaktan o görüntüdeki nesnelerle çalışmaya geçmek istediğimizde çok kullanışlıdır. Bir nesne yeterince karmaşık, ancak iyi tanımlanmış olduğunda, genellikle onunla çalışmanın tek yolu konturlarını seçmektir. Konturları filtreleme sorununu çözen bir dizi algoritma vardır:

Canny en sık kullanılır, iyi çalışır ve uygulaması OpenCV'dedir (Sobel de orada, ancak konturlar için daha kötü görünüyor).



Diğer filtreler
Yukarıda, modifikasyonları sorunların% 80-90'ını çözmeye yardımcı olan filtreler bulunmaktadır. Ancak bunların yanı sıra yerel görevlerde kullanılan daha nadir filtreler de var. Böyle onlarca filtre var, hepsini listelemeyeceğim. İlginç olan, radon dönüşümü alanındaki klasik dalgacık filtrasyonu ve analizinin bir alaşımı olan yinelemeli filtreler (örneğin) ve ridgelet ve eğrisel dönüşümlerdir. Işıncık dönüşümü, dalgacık dönüşümü ve mantıksal analiz sınırında güzel bir şekilde çalışır ve konturları vurgulamanıza olanak tanır:

Ancak bu dönüşümler çok özeldir ve nadir görevler için uyarlanmıştır.

Bölüm 2. Filtrasyon sonuçlarının mantıksal işlenmesi

Filtreleme, işlemeye uygun bir dizi veri sağlar. Ancak çoğu zaman bu verileri işlemeden alıp kullanamazsınız. Bu bölümde, görüntüden nesnelerin özelliklerine veya nesnelerin kendilerine geçmenize izin veren birkaç klasik yöntem olacaktır.
morfoloji
Bana göre filtrelemeden mantığa geçiş matematiksel morfoloji yöntemleridir (,). Aslında bunlar, ikili görüntülerin oluşturulması ve aşındırılmasının en basit işlemleridir. Bu yöntemler, mevcut öğeleri artırarak veya azaltarak ikili görüntüdeki paraziti gidermenize olanak tanır. Matematiksel morfolojiye dayalı şekillendirme algoritmaları vardır, ancak genellikle bir tür hibrit algoritma veya algoritmaları birlikte kullanırlar.
Kontur analizi
Sınır alma algoritmaları filtreleme ile ilgili bölümde zaten belirtilmişti. Ortaya çıkan sınırlar oldukça basit bir şekilde konturlara dönüştürülür. Canny'nin algoritması için bu otomatik olarak gerçekleşir; diğer algoritmalar için ek ikilileştirme gereklidir. Örneğin, beetle algoritması ile ikili bir algoritma için bir kontur elde edebilirsiniz.
Anahat, bir nesnenin benzersiz bir özelliğidir. Bu genellikle nesneyi anahat boyunca tanımlamayı mümkün kılar. Bunu yapmanıza izin veren güçlü bir matematiksel aparat var. Cihaza kontur analizi (,) denir.

Dürüst olmak gerekirse, kontur analizini gerçek problemlere uygulamayı hiç başaramadım. Çok ideal koşullar gereklidir. Ya sınır yok ya da çok fazla gürültü var. Ancak, ideal koşullarda bir şeyi tanımanız gerekiyorsa, kontur analizi harika bir seçenektir. Çok hızlı çalışır, güzel matematik ve net mantık.
Özel noktalar
Tekil noktalar, bir nesneyi kendisiyle veya benzer nesne sınıflarıyla ilişkilendirmenize izin veren bir nesnenin benzersiz özellikleridir. Bu tür noktaları vurgulamanın birkaç düzine yolu vardır. Bazı yöntemler, bitişik çerçevelerdeki özel noktaları vurgular, bazıları uzun bir süre sonra ve aydınlatmayı değiştirirken, bazıları nesne döndürüldüğünde bile aynı kalan özel noktaları bulmanızı sağlar. Çok kararlı olmayan, ancak hızlı bir şekilde hesaplanan tekil noktaları bulmamıza izin veren yöntemlerle başlayalım ve sonra artan karmaşıklığa geçelim:
Birinci sınıf. Saniyeler boyunca kararlı olan tekil noktalar. Bu tür noktalar, nesneyi bitişik video kareleri arasında yönlendirmek veya komşu kameralardan gelen görüntüleri birleştirmek için kullanılır. Bu noktalar, yerel görüntü maksimumlarını, görüntü açılarını (detektörlerin en iyisi, belki de Haris dedektörü), dağılım maksimumlarına ulaşıldığı noktaları, belirli gradyanları vb. içerir.
İkinci sınıf. Işık değişimleri ve küçük nesne hareketleri ile stabil olan özel noktalar. Bu tür noktalar öncelikle nesne türlerinin eğitimi ve ardından sınıflandırılması için kullanılır. Örneğin, bir yaya sınıflandırıcı veya bir yüz sınıflandırıcı, bu noktalar etrafında oluşturulmuş bir sistemin ürünüdür. Daha önce bahsedilen bazı dalgacıklar bu tür noktalar için temel olabilir. Örneğin, Haar ilkelleri, kamaşma araması, diğer belirli işlevleri arayın. Bu noktalar, yönlü gradyan histogramı (HOG) yöntemi kullanılarak bulunan noktaları içerir.
Üçüncü sınıf. Kararlı noktalar. Sadece tam stabilite sağlayan iki yöntem ve bunların modifikasyonları hakkında bilgim var. Bu ve. Görüntüyü döndürdüğünüzde bile özel noktalar bulmanızı sağlarlar. Bu tür noktaların hesaplanması diğer yöntemlere göre daha uzun sürer, ancak zaman sınırlıdır. Ne yazık ki, bu yöntemler patentlidir. Rusya'da algoritmalar patentli olmasa da, bunları iç pazar için kullanın.

Bölüm 3. Eğitim

Hikayenin üçüncü bölümü, doğrudan görüntü ile çalışmayan, ancak karar vermenize izin veren yöntemlere ayrılacaktır. Bunlar temel olarak çeşitli makine öğrenimi ve karar verme yöntemleridir. Son zamanlarda Yandyks bu konuda Habr'da yayınladı, çok iyi bir seçim var. İşte metin versiyonunda. Konuyla ilgili ciddi bir çalışma için, onlara bakmanızı şiddetle tavsiye ederim. Burada örüntü tanımada kullanılan birkaç temel yöntemi özetlemeye çalışacağım.
Durumların %80'inde tanıma probleminde öğrenmenin özü şu şekildedir:
Birkaç nesne sınıfından oluşan bir test seti var. Fotoğrafta bir kişinin varlığı/yokluğu olsun. Her görüntü için Haar, HOG, SURF veya bir tür dalgacık gibi bazı özellikler tarafından tanımlanan bir dizi özellik vardır. Öğrenme algoritması, yeni görüntüyü analiz edebileceği ve görüntüde hangi nesnelerin olduğuna karar verebileceği böyle bir model oluşturmalıdır.
Nasıl yapılır? Test görüntülerinin her biri, özellik uzayında bir noktadır. Koordinatları, görüntüdeki özelliklerin her birinin ağırlığıdır. İşaretlerimiz şöyle olsun: "Gözlerin varlığı", "Burun varlığı", "İki elin varlığı", "Kulakların varlığı" vb... insan. Böyle bir alanda bir kişi için nokta doğru olacaktır. Maymun için mesele at içindir. Sınıflandırıcı bir örnek örnek üzerinde eğitilir. Ancak fotoğrafların hepsinin elleri yoktu, diğerlerinin gözleri yoktu ve üçüncüde, sınıflandırıcıdaki bir hata nedeniyle maymunun insan burnu vardı. Eğitimli insan sınıflandırıcı, öznitelik alanını otomatik olarak şu şekilde böler: eğer ilk öznitelik 0,5 aralığındaysa Özünde, sınıflandırıcının amacı, sınıflandırma nesneleri için karakteristik olan alanları özellik uzayında çizmektir. İki boyutlu uzayda sınıflandırıcılardan birinin (AdaBoost) yanıtına ardışık yaklaşım şu şekilde olacaktır:


Birçok sınıflandırıcı var. Her biri kendi görevlerinde daha iyi çalışır. Belirli bir görev için bir sınıflandırıcı seçme görevi birçok yönden bir sanattır. İşte konuyla ilgili bazı güzel resimler.
Basit durum, tek boyutlu ayırma
Özellik uzayı tek boyutlu olduğunda ve 2 sınıfı ayırmamız gerektiğinde, en basit sınıflandırma durumunu örnekle analiz edelim. Durum, tahmin edilenden daha yaygındır: örneğin, iki sinyali ayırt etmeniz veya bir deseni bir örnekle karşılaştırmanız gerektiğinde. Diyelim ki elimizde bir eğitim örneği var. Bu durumda, X ekseninde bir benzerlik ölçüsünün ve Y ekseninde - böyle bir ölçüye sahip olayların sayısı olacağı bir görüntü elde edilir. Aranan nesne kendisine benzediğinde sol Gauss elde edilir. Beğenmediğinde - doğru. X = 0,4 değeri örnekleri bölerek hatalı bir kararın yanlış karar verme olasılığını en aza indirir. Sınıflandırma problemi olan böyle bir ayırıcı arayışıdır.


Küçük bir açıklama. Hatayı en aza indiren kriter her zaman optimal olmayacaktır. Sonraki grafik, gerçek bir iris tanıma sisteminin grafiğidir. Böyle bir sistem için kriter, yetkisiz bir kişinin nesneye yanlış kabulü olasılığını en aza indirecek şekilde seçilir. Bu olasılığa "birinci tür hata", "yanlış alarm olasılığı", "yanlış pozitif" denir. İngilizce literatürde "Yanlış Erişim Oranı".
) AdaBusta en yaygın sınıflandırıcılardan biridir. Örneğin, Haar şelalesi bunun üzerine inşa edilmiştir. Genellikle ikili bir sınıflandırma gerektiğinde kullanılırlar, ancak hiçbir şey sizi daha fazla sayıda sınıf için öğretmekten alıkoyamaz.
SVM (,,,) Birçok uygulamaya sahip en güçlü sınıflandırıcılardan biridir. Temel olarak, karşılaştığım öğrenme görevlerinde adabusta'ya benzer şekilde çalıştı. Yeterince hızlı kabul edilir, ancak eğitimi Adabusta'nınkinden daha zordur ve doğru çekirdeğin seçilmesi gerekir.

Ayrıca sinir ağları ve regresyon vardır. Ancak bunları kısaca sınıflandırmak ve nasıl farklı olduklarını göstermek için bundan çok daha fazla bir makaleye ihtiyaç vardır.
________________________________________________
Umarım matematiğe ve açıklamaya dalmadan kullanılan yöntemlere hızlı bir genel bakış yapmayı başardım. Belki birine yardım eder. Tabii ki, makale eksik olmasına ve stereo görüntülerle çalışma veya Kalman filtreli OLS veya uyarlamalı Bayes yaklaşımı hakkında bir kelime yok.
Makaleyi beğendiyseniz, mevcut ImageRecognition görevlerinin nasıl çözüldüğüne dair bir dizi örnekle ikinci bölümü yapmaya çalışacağım.

Ve sonunda

Ne okumalı?
1) Bir zamanlar B. Yane'nin basit ve net bir şekilde yazılmış, ancak aynı zamanda neredeyse tüm matematiğin sunulduğu "Dijital Görüntü İşleme" kitabını gerçekten beğendim. Mevcut yöntemlere aşina olmak için iyi.
2) Türün klasikleri R. Gonzalez, R. Woods "Dijital Görüntü İşleme"dir. Nedense benim için ilkinden daha zordu. Çok daha az matematik, ancak daha fazla yöntem ve resim.
3) "Makine görme görevlerinde görüntü işleme ve analiz" - PhysTech bölümlerinden birinde verilen bir ders temelinde yazılmıştır. Birçok yöntem ve ayrıntılı açıklamaları vardır. Ancak bence, kitabın iki büyük dezavantajı var: kitap, onunla birlikte gelen yazılım paketine güçlü bir şekilde odaklanıyor, kitapta basit bir yöntemin tanımı çok sık matematiksel bir ormana dönüşüyor, bu da içinden bir şey yapmanın zor olduğu. yöntemin yapısal diyagramı. Ancak yazarlar, neredeyse tüm içeriğin sunulduğu uygun bir site yaptılar - wiki.technicalvision.ru Etiket ekle
  • öğretici

Uzun zamandır Görüntü Tanıma'nın temellerini içeren genel bir makale, temel yöntemler için bir rehber, bunların ne zaman uygulanacağını, hangi görevleri çözdüklerini, akşamları dizlerimde neler yapılabileceğini ve neyin daha iyi olmadığını anlatan genel bir makale yazmak istedim. 20 kişilik bir ekip olmadan düşünmek.

Uzun zamandır Optik Tanıma üzerine bazı makaleler yazıyorum, bu yüzden ayda birkaç kez çeşitli insanlar bu konuyla ilgili sorularla bana yazıyor. Bazen onlarla farklı dünyalarda yaşadığınızı hissedersiniz. Bir yandan, bir kişinin büyük olasılıkla ilgili bir konuda profesyonel olduğunu anlıyorsunuz, ancak optik tanıma yöntemleri hakkında çok az şey biliyor. Ve en rahatsız edici olan şey, yakın bir bilgi alanından mantıklı olan, ancak Görüntü Tanıma'da tam olarak çalışmayan, ancak bunu anlamadığı ve bir şey anlatmaya başlarsa çok rahatsız olduğu bir yöntemi uygulamaya çalışmasıdır. en temelden. Ve temelden anlatmanın çok uzun bir zaman olduğunu düşünürsek, ki çoğu zaman öyle değildir, daha da üzücü hale gelir.

Bu makale, görüntü tanıma yöntemleriyle hiç ilgilenmemiş bir kişinin, 10-15 dakika içinde kafasında konuyla ilgili dünyanın belli bir temel resmini oluşturabilmesi ve hangi yöne kazması gerektiğini anlayabilmesi için tasarlandı. Burada açıklanan tekniklerin çoğu, radar ve ses işlemeye uygulanabilir.
Her zaman potansiyel bir müşteriye veya Optik Tanıma yapmaya başlamak isteyen bir kişiye anlatmaya başladığımız birkaç ilkeyle başlayacağım:

  • Bir problemi çözerken, her zaman en basitinden gidin. Bir kişiye turuncu bir etiket asmak, bir kişiyi takip etmekten, onu kaskadlarla vurgulamaktan çok daha kolaydır. Daha yüksek çözünürlüklü bir kamera çekmek, süper çözünürlüklü bir algoritma geliştirmekten çok daha kolaydır.
  • Optik tanıma yöntemlerinde problemin titiz bir formülasyonu, sistem programlama problemlerinden çok daha önemlidir: TK'deki fazladan bir kelime işin %50'sini ekleyebilir.
  • Tanıma sorunlarına evrensel çözümler yoktur. Basitçe “herhangi bir yazıyı tanıyacak” bir algoritma oluşturamazsınız. Sokaktaki bir işaret ve bir metin sayfası temelde farklı nesnelerdir. Muhtemelen genel bir algoritma yapabilirsiniz (işte Google'dan güzel bir örnek), ancak büyük bir ekibin çok çalışmasını gerektirecek ve onlarca farklı alt programdan oluşacak.
  • OpenCV, birçok yöntemi olan ve neredeyse her sorunun hacminin %50'sini çözebileceğiniz bir İncil'dir, ancak OpenCV gerçekte yapılabileceklerin sadece küçük bir kısmıdır. Bir çalışmada, sonuçlar yazılmıştır: "Sorun OpenCV yöntemleriyle çözülmez, bu nedenle çözülemez." Bundan kaçınmaya çalışın, tembel olmayın ve mevcut görevi OpenCV şablonlarını kullanmadan her seferinde sıfırdan değerlendirin.
Bir tür evrensel tavsiye vermek ya da keyfi bilgisayar görme sorunlarına çözüm oluşturabileceğiniz bir tür yapının nasıl oluşturulacağını söylemek çok zordur. Bu makalenin amacı, kullanabileceklerinizi yapılandırmaktır. Mevcut yöntemleri üç gruba ayırmaya çalışacağım. Birinci grup ön filtreleme ve görüntü hazırlamadır. İkinci grup, filtreleme sonuçlarının mantıksal olarak işlenmesidir. Üçüncü grup, mantıksal işlemeye dayalı karar verme algoritmalarıdır. Gruplar arasındaki sınırlar çok koşulludur. Bir problemi çözmek için tüm gruplardan yöntemleri uygulamak her zaman gerekli olmaktan uzaktır; bazen iki, bazen bir bile yeterlidir.

Burada sağlanan yöntemlerin listesi tam değildir. Yazmadığım yorumlara eleştirel yöntemler eklemeyi ve her birine 2-3 eşlik eden kelime atfetmeyi öneriyorum.

Bölüm 1. Filtrasyon

Bu grupta, resimlerdeki ilgi alanlarını analiz etmeden vurgulamanıza olanak tanıyan yöntemler yerleştirdim. Bu yöntemlerin çoğu, görüntüdeki tüm noktalara bir tür tek biçimli dönüşüm uygular. Filtreleme düzeyinde, görüntü analiz edilmez, ancak filtrelenen noktalar özel özelliklere sahip alanlar olarak kabul edilebilir.
Eşik ikilileştirme, histogram alanı seçimi
En basit dönüşüm, görüntünün eşik ikilileştirilmesidir. RGB görüntü ve gri tonlamalı görüntü için eşik renk değeridir. Böyle bir dönüşümün yeterli olduğu ideal görevler vardır. Beyaz bir kağıt üzerindeki nesneleri otomatik olarak seçmek istediğinizi varsayalım:




İkilileştirmenin meydana geldiği eşiğin seçimi, ikilileştirme sürecinin kendisini büyük ölçüde belirler. Bu durumda, görüntü ortalama renkle ikilileştirildi. Genellikle ikilileştirme, eşiği uyarlamalı olarak seçen bir algoritma kullanılarak yapılır. Bu algoritma, beklenti veya mod seçimi olabilir. Ve histogramın en büyük zirvesini seçebilirsiniz.

İkilileştirme, bir görüntüyü RGB'de değil HSV'de düşündüğümüz bir durum da dahil olmak üzere, histogramlarla çalışırken çok ilginç sonuçlar verebilir. Örneğin, ilgilendiğiniz renkleri segmentlere ayırın. Bu ilke hem bir etiket dedektörü hem de bir insan derisi dedektörü oluşturmak için kullanılabilir.
Klasik filtreleme: Fourier, LPF, HPF
Radardan filtreleme ve sinyal işlemenin klasik yöntemleri, çeşitli Örüntü Tanıma görevlerinde başarıyla uygulanabilir. Saf görüntülerde neredeyse hiç kullanılmayan radardaki geleneksel yöntem, Fourier dönüşümüdür (daha spesifik olarak, FFT). Tek boyutlu Fourier dönüşümünün kullanıldığı birkaç istisnadan biri görüntü sıkıştırmadır. Görüntü analizi için genellikle tek boyutlu bir dönüşüm yeterli olmaz, çok daha fazla kaynak yoğun iki boyutlu bir dönüşüm kullanmanız gerekir.

Çok az insan bunu gerçekten hesaplar, genellikle yüksek (HPF) veya düşük (LPF) frekanslar için keskinleştirilmiş hazır bir filtre ile ilgilenilen bölgenin evrişimini kullanmak çok daha hızlı ve kolaydır. Böyle bir yöntem, elbette, spektrum analizine izin vermez, ancak belirli bir video işleme görevinde, genellikle bir analize değil, bir sonuca ihtiyaç duyulur.


Düşük geçişi (Gauss filtresi) ve yüksek geçişi (Gabor filtresi) vurgulayan en basit filtre örnekleri.
Görüntünün her noktası için bir pencere seçilir ve aynı boyutta bir filtre ile çarpılır. Böyle bir evrişimin sonucu yeni bir nokta değeridir. Bir alçak geçiren filtre ve bir yüksek geçiren filtre uygularken, aşağıdaki türden görüntüler elde edilir:



dalgacıklar
Ama ya bir sinyalle evrişim için keyfi bir karakteristik fonksiyon kullanırsak? Daha sonra "Dalgacık dönüşümü" olarak adlandırılacaktır. Dalgacıkların bu tanımı doğru değildir, ancak geleneksel olarak, birçok komutta dalgacık analizinin, bu modelin bir modeliyle evrişim kullanarak bir görüntüde rastgele bir modelin aranması olduğu geliştirilmiştir. Dalgacık analizinde kullanılan bir dizi klasik fonksiyon vardır. Bunlar Haar dalgacık, Morlet dalgacık, Meksika şapka dalgacık vb. Daha önceki makalelerimden birkaçının (,) olduğu Haar ilkelleri, iki boyutlu uzay için bu tür fonksiyonlara atıfta bulunur.


Yukarıda klasik dalgacıklara 4 örnek verilmiştir. 3B Haar dalgacık, 2B Meyer dalgacık, Mexican Hat dalgacık, Daubechies dalgacık. Dalgacıkların genişletilmiş yorumunu kullanmanın iyi bir örneği, parlamanın kendisinin dalgacık olduğu gözdeki parlamayı bulma problemidir:

Klasik dalgacıklar genellikle görüntüleri sıkıştırmak veya sınıflandırmak için kullanılır (aşağıda açıklanmıştır).
korelasyon
Benim açımdan dalgacıkların böylesine özgür bir yorumundan sonra, onların altında yatan gerçek korelasyondan bahsetmeye değer. Görüntüleri filtrelerken vazgeçilmez bir araçtır. Klasik uygulama, kaymaları veya optik akışları bulmak için video akışı korelasyonudur. En basit kaydırma detektörü aynı zamanda bir anlamda bir fark bağdaştırıcısıdır. Görüntülerin birbiriyle ilişkili olmadığı yerde hareket vardı.

Filtreleme fonksiyonları
İlginç bir filtre sınıfı, işlev filtrelemedir. Bunlar, görüntüdeki basit bir matematiksel işlevi (çizgi, parabol, daire) algılamanıza izin veren tamamen matematiksel filtrelerdir. Orijinal görüntünün her bir noktası için, onu oluşturan bir dizi fonksiyonun çizildiği bir birikimli görüntü oluşturulur. En klasik dönüşüm, çizgiler için Hough dönüşümüdür. Bu dönüşümde, her (x; y) noktası için, y = ax + b doğrusunun (a; b) noktaları kümesi çizilir ve bu eşitlik doğrudur. Güzel fotoğraflar elde ediyoruz:


(ilk artı resimdeki avı ve böyle bir tanımı ilk bulan ve açıklayan içindir, ikinci artı burada gösterileni ilk söyleyen içindir)
Hough dönüşümü, herhangi bir parametrelenebilir işlevi bulmanızı sağlar. Örneğin, bir daire. Herhangi bir şekli aramanıza izin veren değiştirilmiş bir dönüşüm var. Bu dönüşüm matematikçilerin çok hoşuna gidiyor. Ancak görüntüleri işlerken ne yazık ki her zaman çalışmıyor. Çok yavaş hız, ikilileştirme kalitesine çok yüksek hassasiyet. İdeal durumlarda bile başka yöntemlerle geçinmeyi tercih ettim.
Düz çizgiler için Hough dönüşümünün analogu Radon dönüşümüdür. Çok fazla puanın olduğu bir durumda performans avantajı sağlayan FFT ile hesaplanır. Ayrıca, ikilileştirilmemiş bir görüntüye de uygulanabilir.
Konturları filtreleme
Ayrı bir filtre sınıfı, kenarlık ve anahat filtrelemedir. Anahatlar, bir görüntüyle çalışmaktan o görüntüdeki nesnelerle çalışmaya geçmek istediğimizde çok kullanışlıdır. Bir nesne yeterince karmaşık, ancak iyi tanımlanmış olduğunda, genellikle onunla çalışmanın tek yolu konturlarını seçmektir. Konturları filtreleme sorununu çözen bir dizi algoritma vardır:

Canny en sık kullanılır, iyi çalışır ve uygulaması OpenCV'dedir (Sobel de orada, ancak konturlar için daha kötü görünüyor).



Diğer filtreler
Yukarıda, modifikasyonları sorunların% 80-90'ını çözmeye yardımcı olan filtreler bulunmaktadır. Ancak bunların yanı sıra yerel görevlerde kullanılan daha nadir filtreler de var. Bunun gibi onlarca filtre var, hepsini listelemeyeceğim. İlginç olan, radon dönüşümü alanındaki klasik dalgacık filtreleme ve analizinin bir alaşımı olan yinelemeli filtreler (örneğin, bir aktif görünüm modeli) ile ridgelet ve eğrisel dönüşümlerdir. Işıncık dönüşümü, dalgacık dönüşümü ve mantıksal analiz sınırında güzel bir şekilde çalışır ve konturları vurgulamanıza olanak tanır:

Ancak bu dönüşümler çok özeldir ve nadir görevler için uyarlanmıştır.

Bölüm 2. Filtrasyon sonuçlarının mantıksal işlenmesi

Filtreleme, işlemeye uygun bir dizi veri sağlar. Ancak çoğu zaman bu verileri işlemeden alıp kullanamazsınız. Bu bölümde, görüntüden nesnelerin özelliklerine veya nesnelerin kendilerine geçmenize izin veren birkaç klasik yöntem olacaktır.
morfoloji
Bana göre filtrelemeden mantığa geçiş matematiksel morfoloji yöntemleridir (,,). Aslında bunlar, ikili görüntülerin oluşturulması ve aşındırılmasının en basit işlemleridir. Bu yöntemler, mevcut öğeleri artırarak veya azaltarak ikili görüntüdeki paraziti gidermenize olanak tanır. Matematiksel morfolojiye dayalı şekillendirme algoritmaları vardır, ancak genellikle bir tür hibrit algoritma veya algoritmaları birlikte kullanırlar.
Kontur analizi
Sınır alma algoritmaları filtreleme ile ilgili bölümde zaten belirtilmişti. Ortaya çıkan sınırlar oldukça basit bir şekilde konturlara dönüştürülür. Canny'nin algoritması için bu otomatik olarak gerçekleşir; diğer algoritmalar için ek ikilileştirme gereklidir. Örneğin, beetle algoritması ile ikili bir algoritma için bir kontur elde edebilirsiniz.
Anahat, bir nesnenin benzersiz bir özelliğidir. Bu genellikle nesneyi anahat boyunca tanımlamayı mümkün kılar. Bunu yapmanıza izin veren güçlü bir matematiksel aparat var. Cihaza kontur analizi (,) denir.

Dürüst olmak gerekirse, kontur analizini gerçek problemlere uygulamayı hiç başaramadım. Çok ideal koşullar gereklidir. Ya sınır yok ya da çok fazla gürültü var. Ancak, ideal koşullarda bir şeyi tanımanız gerekiyorsa, kontur analizi harika bir seçenektir. Çok hızlı çalışır, güzel matematik ve net mantık.
Özel noktalar
Tekil noktalar, bir nesneyi kendisiyle veya benzer nesne sınıflarıyla ilişkilendirmenize izin veren bir nesnenin benzersiz özellikleridir. Bu tür noktaları vurgulamanın birkaç düzine yolu vardır. Bazı yöntemler, bitişik çerçevelerdeki özel noktaları vurgular, bazıları uzun bir süre sonra ve aydınlatmayı değiştirirken, bazıları nesne döndürüldüğünde bile aynı kalan özel noktaları bulmanızı sağlar. Çok kararlı olmayan, ancak hızlı bir şekilde hesaplanan tekil noktaları bulmamıza izin veren yöntemlerle başlayalım ve sonra artan karmaşıklığa geçelim:
Birinci sınıf. Saniyeler boyunca kararlı olan tekil noktalar. Bu tür noktalar, nesneyi bitişik video kareleri arasında yönlendirmek veya komşu kameralardan gelen görüntüleri birleştirmek için kullanılır. Bu noktalar, yerel görüntü maksimumlarını, görüntü açılarını (detektörlerin en iyisi, belki de Haris dedektörü), dağılım maksimumlarına ulaşıldığı noktaları, belirli gradyanları vb. içerir.
İkinci sınıf. Işık değişimleri ve küçük nesne hareketleri ile stabil olan özel noktalar. Bu tür noktalar öncelikle nesne türlerinin eğitimi ve ardından sınıflandırılması için kullanılır. Örneğin, bir yaya sınıflandırıcı veya bir yüz sınıflandırıcı, bu noktalar etrafında oluşturulmuş bir sistemin ürünüdür. Daha önce bahsedilen bazı dalgacıklar bu tür noktalar için temel olabilir. Örneğin, Haar ilkelleri, kamaşma araması, diğer belirli işlevleri arayın. Bu noktalar, yönlü gradyan histogramı (HOG) yöntemi kullanılarak bulunan noktaları içerir.
Üçüncü sınıf. Kararlı noktalar. Sadece tam stabilite sağlayan iki yöntem ve bunların modifikasyonları hakkında bilgim var. Bunlar SURF ve SIFT'dir. Görüntüyü döndürdüğünüzde bile özel noktalar bulmanızı sağlarlar. Bu tür noktaların hesaplanması diğer yöntemlere göre daha uzun sürer, ancak zaman sınırlıdır. Ne yazık ki, bu yöntemler patentlidir. Rusya'da algoritmalar patentli olmasa da, bunları iç pazar için kullanın.

Bölüm 3. Eğitim

Hikayenin üçüncü bölümü, doğrudan görüntü ile çalışmayan, ancak karar vermenize izin veren yöntemlere ayrılacaktır. Bunlar temel olarak çeşitli makine öğrenimi ve karar verme yöntemleridir. Son zamanlarda Yandyks, bu konuda Habr'da bir kurs yayınladı, çok iyi bir seçim var. İşte metin versiyonunda. Konuyla ilgili ciddi bir çalışma için, onlara bakmanızı şiddetle tavsiye ederim. Burada örüntü tanımada kullanılan birkaç temel yöntemi özetlemeye çalışacağım.
Durumların %80'inde tanıma probleminde öğrenmenin özü şu şekildedir:
Birkaç nesne sınıfından oluşan bir test seti var. Fotoğrafta bir kişinin varlığı/yokluğu olsun. Her görüntü için Haar, HOG, SURF veya bir tür dalgacık gibi bazı özellikler tarafından tanımlanan bir dizi özellik vardır. Öğrenme algoritması, yeni görüntüyü analiz edebileceği ve görüntüde hangi nesnelerin olduğuna karar verebileceği böyle bir model oluşturmalıdır.
Nasıl yapılır? Test görüntülerinin her biri, özellik uzayında bir noktadır. Koordinatları, görüntüdeki özelliklerin her birinin ağırlığıdır. İşaretlerimiz şöyle olsun: "Gözlerin varlığı", "Burun varlığı", "İki elin varlığı", "Kulakların varlığı" vb... insan. Böyle bir alanda bir kişi için nokta doğru olacaktır. Maymun için mesele at içindir. Sınıflandırıcı bir örnek örnek üzerinde eğitilir. Ancak fotoğrafların hepsinin elleri yoktu, diğerlerinin gözleri yoktu ve üçüncüde, sınıflandırıcıdaki bir hata nedeniyle maymunun insan burnu vardı. Eğitimli insan sınıflandırıcı, öznitelik alanını otomatik olarak şu şekilde böler: eğer ilk öznitelik 0,5 aralığındaysa Özünde, sınıflandırıcının amacı, sınıflandırma nesneleri için karakteristik olan alanları özellik uzayında çizmektir. İki boyutlu uzayda sınıflandırıcılardan birinin (AdaBoost) yanıtına ardışık yaklaşım şu şekilde olacaktır:


Birçok sınıflandırıcı var. Her biri kendi görevlerinde daha iyi çalışır. Belirli bir görev için bir sınıflandırıcı seçme görevi birçok yönden bir sanattır. İşte konuyla ilgili bazı güzel resimler.
Basit durum, tek boyutlu ayırma
Özellik uzayı tek boyutlu olduğunda ve 2 sınıfı ayırmamız gerektiğinde, en basit sınıflandırma durumunu örnekle analiz edelim. Durum, tahmin edilenden daha yaygındır: örneğin, iki sinyali ayırt etmeniz veya bir deseni bir örnekle karşılaştırmanız gerektiğinde. Diyelim ki elimizde bir eğitim örneği var. Bu durumda, X ekseninde bir benzerlik ölçüsünün ve Y ekseninde - böyle bir ölçüye sahip olayların sayısı olacağı bir görüntü elde edilir. Aranan nesne kendisine benzediğinde sol Gauss elde edilir. Beğenmediğinde - doğru. X = 0,4 değeri örnekleri bölerek hatalı bir kararın yanlış karar verme olasılığını en aza indirir. Sınıflandırma problemi olan böyle bir ayırıcı arayışıdır.


Küçük bir açıklama. Hatayı en aza indiren kriter her zaman optimal olmayacaktır. Sonraki grafik, gerçek bir iris tanıma sisteminin grafiğidir. Böyle bir sistem için kriter, yetkisiz bir kişinin nesneye yanlış kabulü olasılığını en aza indirecek şekilde seçilir. Bu olasılığa "birinci tür hata", "yanlış alarm olasılığı", "yanlış pozitif" denir. İngilizce literatürde "Yanlış Erişim Oranı".
) AdaBusta en yaygın sınıflandırıcılardan biridir. Örneğin, Haar şelalesi bunun üzerine inşa edilmiştir. Genellikle ikili bir sınıflandırma gerektiğinde kullanılırlar, ancak hiçbir şey sizi daha fazla sayıda sınıf için öğretmekten alıkoyamaz.
SVM (,,,) Birçok uygulamaya sahip en güçlü sınıflandırıcılardan biridir. Temel olarak, karşılaştığım öğrenme görevlerinde adabusta'ya benzer şekilde çalıştı. Yeterince hızlı kabul edilir, ancak eğitimi Adabusta'nınkinden daha zordur ve doğru çekirdeğin seçilmesi gerekir.

Ayrıca sinir ağları ve regresyon vardır. Ancak bunları kısaca sınıflandırmak ve nasıl farklı olduklarını göstermek için bundan çok daha fazla bir makaleye ihtiyaç vardır.
________________________________________________
Umarım matematiğe ve açıklamaya dalmadan kullanılan yöntemlere hızlı bir genel bakış yapmayı başardım. Belki birine yardım eder. Tabii ki, makale eksik olmasına ve stereo görüntülerle çalışma veya Kalman filtreli OLS veya uyarlamalı Bayes yaklaşımı hakkında bir kelime yok.
Makaleyi beğendiyseniz, mevcut ImageRecognition görevlerinin nasıl çözüldüğüne dair bir dizi örnekle ikinci bölümü yapmaya çalışacağım.

Ve sonunda

Ne okumalı?
1) Bir zamanlar B. Yane'nin basit ve net bir şekilde yazılmış, ancak aynı zamanda neredeyse tüm matematiğin sunulduğu "Dijital Görüntü İşleme" kitabını gerçekten beğendim. Mevcut yöntemlere aşina olmak için iyi.
2) Türün klasikleri R. Gonzalez, R. Woods "Dijital Görüntü İşleme"dir. Nedense benim için ilkinden daha zordu. Çok daha az matematik, ancak daha fazla yöntem ve resim.
3) "Makine görme görevlerinde görüntü işleme ve analiz" - PhysTech bölümlerinden birinde verilen bir ders temelinde yazılmıştır. Birçok yöntem ve ayrıntılı açıklamaları vardır. Ancak bence, kitabın iki büyük dezavantajı var: kitap, onunla birlikte gelen yazılım paketine güçlü bir şekilde odaklanıyor, kitapta basit bir yöntemin tanımı çok sık matematiksel bir ormana dönüşüyor, bu da içinden bir şey yapmanın zor olduğu. yöntemin yapısal diyagramı. Ancak yazarlar, neredeyse tüm içeriğin sunulduğu uygun bir site yaptılar - wiki.technicalvision.ru Etiket ekle

Yapay zeka için bir araştırma konusu olarak görüntü tanıma, uzun bir geçmişe ve büyük pratik değere sahiptir. İlk olarak el yazısıyla yazılan sayıların makine tarafından okunması için kullanıldı. Günümüzde, uygulama kapsamı önemli ölçüde genişlemiştir: üretim süreçlerinde ölçümler, kontrol, sıralama ve montajdan ve uzaktan okunan görüntülerin analizi, tıbbi görüntülerden teşhis, deneysel verilerin nicel değerlendirmesi, insan tanımlama, otomatik tasarım ile sona ermektedir. , görüntüleri bir fonksiyon olarak anlama, robotların teknik vizyonu, vb. İnsan imajını tanıma süreci, görsel bilgilerin basit bir şekilde işlenmesi değil, psikolojik faktörlerin önemli bir rol oynadığı karmaşık bir süreçtir. Özellikle, görüntüyü anlama sürecinde anlamsal çıkarım vardır, ancak uygulanması, mantığın ötesine geçen kapsamlı bilgi birikimi ve sezgisel çözümler gerektirir, bu nedenle böyle bir işlemi bir bilgisayarda simüle etmek son derece zordur.

Mevcut görüntü tanıma araçları, tanıma nesnesinin yapay veya doğal olmasına bağlı olarak farklı yöntemler kullanır. İlk durumda, genellikle net bir biçimde ayrı nesnelerle ilgilenirler, bu nedenle çok sayıda çalışma

Konturları ve sınırları tespit ederek veya geometrik kurallar kullanarak üç boyutlu bir şekil çizerek desenleri eşleştirmeye odaklanır. Doğal nesneler arasında, ışık ve gölge ile düzensiz şekilli birçok nesne vardır, bu nedenle genellikle küme analizi kullanılarak homojen alanlara bölünürler ve daha sonra bu alanların şekillerinin özelliklerine dayanarak nesne hakkında bir sonuca varılır. . Ek olarak, son zamanlarda çok sayıda görüntünün işlenmesi temelinde nesnelerin iki ve üç boyutlu biçimlerinin çoğaltılması üzerine birçok araştırma yapılmıştır. Robotikte hareketli görüntüleri gerçek zamanlı olarak işlemek zorunlu hale geliyor, yani tanıma hızı büyük önem taşıyor.

Genel olarak, bir bilgisayar kullanarak görüntü tanıma işlemi aşağıdaki gibidir.

1. Bir kamera veya başka araçlar kullanarak görüntü hakkında bilgi almak ve onu dijital bilgilere dönüştürmek: sonuç olarak, çerçeveler çok sayıda öğeye bölünür ve her öğeye renk ve kontrast atanır.

2. Ön işleme. Gürültü giderme, bir referansla karşılaştırma için normalleştirme, segmentasyon (tanıma için gerekli yerel bilgilerin çıkarılması), vb.

3. İşaretlerin izolasyonu. Görüntü niteliklerinin farklı düzeyleri olabilir. Kesin olarak konuşursak, segmentasyon da özellik çıkarmanın bir parçasıdır. Özellik çıkarma yöntemleri yerel ve küresel olabilir. Yerel yöntemin örnekleri, sınır tespiti, genel kümeleme ve bölge genişletme yöntemidir. Alanlar arasındaki süreksizlikler sınırları tespit etmek için kullanılırken, kümeleme homojen alanların tespitine dayalı bölütlemedir. Her halükarda, görüntü hakkındaki bilgiler ön işleme aşamasında ortadan kaldırılmayan gürültü içerdiğinden, bölütleme sırasında bulanık bilgilerin işlenmesi gereklidir. Özniteliklerin global seçimi, seçilen alanların şekli, özellikleri, göreceli konumu ve diğer özellikleri ile ilgili olarak gerçekleştirilir. Bu prosedür, değerlendirmenin sonraki aşaması için büyük önem taşımaktadır.

4. Anlama ve değerlendirme. Resmi anlama süreci

ya elde edilen kümeleri bilinen modellerle karşılaştırarak sınıflandırma ve tanımlama ya da çıkarımlar kullanarak orijinal nesnenin üç boyutlu bir görüntüsünün oluşturulması olarak adlandırırlar. Bu işlemin sonucu, görüntü tanımanın nihai hedefidir.

Şu anda, görüntü tanıma süreciyle ilgili çok sayıda çalışma yapılmıştır, ancak şu ana kadar elde edilen sonuçlar son derece yetersizdir. Örneğin, karmaşık görüntülerin anlaşılması, sözlü ve video bilgilerinin karşılıklı dönüştürülmesi, eğrisel ve düzensiz şekilli nesnelerin tanınması, bulanık görüntülerin tanınması, yüksek verimli özellik çıkarma, anlamsal çıkarım ve hayal gücü vb. konulara pratik olarak değinilmemiştir. .

Şu anda tanımada benimsenen ana metodolojik yaklaşımlar istatistik, küme analizi, iki değerli mantıkta tümdengelim ve bir dizi diğerleridir, ancak hepsi bir kişinin karakteristiği olan tanıma sürecinden çok uzaktır. Özellik çıkarma, görüntü tanımada en önemli adımdır, ancak aynı zamanda son derece zordur. Gerçekten de, bir görüntü özelliği nedir? Bir karikatür neden bir insana bir fotoğraftan daha çok benzer? Görünüşe göre, insan tanıma sürecinde önemli bir rol, bir bilgisayar için gürültüden başka bir şey gibi görünmeyen, ancak bir şekilde izole edilmiş ve sunulan bilgi tarafından oynanır. Bu tür işaretleri mantıkla değil, bir kişinin duygularıyla belirlemek mümkündür. Ek olarak, bulanık görüntüleri tanırken, işe yarayan analitik beceriler değil, genelleme yeteneğidir, yani. aynı zamanda sezgisel bir süreçtir. Bu tür süreçleri simüle etmek için, subjektif bilgileri işleme yöntemlerini ve makro bilgileri işleme tekniklerini incelemek gerekir. Bulanık görüntü tanıma üzerine araştırmalar yeni başlıyor, ancak şimdi yukarıdaki gereksinimleri karşılayan yeni bir metodolojinin daha da geliştirilmesini bekliyorlar.

Bulanık görüntü tanıma durumunu kısaca ele alalım. Yeterince net bir nesnenin video bilgisi bile gürültü tarafından bozulabileceğinden, bulanık mantık çoğunlukla kenar tespiti için kullanılır. Tipik bir örnek, sınıflandırmadır.

bulanık kümeleme kullanan görüntü öğeleri. Bununla birlikte, kesinlikle özdeş elemanlar nadir olduğundan, "bulanık" kümeleme gereklidir. Referans görüntüye göre dağılmış görüntüleri sınıflandırmak için benzer yöntemler kullanılır (el yazısı karakterlerin tanınması, konuşma vb.).

Konturların doğrudan tespiti ile, filtreler yardımıyla tamamen çözülemeyen gürültü sorunu ortaya çıkar. Ek olarak, kayıp siteleri yenilemek için sonuçlara ihtiyaç vardır. Bunun için, ancak bulanık nitel bir yapıya sahip olan buluşsal kurallar kullanılır. Görüntüyü anlama aşamasına geçildiğinde, yalnızca formda değil, aynı zamanda çözümü için anlambilimde de eşleşmeyi gerektiren görüntülerin daha verimli bulanık karşılaştırması sorunu ortaya çıkar. Özellikle, bu durum, kuralların oluşturulmasının imkansız olduğu X-ışını görüntülerini kullanarak teşhis alanında gelişmektedir.

Aşağıda, bulanık mantık kullanılarak görüntü tanıma üzerine bazı tipik araştırma örnekleri verilmiştir.

Örüntü tanıma, bilgisayarla görme ve makine öğrenimi üzerine bir dizi makaleye devam ediyorum. Bugün size eigenface adlı bir algoritmaya genel bir bakış sunuyorum.

Algoritma, temel istatistiksel özelliklerin kullanımına dayanmaktadır: ortalama (beklenti) ve kovaryans matrisi; Temel bileşenler yöntemini kullanarak. Ayrıca özdeğerler ve özvektörler gibi lineer cebir kavramlarına da değineceğiz (wiki:, eng). Ayrıca çok boyutlu bir uzayda da çalışacağız.
Kulağa korkutucu gelse de, bu algoritma belki de düşündüğüm en basitlerinden biri, uygulaması birkaç düzine satırı geçmiyor, aynı zamanda bir dizi görevde iyi sonuçlar veriyor.


Benim için özyüz ilginç çünkü son 1,5 yıldır, diğer şeylerin yanı sıra, çeşitli veri dizilerini işlemek için istatistiksel algoritmalar geliştiriyorum, burada çoğu zaman yukarıda açıklanan tüm "şeyler" ile uğraşmak zorunda kalıyorum.

Aletler

Yerleşiklere göre, mütevazı deneyimim çerçevesinde, teknik, herhangi bir algoritmayı düşündükten sonra, ancak C / C++ / C# / Python vb. ) matematiksel bir model oluşturun ve bir şeyi saymak için test edin. Bu, gerekli ayarlamaları yapmanıza, hataları düzeltmenize ve algoritma hakkında düşünürken nelerin dikkate alınmadığını keşfetmenize olanak tanır. Bunun için MathCAD kullanıyorum. MathCAD'in avantajı, çok sayıda yerleşik işlev ve prosedürle birlikte klasik matematiksel gösterim kullanmasıdır. Kabaca söylemek gerekirse, matematik bilmek ve formül yazabilmek yeterlidir.

Algoritmanın kısa açıklaması

Makine öğrenimi serisindeki herhangi bir algoritma gibi, önce özyüzün eğitilmesi gerekir, bunun için tanımak istediğimiz yüzlerin görüntüleri olan bir eğitim seti kullanılır. Model eğitildikten sonra, girdi olarak bir görüntü sağlayacağız ve sonuç olarak, şu soruya bir yanıt alacağız: eğitim örneğinden hangi görüntü büyük olasılıkla girdideki bir örneğe karşılık geliyor veya karşılık gelmiyor? herhangi.

Algoritmanın görevi, bir görüntüyü temel bileşenlerin (görüntüler) toplamı olarak temsil etmektir:

Burada Ф i - merkezli (yani eksi ortalama) orijinal örneğin i-inci görüntüsü, w j ağırlıklar ve u j özvektörleridir (özvektörler veya bu algoritma çerçevesinde, özyüzler).

Yukarıdaki resimde, özvektörlerin ağırlıklı toplamı ve ortalamanın eklenmesiyle orijinal görüntüyü elde ediyoruz. Onlar. w ve u'ya sahip olarak, herhangi bir orijinal görüntüyü geri yükleyebiliriz.

Eğitim seti, her boyutun genel temsile belirli bir katkı yapacağı yeni bir alana (ve kural olarak alan, orijinal 2 boyutlu görüntüden çok daha büyüktür) yansıtılmalıdır. Temel bileşenler yöntemi, yeni bir alanın temelini, içindeki verilerin bir anlamda en uygun şekilde yerleştirileceği şekilde bulmanızı sağlar. Anlamak için, yeni uzayda bazı boyutların (diğer adıyla temel bileşenler veya özvektörler veya özyüzler) daha genel bilgileri "taşıyacağını", diğerlerinin ise yalnızca belirli bilgileri taşıyacağını hayal edin. Kural olarak, daha yüksek mertebeden boyutlar (daha küçük özdeğerlere karşılık gelir), en büyük özdeğerlere karşılık gelen ilk boyutlardan çok daha az faydalı (bizim durumumuzda faydalı, tüm örneğin genelleştirilmiş bir görünümünü veren bir şey anlamına gelir) bilgi taşır. Boyutları yalnızca yararlı bilgilerle bırakarak, orijinal örneğin her bir görüntüsünün genelleştirilmiş bir biçimde sunulduğu bir özellik alanı elde ederiz. Bu, çok basitleştirilmiş, algoritmanın fikridir.
Ayrıca, elimizde bir resim varken, onu önceden oluşturulan uzaya eşleyebilir ve örneğimizin eğitim örneğinin hangi görüntüsüne en yakın olduğunu belirleyebiliriz. Tüm verilerden nispeten büyük bir mesafede bulunuyorsa, bu görüntü büyük olasılıkla veritabanımıza ait değildir.

Daha ayrıntılı bir açıklama için Wikipedia'daki Dış bağlantılar listesine bakmanızı tavsiye ederim.

Küçük bir arasöz. Temel bileşen yöntemi yaygın olarak kullanılmaktadır. Örneğin, çalışmamda bunu bir veri dizisindeki belirli bir ölçeğin (zamansal veya uzamsal), yön veya frekansın bileşenlerini seçmek için kullanıyorum. Verileri sıkıştırmak için bir yöntem olarak veya çok boyutlu bir örneğin orijinal boyutunu küçültmek için bir yöntem olarak kullanılabilir.

Model oluşturma

40 farklı kişinin 10 fotoğrafını içeren eğitim örneğini derlemek için Olivetti Araştırma Laboratuvarı (ORL) Yüz Veritabanı kullanıldı:

Algoritmanın uygulanmasını açıklamak için, MathCAD'den fonksiyonlar ve ifadeler içeren ekran görüntülerini buraya ekleyeceğim ve bunlar hakkında yorum yapacağım. Gitmek.

FaceNums, eğitimde kullanılacak bir yüz sayıları vektörünü tanımlar. varNums, varyantın numarasını ayarlar (tabanın açıklamasına göre, her biri aynı yüze ait 10 görüntü dosyasına sahip 40 dizine sahibiz). Eğitim setimiz 4 görselden oluşmaktadır.
Ardından ReadData işlevini çağırıyoruz. Sıralı veri okuma ve görüntüden vektöre dönüştürme (TwoD2OneD işlevi) uygular:

Böylece çıktıda, her sütunu bir vektöre "genişletilmiş" bir görüntü olan bir Г matrisine sahibiz. Böyle bir vektör, boyutun piksel sayısı tarafından belirlendiği çok boyutlu uzayda bir nokta olarak görülebilir. Bizim durumumuzda, 92x112 görüntüler 10304 elemanlı bir vektör verir veya 10304 boyutlu uzayda bir nokta tanımlar.

2. Eğitim setindeki tüm görüntüleri ortalama görüntü çıkararak normalize etmek gerekir. Bu, tüm görüntülerde ortak olan öğeleri kaldırarak yalnızca benzersiz bilgiler bırakmak için yapılır.

OrtalamaImg işlevi, bir ortalama vektörü sayar ve döndürür. Bu vektörü bir görüntüye "daraltırsak", "ortalama bir yüz" görürüz:

Normalize işlevi, her görüntüden bir ortalama vektörü çıkarır ve ortalama örneği döndürür:

3. Bir sonraki adım, eğitim setindeki her görüntü için özvektörleri (diğer adıyla özyüzler) u ve w ağırlıklarını hesaplamaktır. Başka bir deyişle, yeni bir alana geçiştir.

Kovaryans matrisini hesaplıyoruz, ardından temel bileşenleri buluyoruz (bunlar da özvektörlerdir) ve ağırlıkları hesaplıyoruz. Algoritmayı daha iyi tanıyanlar matematiğe girecekler. İşlev, ağırlıklar, özvektörler ve özdeğerlerden oluşan bir matris döndürür. Yeni alana eşlemeniz gereken tüm veriler bu. Bizim durumumuzda 4 boyutlu bir uzay ile çalışıyoruz, eğitim setindeki eleman sayısına göre kalan 10304 - 4 = 10300 boyutları dejenere oluyor, onları hesaba katmıyoruz.

Genel olarak özdeğerlere ihtiyacımız yoktur, ancak onlardan bazı yararlı bilgiler izlenebilir. Onlara bir göz atalım:

Özdeğerler aslında ana bileşenlerin her ekseni boyunca varyansı gösterir (her bileşen uzayda bir boyuta karşılık gelir). Doğru ifadeye bakın, verilen bir vektörün toplamı = 1 ve her bir öğe, verilerin toplam varyansına bir katkıyı temsil ediyor. 1 ve 3 temel bileşenlerin toplamının 0,82 olduğunu görüyoruz. Onlar. 1 ve 3 boyut tüm bilgilerin %82'sini içermektedir. 2. boyut daraltılmıştır ve 4. boyut bilginin %18'ini taşır ve buna ihtiyacımız yoktur.

Tanıma

Model derlenir. test edeceğiz.

24 öğeden oluşan yeni bir seçim oluşturuyoruz. İlk dört eleman eğitim setindeki ile aynıdır. Geri kalanlar, eğitim setinden görüntülerin farklı çeşitleridir:

Daha sonra datayı yükleyip Recognize prosedürüne geçiyoruz. İçinde, her görüntünün ortalaması alınır, temel bileşenlerin uzayına eşlenir ve w ağırlıkları bulunur. w vektörü bilindikten sonra, mevcut nesnelerden hangisine en yakın olduğunu belirlemek gerekir. Bunun için dist işlevi kullanılır (örnek tanıma problemlerinde klasik Öklid mesafesi yerine, başka bir metrik kullanmak daha iyidir: Mahalonobis mesafesi). Bu görüntünün en yakın olduğu nesnenin minimum mesafesini ve indeksini bulur.

Yukarıda gösterilen 24 nesneden oluşan bir örnekte sınıflandırıcının verimliliği %100'dür. Ama bir uyarı var. Orijinal tabanda olmayan bir görüntü girersek, w vektörü hala hesaplanır ve minimum mesafe bulunur. Bu nedenle, minimum mesafe varsa bir O kriteri getirilir.< O значит изображение принадлежит к классу распознаваемых, если минимальное расстояние >Oh, veritabanında böyle bir görüntü yok. Bu kriterin değeri ampirik olarak seçilir. Bu model için O = 2.2'yi seçtim.

Eğitimde olmayan insanlardan bir örnek yapalım ve sınıflandırıcının yanlış örnekleri ne kadar etkili bir şekilde filtreleyeceğini görelim.

24 örnekten 4'ünde yanlış pozitif var. Onlar. verimlilik %83 idi.

Çözüm

Genel olarak basit ve özgün bir algoritma. Bir kez daha, çeşitli şekillerde kullanılabilecek yüksek boyutlu uzaylarda birçok yararlı bilginin "gizli" olduğunu kanıtlıyor.  Diğer gelişmiş tekniklerle birlikte, özyüz, görevleri çözme verimliliğini artırmak için kullanılabilir.

Örneğin, sınıflandırıcı olarak basit bir mesafe sınıflandırıcı kullanıyoruz. Ancak, örneğin daha gelişmiş bir sınıflandırma algoritması uygulayabiliriz.

Dipnot: Ders, görüntü tanıma problemlerinin özelliklerini ve türlerini, görüntü analizi ve tanıma teorisinin temellerini (özellik yöntemi), analojiler yöntemiyle tanımayı tartışır. Pek çok ilginç tanıma problemi arasında, basılı ve el yazısı metinlerin makine okuması problemlerinde tanıma ilkeleri ve yaklaşımı ele alınmaktadır.

Televizyon kameralarıyla donatılmış modern robotlar, gerçek dünyayla çalışacak kadar iyi görebilirler. Ne tür nesnelerin mevcut olduğu, birbirleriyle hangi ilişkilerde oldukları, hangi grupları oluşturdukları, hangi metni içerdikleri vb. hakkında sonuçlar çıkarabilirler. Ancak karmaşık tanıma görevleri, örneğin, benzer üç boyutlu hızlı hareket edenleri tanımak. nesneler veya okunaksız el yazısı metinler, iyileştirme gerektirir, bunların çözümü için yöntem ve araçlar. Bu derste, bazı geleneksel tanıma yöntemlerinin temellerini ele alacağız. İncelememize en sık kullanılanlardan başlayacağız. özellik tanıma yöntemi [ 1.4 ] , [ 4.1 ] .

Örüntü tanıma görevlerinin genel özellikleri ve türleri.

Bir görüntü, incelenen nesnenin veya fenomenin, her bir öğesi karşılık gelen nesneyi karakterize eden özelliklerden birinin sayısal değerini temsil eden bir özellik vektörü ile temsil edilen yapılandırılmış bir açıklaması olarak anlaşılır. Genel yapı tanıma sistemleri ve geliştirme sürecindeki aşamalar Şekil 2'de gösterilmektedir. 4.1.


Pirinç. 4.1.

Tanıma sorununun özü- incelenen nesnelerin belirli bir sınıfa atfedilmelerine izin veren sabit bir sonlu özelliklere sahip olup olmadığını belirlemek.

Tanıma görevleri aşağıdakilere sahiptir: belirli özellikler.

  1. o bilgi görevleri, iki aşamadan oluşur: a) ilk verileri muhasebeleştirmeye uygun bir forma getirmek; b) tanımanın kendisi (bir nesnenin belirli bir sınıfa ait olduğunun göstergesi).
  2. Bu görevlerde şunları yapabilirsiniz: Nesnelerin analojisi veya benzerliği kavramını tanıtmak ve nesnelerin yakınlığı kavramını formüle etmek aynı sınıfa veya farklı sınıflara nesneleri kaydetmek için bir temel olarak.
  3. Bu görevlerde şunları yapabilirsiniz: bir dizi örnek kullanım durumuyla çalışın sınıflandırması bilinen ve resmileştirilmiş açıklamalar şeklinde olan, öğrenme sürecinde göreve uyum sağlamak için tanıma algoritmasına sunulabilir.
  4. Bu görevler için biçimsel teoriler oluşturmak ve klasik matematiksel yöntemleri uygulamak zordur(genellikle doğru bir matematiksel model için bilgi mevcut değildir veya modelin ve matematiksel yöntemlerin kullanılmasından elde edilen faydalar maliyetlerle orantılı değildir).
  5. Bu görevlerde olası "kötü" bilgi(boşluklu bilgi, heterojen, dolaylı, bulanık, belirsiz, olasılıksal).

Aşağıdaki tanıma sorunları türlerini ayırt etmeniz önerilir.

  1. Tanıma görevi, sunulan nesnenin açıklamasına göre belirtilen sınıflardan birine atanmasıdır ( bir öğretmenle öğretmek).
  2. Otomatik sınıflandırma görevi - küme bölme nesneler (durumlar) tanımlarına göre ayrık sınıflar sistemine (taksonomi, küme analizi, öğretmensiz öğrenme).
  3. Tanıma için bilgilendirici bir dizi özellik seçme sorunu.
  4. İlk verileri tanıma için uygun bir forma getirme görevi.
  5. Dinamik tanıma ve dinamik sınıflandırma, dinamik nesneler için 1. ve 2. görevlerdir.
  6. Tahmin problemi, çözümün gelecekte bir noktaya atıfta bulunması gereken problem 5'tir.

Görüntü analizi ve tanıma teorisinin temelleri.

Bir M nesne kümesi verilsin; bu kümede sonlu sayıda alt kümeye (sınıflara) bir bölüm vardır i = (1, m), Nesneler bazı özelliklerin değerleri ile belirtilir x j, j = (1, N). Bir nesnenin tanımı, geçerli değerler kümesinden bir değer alıyorsa standart olarak adlandırılır.

Verilmesine izin ver öğrenme masası(tablo 4.1). Tanıma sorunu, verilen bir nesne ve bir dizi sınıf için, aşağıdaki eğitim bilgilerine göre, ... öğrenme masası sınıflar ve açıklama hakkında tahminleri hesaplayın:

nerede ben = (1, m), - bilinmiyor.

Tablo 4.1. öğrenme tablosu
Bir obje İşaretler ve anlamları Sınıf
x 1 x j x n
...
r11
...
...

Puanların hesaplanmasına dayalı tanıma algoritmalarını düşünün. Öncelik ilkesine dayanırlar (benzer durumlarda, benzer şekilde hareket etmelisiniz).

Tam bir özellik kümesi x 1, ..., x N verilsin. S 1, ..., S k özellik kümesinin bir alt küme sistemini seçelim. Satırlardan rastgele bir dizi özelliği kaldıralım ve elde edilen satırları ,, ...,, ile gösterelim.

Dizelerin benzerliğini değerlendirmemizi sağlayan yakınlık kuralı aşağıdaki gibidir. "Kesilmiş" dizelerin ilk q karakterlerini içermesine izin verin, yani ve Eşikler verildi ..., Dizeler ve en azından form eşitsizlikleri varsa benzer kabul edilir

Değerler ..., tahminlere dayalı algoritma sınıfının modeline parametre olarak dahil edilir.

Nesnenin sınıfa göre değerlendirmesi olsun.

Tanıma için sunulan nesnelerin açıklamaları, sayısal bir puan matrisine çevrilir. Bir nesnenin hangi sınıfa atanacağına ilişkin karar, bir nesnenin (string) tanınma derecesinin belirtilen sınıflara ait olduğu bilinen dizelerle benzerlik derecesinin hesaplanmasına göre verilir.

Tanımlanan tanıma algoritmasını bir örnekle açıklayalım. 10 nesne sınıfı vardır (Şekil 4.2a). İşaretleri tanımlamak için gereklidir öğrenme tablolarıŞekil 'de gösterilen nesne sınıfları için eşikler ve yapı yakınlık tahminleri. 4.2b. Aşağıdaki özellikler önerilir öğrenme tabloları:

x 1 - minimum boyuttaki dikey çizgilerin sayısı;