AlexNet, görüntü sınıflandırması için evrişimli bir sinir ağıdır. Sinir Ağları ile Temel Araştırma Örüntü Tanıma

  • 29.06.2020

Biçimlendirilmesi zor sorunları çözmenin araçlarından biri olarak oldukça fazla şey söylendi. Ve burada, Habré'de, captcha'yı kırma göreviyle ilgili olarak bu ağların görüntü tanıma için nasıl kullanılacağı gösterildi. Bununla birlikte, oldukça az sayıda sinir ağı türü vardır. Ve klasik tam bağlantılı sinir ağı (FNN), görüntü tanıma (sınıflandırma) sorunu için yeterince iyi mi?

1. Görev

Böylece, görüntü tanıma problemini çözeceğiz. Yüzlerin, nesnelerin, karakterlerin vb. tanınması olabilir. İlk önce el yazısıyla yazılan rakam tanıma sorununu ele almayı öneriyorum. Bu görev birkaç nedenden dolayı iyidir:

    El yazısı bir karakteri tanımak için resmileştirilmiş (akıllı olmayan) bir algoritma oluşturmak oldukça zordur ve bu açıkça ortaya çıkar, kişinin yalnızca farklı kişiler tarafından yazılan aynı sayıya bakması yeterlidir.

    Görev oldukça alakalı ve OCR (optik karakter tanıma) ile ilgili

    İndirme ve deneme için ücretsiz olarak dağıtılan, el yazısı sembollerden oluşan bir veritabanı vardır.

    Bu konuda epeyce makale var ve farklı yaklaşımları karşılaştırmak çok kolay ve kullanışlı.

MNIST veri tabanının girdi verisi olarak kullanılması önerilmektedir. Bu veritabanı 60.000 eğitim çifti (resim - etiket) ve 10.000 test çifti (etiketsiz görüntüler) içerir. Görüntüler boyut olarak normalleştirilir ve ortalanır. Her basamağın boyutu 20x20'den fazla değildir, ancak 28x28 boyutunda bir kareye yazılmıştır. MNIST eğitim setinden ilk 12 hanenin bir örneği şekilde gösterilmiştir:

Böylece, görev aşağıdaki gibi formüle edilmiştir: El yazısı karakterleri tanımak, görüntülerini girdi olarak almak ve 10 çıktıdan birini etkinleştirmek için bir sinir ağı oluşturun ve eğitin. Aktivasyon ile çıktıdaki 1 değerini kastediyoruz. Kalan çıktıların değerleri (ideal olarak) -1'e eşit olmalıdır. Bunun neden bir ölçek kullanmadığını daha sonra açıklayacağım.

2. "Normal" sinir ağları.

Çoğu insan, "sıradan" veya "klasik" sinir ağlarından, hata geri yayılımlı tamamen bağlı ileri beslemeli sinir ağlarını anlar:

Adından da anlaşılacağı gibi, böyle bir ağda, her nöron birbirine bağlıdır, sinyal sadece giriş katmanından çıkış katmanına doğru gider, yineleme yoktur. Böyle bir ağa kısaltılmış PNS diyeceğiz.

İlk önce veriyi girdiye nasıl göndereceğinize karar vermeniz gerekir. PNS için en basit ve neredeyse alternatif olmayan çözüm, iki boyutlu görüntü matrisini tek boyutlu bir vektör olarak ifade etmektir. Şunlar. 28x28 el yazısıyla yazılmış bir rakam görüntüsü için, zaten oldukça az olan 784 girişimiz olacak. O zaman birçok muhafazakar bilim adamının sinir ağlarını ve yöntemlerini sevmediği bir şey var - mimari seçimi. Ama bundan hoşlanmıyorlar, çünkü mimari seçimi saf şamanizm. Şimdiye kadar, sorunun açıklamasına dayalı olarak bir sinir ağının yapısını ve bileşimini açık bir şekilde belirlemenize izin veren hiçbir yöntem yoktur. Savunmada, formelleştirilmesi zor problemler için böyle bir yöntemin neredeyse hiç oluşturulamayacağını söyleyeceğim. Ek olarak, birçok farklı ağ azaltma tekniği (örneğin, OBD) ve farklı buluşsal yöntemler ve temel kurallar vardır. Bu kurallardan biri, gizli katmandaki nöronların sayısının, girdi sayısından en az bir büyüklük sırası olması gerektiğini belirtir. Bir görüntüden sınıf göstergesine dönüştürmenin kendisinin oldukça karmaşık olduğunu ve esasen doğrusal olmadığını hesaba katarsak, bir katman yeterli değildir. Yukarıdakilere dayanarak, gizli katmanlardaki nöronların sayısının yaklaşık olarak aşağıdaki gibi olacağını tahmin ediyoruz. 15000 (2. katmanda 10.000 ve üçüncü katmanda 5.000). Aynı zamanda, iki gizli katmana sahip bir konfigürasyon için, sayı özelleştirilebilir ve eğitilebilir bağlantılar Her biri 0'dan 9'a kadar bir sayıyı temsil eden 10 çıktımız olduğunu varsayarsak, girdiler ile birinci gizli katman arasında 10 milyon + birinci ile ikinci arasında + 50 milyon + ikinci ile çıktı arasında 50 bin olacaktır. toplam kabaca 60.000.000 bağlantı. Özelleştirilebilir olduklarını belirtmem boşuna değildi - bu, eğitim sırasında her biri için hata gradyanını hesaplamanın gerekli olacağı anlamına gelir.

Ne yapabilirsiniz, yapay zekanın güzelliği fedakarlık gerektirir. Ancak bunu düşünürseniz, bir görüntüyü doğrusal bir bayt zincirine dönüştürdüğümüzde, geri dönüşü olmayan bir şekilde bir şeyler kaybettiğimiz akla geliyor. Ve her katmanda bu kayıp sadece ağırlaşıyor. Öyle - görüntünün topolojisini kaybederiz, yani. bireysel parçaları arasındaki ilişki. Ek olarak, tanıma görevi, sinir ağının küçük kaymalara, döndürmelere ve görüntü ölçeklendirmeye, yani. şu veya bu kişinin el yazısına bağlı olmayan bazı değişmezleri verilerden çıkarmalıdır. Öyleyse, sinir ağının hesaplama açısından çok karmaşık olmaması ve aynı zamanda çeşitli görüntü bozulmalarına karşı daha değişmez olması için ne olmalıdır?

3. Evrişimli Sinir Ağları

Bu sorunun çözümü, tıpta Nobel ödüllü Torsten Nils Wiesel ve David H. Hubel'in çalışmalarından esinlenen Fransız doğumlu Amerikalı bilim adamı Jan LeCun tarafından bulundu. Bu bilim adamları, kedinin görsel korteksini incelediler ve farklı açılarda düz çizgilere özellikle güçlü tepki veren sözde basit hücreler ve çizgilerin bir yönde hareketine tepki veren karmaşık hücreler olduğunu buldular. Jan LeCun, evrişimli sinir ağları olarak adlandırılanları kullanmayı önerdi.

6. Sonuçlar

Matlabcentral programı, zaten eğitilmiş bir sinir ağının bir dosyası ve çalışmanın sonuçlarını göstermek için bir GUI ile birlikte gelir. Aşağıdakiler tanıma örnekleridir:



Bağlantı, MNIST'e dayalı bir tanıma yöntemleri karşılaştırma tablosuna sahiptir. İlk sırayı %0.39 tanıma hatası sonucu evrişimli sinir ağları almaktadır. Yanlışlıkla tanınan bu görüntülerin çoğu, herkes tarafından doğru şekilde tanınmaz. Ek olarak, çalışmada ve öğretmen olmadan ön eğitimde girdi görüntülerinin elastik bozulmaları kullanılmıştır. Ancak bu yöntemler hakkında bir şekilde başka bir makalede.

Bağlantılar.

  1. Yann LeCun, J.S. Denker, S. Solla, R.E. Howard ve L.D. Jackel: Optimal Brain Damage, in Touretzky, David (Eds), Advances in Neural Information Processing Systems 2 (NIPS*89), Morgan Kaufman, Denver, CO, 1990
  2. Y. LeCun ve Y. Bengio: Görüntüler, Konuşma ve Zaman Serileri için Evrişimsel Ağlar, Arbib'de, M.A. (Eds), The Handbook of Brain Theory and Neural Networks, MIT Press, 1995
  3. Y. LeCun, L. Bottou, G. Orr ve K. Muller: Efficient BackProp, Orr, G. ve Muller K. (Eds), Neural Networks: Tricks of the trade, Springer, 1998
  4. Ranzato Marc "Aurelio, Christopher Poultney, Sumit Chopra ve Yann LeCun: Enerji Tabanlı Modelle Seyrek Temsillerin Verimli Öğrenilmesi, J. Platt ve diğerleri (Eds), Nöral Bilgi İşleme Sistemlerinde Gelişmeler (NIPS 2006), MIT Press , 2006
1

Bir sinir ağı, biyolojik bir organizmadaki nöron ağları olan biyolojik sinir ağlarının aktivitesini modellemeye dayanan, yazılım veya donanım-yazılım uygulaması biçiminde matematiksel bir model ve uygulamasıdır. Bu yapıya bilimsel ilgi, modelinin incelenmesi belirli bir sistem hakkında bilgi edinilmesine izin verdiği için ortaya çıktı. Yani, böyle bir model, modern bilim ve teknolojinin birçok dalında pratik uygulamaya sahip olabilir. Makale, güvenlik sistemlerinde yaygın olarak kullanılan görüntü tanımlama sistemleri oluşturmak için sinir ağlarının kullanılması konusuyla ilgili konuları ele almaktadır. Görüntü tanıma algoritması konusu ve uygulaması ile ilgili konular detaylı olarak incelenmiştir. Sinir ağlarının eğitim metodolojisi hakkında kısaca bilgi verilmiştir.

nöral ağlar

sinir ağları ile öğrenme

görüntü tanıma

yerel algı paradigması

güvenlik sistemi

1. Yann LeCun, J.S. Denker, S. Solla, R.E. Howard ve L. D. Jackel: Touretzky'de Optimal Beyin Hasarı, David (Eds), Nöral Bilgi İşleme Sistemlerinde Gelişmeler 2 (NIPS*89). - 2000. - 100 s.

2. Zhigalov K.Yu. CBS'de daha fazla kullanım için lazer konum verilerinin fotogerçekçi vektörleştirme yöntemi. Jeodezi ve hava fotoğrafçılığı. - 2007. - No. 6. - S. 285-287.

3. Ranzato Marc'Aurelio, Christopher Poultney, Sumit Chopra ve Yann LeCun: Enerji Tabanlı Modelle Seyrek Temsillerin Verimli Öğrenilmesi, J. Platt ve ark. (Eds), Sinirsel Bilgi İşleme Sistemlerinde Gelişmeler (NIPS 2006). - 2010. - 400 s.

4. Zhigalov K.Yu. Yol yapımı için otomatik kontrol sistemlerinde kullanılacak ekipmanların hazırlanması // Doğa ve teknik bilimler. - M., 2014. - No. 1 (69). – S. 285–287.

5. Y. LeCun ve Y. Bengio: Görüntüler, Konuşma ve Zaman Serileri için Evrişimsel Ağlar, Arbib'de, M. A. (Eds) // Beyin Teorisi ve Sinir Ağları El Kitabı. - 2005. - 150 s.

6. Y. LeCun, L. Bottou, G. Orr ve K. Muller: Efficient BackProp, Orr, G. ve Muller K. (Eds) // Sinir Ağları: Ticaretin püf noktaları. - 2008. - 200 s.

Bugüne kadar, teknolojik ve araştırma ilerlemesi, hızla ilerleyen tüm yeni ufukları kapsar. Bunlardan biri, matematiksel algoritmalar kullanarak çevreleyen doğal dünyanın modellenmesidir. Bu açıdan, örneğin deniz salınımlarının modellenmesi gibi önemsiz ve örneğin insan beyninin işleyişinin modellenmesi gibi son derece karmaşık, önemsiz olmayan, çok bileşenli görevler vardır. Bu konuyu inceleme sürecinde ayrı bir kavram seçildi - bir sinir ağı. Bir sinir ağı, biyolojik bir organizmadaki nöron ağları olan biyolojik sinir ağlarının aktivitesini modellemeye dayanan, yazılım veya donanım-yazılım uygulaması biçiminde matematiksel bir model ve uygulamasıdır. Bu yapıya bilimsel ilgi, modelinin incelenmesi belirli bir sistem hakkında bilgi edinilmesine izin verdiği için ortaya çıktı. Yani, böyle bir model, modern bilim ve teknolojinin birçok dalında pratik uygulamaya sahip olabilir.

Sinir Ağlarının Gelişiminin Kısa Tarihi

"Sinir ağı" kavramının başlangıçta Amerikalı matematikçiler, nörolinguistler ve nöropsikologlar W. McCulloch ve W. Pitts'in (1943) çalışmalarından kaynaklandığını belirtmekte fayda var, burada yazarlar ondan ilk kez bahsettiler, ona bir tanım verdiler ve ilk kez yaptılar. bir model sinir ağı oluşturmaya çalışın. Zaten 1949'da D. Hebb ilk öğrenme algoritmasını önerdi. Daha sonra sinirsel öğrenme alanında bir dizi çalışma yapıldı ve ilk çalışan prototipler 1990-1991 yıllarında ortaya çıktı. geçen yüzyıl. Bununla birlikte, o zamanın ekipmanının bilgi işlem gücü, sinir ağlarının yeterince hızlı çalışması için yeterli değildi. 2010 yılına gelindiğinde, video kartlarının GPU gücü büyük ölçüde arttı ve doğrudan video kartları üzerinde programlama kavramı ortaya çıktı, bu da bilgisayarların performansını önemli ölçüde (3-4 kat) artırdı. 2012'de sinir ağları ilk kez ImageNet şampiyonluğunu kazandı ve bu onların daha da hızlı gelişmesini ve Derin Öğrenme teriminin ortaya çıkmasını işaret etti.

Modern dünyada, sinir ağlarının muazzam bir kapsamı var, bilim adamları sinir ağlarının davranışsal özelliklerini ve durumlarını inceleme alanında yapılan araştırmaları son derece umut verici buluyorlar. Sinir ağlarının uygulama bulduğu alanların listesi çok büyük. Bunlar, örüntü tanıma ve sınıflandırma ve tahmin etme ve yaklaşım problemlerini çözme ve veri sıkıştırmanın bazı yönleri, veri analizi ve elbette farklı nitelikteki güvenlik sistemlerinde uygulamadır.

Bugün, sinir ağları çalışması, farklı ülkelerin bilimsel topluluklarında aktif olarak yer almaktadır. Böyle bir düşünceyle, bir dizi örüntü tanıma yöntemi, diskriminant analizi ve kümeleme yöntemlerinin özel bir durumu olarak sunulmaktadır.

Ayrıca, geçtiğimiz yıl boyunca, görüntü tanıma sistemleri alanındaki yeni başlayanlar için fonun önceki 5 yıldan daha fazla bir süredir tahsis edildiğine dikkat edilmelidir; bu, nihai pazarda bu tür bir geliştirme için oldukça yüksek bir talebin olduğunu gösterir.

Görüntü tanıma için sinir ağlarının uygulanması

Görüntülere uygulamada sinir ağları tarafından çözülen standart görevleri göz önünde bulundurun:

● nesne tanımlama;

● nesnelerin parçalarının tanınması (örneğin, yüzler, kollar, bacaklar vb.);

● nesne sınırlarının anlamsal tanımı (resimde yalnızca nesne sınırlarının bırakılmasına izin verir);

● anlamsal bölümleme (bir görüntüyü farklı ayrı nesnelere bölmenize olanak tanır);

● yüzeye normallerin seçimi (iki boyutlu görüntüleri üç boyutlu görüntülere dönüştürmenize olanak tanır);

● dikkat edilecek nesnelerin seçimi (bir kişinin bu resimde neye dikkat edeceğini belirlemenizi sağlar).

Unutulmamalıdır ki görüntü tanıma sorunu parlak bir karaktere sahiptir, bu sorunun çözümü karmaşık ve sıra dışı bir süreçtir. Tanıma gerçekleştirirken, nesne bir insan yüzü, el yazısıyla yazılmış bir rakam ve ayrıca tanımlama sürecini önemli ölçüde karmaşıklaştıran bir dizi benzersiz özellik ile karakterize edilen diğer birçok nesne olabilir.

Bu çalışmada, bir sinir ağının el yazısı karakterlerini tanımayı ve yaratmayı öğrenmek için bir algoritma ele alacağız. Görüntü, sinir ağının girişlerinden biri tarafından okunacak ve çıktılardan biri sonucu görüntülemek için kullanılacaktır.

Bu aşamada sinir ağlarının sınıflandırılması üzerinde kısaca durmak gerekir. Bugüne kadar, üç ana tür vardır:

● evrişimli sinir ağları (CNN);

● tekrarlayan ağlar (derin öğrenme);

● pekiştirmeli öğrenme.

Sinir ağı oluşturmanın en yaygın örneklerinden biri klasik sinir ağı topolojisidir. Böyle bir sinir ağı, tamamen bağlı bir grafik olarak temsil edilebilir, karakteristik özelliği, bilginin ileriye doğru yayılması ve hata sinyalinin geri yayılmasıdır. Bu teknolojinin özyinelemeli özellikleri yoktur. Örnek olarak, klasik bir topolojiye sahip bir sinir ağı Şekil 2'de gösterilebilir. bir.

Pirinç. 1. En basit topolojiye sahip sinir ağı

Pirinç. 2. 4 katman gizli nöron içeren sinir ağı

Bu ağ topolojisinin açıkça önemli dezavantajlarından biri artıklıktır. Fazlalık nedeniyle, veriler örneğin iki boyutlu bir matris biçiminde sağlandığında, girişte tek boyutlu bir vektör elde edilebilir. Bu nedenle, 34x34 matris kullanılarak açıklanan el yazısı Latin harfinin görüntüsü için 1156 girdi gereklidir. Bu, bu algoritmanın yazılım ve donanım çözümünün uygulanması için harcanan hesaplama gücünün çok büyük olacağını göstermektedir.

Sorun, Nobel Ödülü sahibi tıp T. Wtesel ve D. Hubel'in çalışmalarını analiz eden Amerikalı bilim adamı Jan Le Cun tarafından çözüldü. Onlar tarafından yürütülen çalışmanın bir parçası olarak, kedinin beyninin görsel korteksi, çalışmanın nesnesi olarak hareket etti. Sonuçların analizi, korteksin bir dizi basit hücrenin yanı sıra bir dizi karmaşık hücre içerdiğini gösterdi. Basit hücreler, görsel alıcılardan alınan düz çizgilerin görüntüsüne yanıt verirken, karmaşık hücreler bir yönde ileri harekete yanıt verdi. Sonuç olarak, evrişimli olarak adlandırılan sinir ağları oluşturma ilkesi geliştirildi. Bu ilkenin fikri, sinir ağının işleyişini uygulamak için, genellikle C - Katmanlar, alt örnekleme katmanları S - Katmanlar ve tamamen bağlı katmanlar olarak adlandırılan bir evrişimli katman alternatifinin kullanılmasıydı. sinir ağı.

Bu tür bir ağın inşasının altında üç paradigma yatar - bu, yerel algı paradigması, paylaşılan ağırlıklar paradigması ve alt örnekleme paradigması.

Yerel algı paradigmasının özü, görüntü matrisinin tamamının değil, bir kısmının her giriş nöronuna beslenmesinde yatmaktadır. Kalan kısımlar diğer giriş nöronlarına beslenir. Bu durumda, benzer bir yöntem kullanılarak paralelleştirme mekanizması gözlemlenebilir, görüntünün topolojisini katmandan katmana kaydedebilir, çok boyutlu olarak işleyebilirsiniz, yani işleme sürecinde belirli bir sinir ağı seti kullanılabilir. .

Paylaşılan ağırlıklar paradigması, birçok bağlantı için küçük bir ağırlık kümesinin kullanılabileceğini söylüyor. Bu kümelere "çekirdekler" de denir. Görüntü işlemenin nihai sonucu için, paylaşılan ağırlıkların sinir ağının özellikleri üzerinde olumlu bir etkiye sahip olduğunu söyleyebiliriz, davranışının incelenmesi görüntülerde değişmezleri bulma ve gürültü bileşenlerini işlemeden filtreleme yeteneğini arttırır.

Yukarıdakilere dayanarak, çekirdek temelinde görüntü evrişim prosedürünü uygularken, unsurları filtreye uygunluk derecesinin ana özelliği olacak olan bir çıktı görüntüsünün görüneceği sonucuna varabiliriz, yani özellik haritası oluşturulacaktır. Bu algoritma Şek. 3.

Pirinç. 3. Bir özellik haritası oluşturmak için algoritma

Alt örnekleme paradigması, girdi görüntüsünün matematiksel eşdeğerinin - n boyutlu bir matrisin - uzaysal boyutunu azaltarak azaltılmasıdır. Alt örnekleme ihtiyacı, orijinal görüntünün ölçeğine göre değişmez olarak ifade edilir. Katman değiştirme tekniğini uygularken, mevcut olanlardan yeni özellik haritaları oluşturmak mümkün hale gelir, yani bu yöntemin pratik uygulaması, çok boyutlu bir matrisi bir vektör değerine ve ardından tamamen bir vektör değerine dejenere etme yeteneğinde yatmaktadır. skaler değer elde edilecektir.

Yapay Sinir Ağı Eğitimi Uygulaması

Mevcut ağlar, öğrenme açısından 3 mimari sınıfa ayrılır:

● denetimli öğrenme (algı);

● denetimsiz öğrenme (uyarlanabilir rezonans ağları);

● harmanlanmış öğrenme (radyal tabanlı işlev ağları).

Görüntü tanıma durumunda bir sinir ağının performansını değerlendirmek için en önemli kriterlerden biri görüntü tanıma kalitesidir. Bir sinir ağının işleyişini kullanarak görüntü tanıma kalitesini ölçmek için, en sık olarak ortalama karekök hata algoritmasının kullanıldığına dikkat edilmelidir:

(1)

Bu bağımlılıkta Ep, bir çift nöron için p-th tanıma hatasıdır,

Dp, sinir ağının beklenen çıktısıdır (genellikle ağ %100 tanıma için çaba göstermelidir, ancak bu pratikte henüz gerçekleşmez) ve O(Ip,W)2 yapısı, ağ çıktısının karesidir. p-th girişi ve ayarlanmış ağırlık katsayıları W üzerinde. Bu yapı, tüm katmanların hem evrişim çekirdeklerini hem de ağırlık katsayılarını içerir. Hatanın hesaplanması, tüm nöron çiftleri için aritmetik ortalamanın hesaplanmasından oluşur.

Analiz sonucunda, hata değeri minimum olduğunda ağırlığın nominal değerinin bağımlılığa dayalı olarak hesaplanabileceği bir düzenlilik elde edilmiştir (2):

(2)

Bu bağımlılıktan, optimal ağırlığı hesaplama probleminin, birinci dereceden hata fonksiyonunun türevinin ağırlığa göre aritmetik farkının ikinci dereceden hata fonksiyonunun türevine bölünmesi olduğunu söyleyebiliriz.

Verilen bağımlılıklar, çıktı katmanındaki hatanın önemsiz hesaplanmasına izin verir. Nöronların gizli katmanlarındaki hata hesaplaması, hata geri yayılım yöntemi kullanılarak gerçekleştirilebilir. Yöntemin ana fikri, bilgiyi çıkış nöronlarından giriş nöronlarına, yani sinyallerin sinir ağı üzerinden yayılmasının tersi yönde bir hata sinyali şeklinde dağıtmaktır.

Ağ eğitiminin çok sayıda sınıfa ayrılmış özel olarak hazırlanmış görüntü veritabanları üzerinde gerçekleştirildiğini ve oldukça uzun zaman aldığını da belirtmek gerekir.
Bugüne kadarki en büyük veritabanı ImageNet'tir (www.image_net.org). Akademik kurumlar için ücretsiz erişime sahiptir.

Çözüm

Yukarıdakilerin bir sonucu olarak, içişleri organları için parmak izi kart tanıma sistemlerinde, işleyiş ilkesine göre uygulanan sinir ağları ve algoritmaların kullanılabileceğine dikkat çekmek gerekir. Genellikle, kendisine atanan görevleri tam olarak çözmeyen tanımlama verileri olan bir model olarak benzersiz bir karmaşık görüntüyü tanımayı amaçlayan yazılım ve donanım kompleksinin yazılım bileşenidir. Sinir ağına dayalı algoritmalar temelinde uygulanan bir program çok daha verimli olacaktır.

Özetleyecek olursak şunları özetleyebiliriz:

● sinir ağları hem görüntü hem de metin tanıma konusunda kullanılabilir;

● bu teori, gelecek vaat eden yeni bir model sınıfının, yani akıllı modellemeye dayalı modellerin yaratılması hakkında konuşmayı mümkün kılar;

● sinir ağları, sürecin işleyişini optimize etme olasılığını gösteren öğrenme yeteneğine sahiptir. Bu olasılık, algoritmanın pratik uygulaması için son derece önemli bir seçenektir;

● Nöral ağ araştırması yardımıyla örüntü tanıma algoritmasının değerlendirilmesi nicel bir değere sahip olabilir, buna göre gerekli ağırlık katsayılarını hesaplayarak parametreleri gerekli değere ayarlamak için mekanizmalar vardır.

Bugüne kadar, sinir ağlarının daha fazla incelenmesi, daha fazla bilim ve teknoloji dalında ve ayrıca insan faaliyetlerinde başarıyla uygulanacak umut verici bir araştırma alanı gibi görünmektedir. Modern tanıma sistemlerinin geliştirilmesindeki ana vurgu, şimdi jeodezi, tıp, prototipleme ve insan faaliyetinin diğer alanlarında 3D görüntülerin anlamsal bölümlenmesi alanına kayıyor - bunlar oldukça karmaşık algoritmalardır ve bunun nedeni:

● yeterli sayıda referans görüntü veri tabanının olmaması;

● sistemin ilk eğitimi için yeterli sayıda ücretsiz uzmanın olmaması;

● Görüntüler, hem bilgisayardan hem de geliştiricilerden ek kaynaklar gerektiren piksellerde saklanmaz.

Ayrıca, bugün, sinir ağları oluşturmak için, sıfırdan bir sinir ağı oluşturma görevini büyük ölçüde basitleştiren ve belirli bir görev için uygun bir ağ yapısının seçimine indirgeyen çok sayıda standart mimarinin olduğu da belirtilmelidir.

Şu anda piyasada, sinir ağı öğrenme teknolojilerini kullanarak görüntü tanıma ile ilgilenen oldukça fazla sayıda yenilikçi şirket var. 10.000 görüntüden oluşan bir veri tabanı kullanarak yaklaşık %95 görüntü tanıma doğruluğu elde ettikleri kesin olarak biliniyor. Bununla birlikte, tüm başarılar statik görüntülerle ilgilidir, şu anda video dizisi ile her şey çok daha karmaşıktır.

bibliyografik bağlantı

Markova S.V., Zhigalov K.Yu. GÖRÜNTÜ TANIMA SİSTEMİ OLUŞTURMAK İÇİN SİNİR AĞI UYGULAMASI // Temel Araştırma. - 2017. - Sayı 8-1. - S.60-64;
URL: http://fundamental-research.ru/ru/article/view?id=41621 (erişim tarihi: 24/03/2020). "Doğa Tarihi Akademisi" yayınevi tarafından yayınlanan dergileri dikkatinize sunuyoruz.

Görüntü tanımada kullanılan sinir ağı yöntemlerinin bir incelemesi yapılmıştır. Sinir ağı yöntemleri, çeşitli sinir ağlarının (NN) kullanımına dayanan yöntemlerdir. Desen ve görüntü tanıma için çeşitli NN'lerin ana uygulama alanları:

  • verilen görüntülerin temel özelliklerini veya özelliklerini çıkarmak için uygulama,
  • görüntülerin kendilerinin veya zaten onlardan çıkarılan özelliklerin sınıflandırılması (ilk durumda, temel özelliklerin çıkarılması ağ içinde dolaylı olarak gerçekleşir),
  • optimizasyon problemlerinin çözümü.

Yapay sinir ağlarının mimarisi, doğal sinir ağları ile bazı benzerliklere sahiptir. Çeşitli sorunları çözmek için tasarlanmış NN'ler, işleyen algoritmalarda önemli ölçüde farklılık gösterebilir, ancak ana özellikleri aşağıdaki gibidir.

NN, kendileri çok basit olan ve diğer nöronlara bağlı olan formal nöronlar adı verilen öğelerden oluşur. Her nöron, girişine gelen bir dizi sinyali bir çıkış sinyaline dönüştürür. Anahtar rolü oynayan, ağırlıklarla kodlanmış nöronlar arasındaki bağlantılardır. NN'lerin avantajlarından biri (aynı zamanda bunları sıralı bir mimaride uygularken bir dezavantaj), tüm öğelerin paralel olarak çalışabilmesi, böylece özellikle görüntü işlemede bir sorunu çözme verimliliğini önemli ölçüde artırmasıdır. Sinir ağlarının birçok sorunu etkin bir şekilde çözmenize izin vermesinin yanı sıra, diğer yöntemlere (olasılıksal yöntemler, doğrusal ayırıcılar, karar ağaçları vb.) göre ana avantajları olan güçlü, esnek ve evrensel öğrenme mekanizmaları sağlarlar. Öğrenme, temel özellikleri, bunların önemini ve özellikler arasındaki ilişkileri seçme ihtiyacını ortadan kaldırır. Bununla birlikte, giriş verilerinin (n boyutlu uzayda vektör, frekans karakteristikleri, dalgacıklar vb.) ilk temsilinin seçimi, çözümün kalitesini önemli ölçüde etkiler ve ayrı bir konudur. NN'ler iyi bir genelleme yeteneğine sahiptir (karar ağaçlarından daha iyidir), yani. son eğitim setinde kazanılan deneyimi tüm görüntü setine başarıyla genişletebilir.

Bir yüz görüntüsünden bir kişiyi tanımak için kullanma olasılıklarını not ederek, görüntü tanıma için sinir ağlarının uygulamasını tanımlayalım.

1. Çok katmanlı sinir ağları

Çok katmanlı bir sinir ağının (MNN) mimarisi, sıralı olarak bağlı katmanlardan oluşur; burada her bir katmanın nöronu, girişleriyle bir önceki katmanın tüm nöronlarıyla ve bir sonraki katmanın çıktılarıyla bağlantılıdır. İki karar katmanına sahip bir NN, herhangi bir çok boyutlu fonksiyona herhangi bir doğrulukla yaklaşabilir. Tek bir karar katmanına sahip bir sinir ağı, çözdüğü görevlerin aralığını büyük ölçüde daraltan doğrusal bölme yüzeyleri oluşturma yeteneğine sahiptir, özellikle böyle bir ağ "özel veya" bir sorunu çözemez. Doğrusal olmayan bir aktivasyon fonksiyonuna ve iki karar katmanına sahip bir NN, çözüm uzayında herhangi bir dışbükey bölge ve dışbükey olmayanlar da dahil olmak üzere herhangi bir karmaşıklıktaki bölgeler olan üç karar katmanı ile herhangi bir dışbükey bölge oluşturmayı mümkün kılar. Aynı zamanda, MNS genelleme yeteneğini kaybetmez. MNN, toplam ağ hatasını en aza indirmek için ağırlık uzayında bir gradyan iniş yöntemi olan hata geri yayılım algoritması kullanılarak eğitilir. Bu durumda, hatalar (daha doğrusu ağırlık düzeltme değerleri), nöronları birbirine bağlayan ağırlıklar aracılığıyla girişlerden çıkışlara ters yönde yayılır.

Tek katmanlı bir NN'nin (oto-ilişkisel bellek olarak adlandırılır) en basit uygulaması, besleme görüntülerini yeniden yapılandırmak için ağı eğitmektir. Girişe bir test görüntüsü besleyerek ve yeniden oluşturulan görüntünün kalitesi hesaplanarak, ağın giriş görüntüsünü ne kadar iyi tanıdığı tahmin edilebilir. Bu yöntemin olumlu özellikleri, ağın bozuk ve gürültülü görüntüleri kurtarabilmesidir, ancak daha ciddi amaçlar için uygun değildir.

Pirinç. 1. Görüntü sınıflandırması için çok katmanlı sinir ağı. En yüksek aktiviteye sahip nöron (burada ilki) tanınan sınıfa ait olduğunu gösterir.

MNN ayrıca görüntülerin doğrudan sınıflandırılması için de kullanılır - girdi, ya bir biçimde görüntünün kendisidir ya da görüntünün önceden çıkarılan bir dizi temel özelliğidir; çıktıda, maksimum aktiviteye sahip nöron, tanınan sınıfa ait olduğunu gösterir (Şekil 1). 1). Bu aktivite belirli bir eşiğin altındaysa, gönderilen görüntünün bilinen sınıflardan herhangi birine ait olmadığı kabul edilir. Öğrenme süreci, girdi görüntülerinin belirli bir sınıfa ait olmasıyla olan ilişkisini kurar. Buna denetimli öğrenme denir. Yüz tanımaya uygulandığında, bu yaklaşım küçük bir grup insan için erişim kontrolü görevleri için iyidir. Bu yaklaşım, görüntülerin ağ tarafından doğrudan karşılaştırılmasını sağlar, ancak sınıf sayısındaki artışla eğitim ve ağ operasyon süresi katlanarak artar. Bu nedenle, büyük bir veri tabanında benzer bir kişiyi aramak gibi görevler, arama yapılacak kompakt bir dizi temel özelliğin çıkarılmasını gerektirir.

Görüntünün tamamının frekans özelliklerini kullanan bir sınıflandırma yaklaşımı . Çok değerli nöronlara dayalı tek katmanlı bir NS kullanıldı. MIT veri tabanında %100 tanıma not edildi, ancak ağın eğitildiği görüntüler arasında tanıma yapıldı.

Yüzün belirli bölümleri (burun, ağız, gözler) arasındaki mesafeler gibi özelliklere dayalı olarak yüz görüntülerini sınıflandırmak için MNS'nin kullanımı . Bu durumda, bu mesafeler NS girişine uygulandı. Hibrit yöntemler de kullanıldı - ilkinde, gizli bir Markov modeli tarafından işlemenin sonuçları NN'nin girişine beslendi ve ikincisinde, NN'nin çalışmasının sonucu Markov'un girişine beslendi. modeli. İkinci durumda, NA sınıflandırmasının sonucunun yeterli olduğunu gösteren hiçbir avantaj gözlenmedi.

B, ağ girişi ana bileşenler yöntemiyle görüntü ayrıştırma sonuçlarını aldığında görüntü sınıflandırması için NN kullanımını gösterir.

Klasik MNS'de katmanlar arası nöral bağlantılar tamamen bağlantılıdır ve görüntü iki boyutlu olmasına rağmen tek boyutlu bir vektör olarak temsil edilir. Evrişimsel sinir ağının mimarisi bu eksikliklerin üstesinden gelmeyi amaçlamaktadır. Yerel reseptör alanları (nöronların yerel iki boyutlu bağlantısını sağlar), genel ağırlıklar (görüntünün herhangi bir yerinde bazı özelliklerin algılanmasını sağlar) ve uzamsal alt örnekleme (uzaysal alt örnekleme) ile hiyerarşik organizasyon kullandı. Evrişimli NN (CNN), ölçek değişikliklerine, yer değiştirmelere, döndürmelere ve bozulmalara karşı kısmi direnç sağlar. SNS'nin mimarisi, her biri birkaç düzleme sahip birçok katmandan oluşur ve bir sonraki katmanın nöronları, yerel alanın yakınından (insan görselinde olduğu gibi) önceki katmanın sadece az sayıda nöronuna bağlanır. korteks). Aynı düzlemin her noktasındaki ağırlıklar aynıdır (evrişimli katmanlar). Evrişimli katmanı, yerel ortalama ile boyutunu küçülten bir katman takip eder. Sonra tekrar evrişim katmanı vb. Böylece hiyerarşik bir organizasyon sağlanır. Daha sonraki katmanlar, görüntü bozulmasına daha az bağımlı olan daha genel özellikleri çıkarır. CNN, standart geri yayılım yöntemiyle eğitilir. MNS ve SNA'nın karşılaştırılması, sınıflandırmanın hem hızı hem de güvenilirliği açısından ikincisinin önemli avantajlarını göstermiştir. CNN'nin kullanışlı bir özelliği, hiyerarşinin üst katmanlarının çıktılarında üretilen özelliklerin en yakın komşu yöntemiyle (örneğin, Öklid mesafesini hesaplayarak) sınıflandırma için uygulanabilmesi ve CNN'nin bu tür özellikleri başarıyla çıkarabilmesidir. eğitim setinde olmayan görüntüler için. SNS, hızlı bir öğrenme ve çalışma hızı ile karakterizedir. Aydınlatma, ölçek, uzamsal dönüşler, konum ve çeşitli duygularda küçük değişikliklere sahip yüzlerin görüntülerini içeren ORL veritabanında CNN'nin test edilmesi, yaklaşık %98 tanıma doğruluğu gösterdi ve bilinen yüzler için görüntülerinin varyantları sunuldu. eğitim setinde değil. Bu sonuç, bu mimariyi uzamsal nesnelerin görüntü tanıma alanındaki daha ileri gelişmeler için umut verici kılmaktadır.

MNS ayrıca belirli bir türdeki nesneleri algılamak için kullanılır. Herhangi bir eğitimli MNS, görüntülerin “kendi” sınıflarına ait olup olmadığını bir dereceye kadar belirleyebilmesine ek olarak, belirli sınıfları güvenilir bir şekilde algılamak için özel olarak eğitilebilir. Bu durumda çıktı sınıfları, verilen görüntü tipine ait olan ve olmayan sınıflar olacaktır. Giriş görüntüsündeki yüz görüntüsünü algılamak için bir sinir ağı dedektörü kullanıldı. Görüntü, verilen alanın yüz sınıfına ait olup olmadığına karar veren ağın girişine beslenen 20x20 piksellik bir pencere ile taranmıştır. Eğitim hem olumlu örnekler (çeşitli yüz görüntüleri) hem de olumsuz örnekler (yüz olmayan görüntüler) kullanılarak yapıldı. Tespitin güvenilirliğini artırmak için farklı başlangıç ​​ağırlıkları ile eğitilmiş bir NN ekibi kullanılmış, bunun sonucunda NN'ler farklı şekillerde hata yapmış ve nihai karar tüm ekibin oylarıyla verilmiştir.

Pirinç. 2. Temel bileşenler (özyüzler) ve görüntünün temel bileşenlere ayrıştırılması.

NN, daha sonra sınıflandırma için kullanılan görüntünün temel özelliklerini çıkarmak için de kullanılır. 'de, ana bileşen analiz yönteminin sinir ağı uygulaması için bir yöntem gösterilmektedir. Temel bileşen analizi yönteminin özü, girdi modellerini karakterize eden maksimum dekolteli katsayıları elde etmektir. Bu katsayılara temel bileşenler denir ve tüm görüntüyü temsil etmek için az sayıda katsayıların kullanıldığı istatistiksel görüntü sıkıştırma için kullanılır. Girdi görüntüsünü çıktıda geri yüklemek için hata geri yayılım yöntemiyle eğitilmiş, N nöron içeren (görüntü boyutundan çok daha küçük olan) bir gizli katmana sahip bir NN, çıktıdaki ilk N ana bileşenlerin katsayılarını oluşturur. karşılaştırma için kullanılan gizli nöronlar. Tipik olarak, 10 ila 200 ana bileşen kullanılır. Bileşen sayısı arttıkça temsil edilebilirliği büyük ölçüde azalır ve çok sayıda bileşen kullanmak anlamsızdır. Nöral elemanların lineer olmayan aktivasyon fonksiyonlarını kullanırken, ana bileşenlere lineer olmayan bir ayrıştırma mümkündür. Doğrusal olmama, girdi verilerindeki varyasyonları daha doğru bir şekilde yansıtmanıza olanak tanır. Yüz görüntülerinin ayrıştırılmasına temel bileşen analizini uygulayarak, aynı zamanda yararlı bir özelliğe sahip olan uygun yüzler (işte holonlar) adı verilen ana bileşenleri elde ederiz - esas olarak cinsiyet, ırk, duygular gibi temel yüz özelliklerini yansıtan bileşenler vardır. . Geri yüklendiğinde, bileşenler yüze benzer bir görünüme sahiptir, birincisi yüzün en genel şeklini yansıtırken, ikincisi yüzler arasındaki çeşitli küçük farklılıkları temsil eder (Şekil 2). Bu yöntem, büyük veritabanlarında benzer yüz görüntülerini aramak için oldukça uygundur. NS yardımıyla ana bileşenlerin boyutunun daha da küçültülmesi olasılığı da gösterilmiştir. Giriş görüntüsünün yeniden yapılandırılmasının kalitesini değerlendirerek, yüz sınıfına ait olup olmadığı çok doğru bir şekilde belirlenebilir.

AlexNet, makine öğreniminin, özellikle de bilgisayarla görme algoritmalarının geliştirilmesinde büyük etkisi olan bir evrişimsel sinir ağıdır. Ağ, 2012 ImageNet LSVRC-2012 Görüntü Tanıma Yarışmasını geniş bir farkla kazandı (ikinci sıra için %26.2'ye karşılık %15.3'lük bir hata oranıyla).

AlexNet'in mimarisi, Yann LeCum tarafından oluşturulan LeNet ağına benzer. Ancak AlexNet, katman başına daha fazla filtreye ve iç içe konvolüsyonel katmanlara sahiptir. Ağ, evrişimler, maksimum havuzlama, bırakma, veri artırma, ReLU etkinleştirme işlevleri ve stokastik gradyan inişi içerir.

Özellikler

  1. Aktivasyon fonksiyonu olarak, modele doğrusal olmayanlık eklemek için ark tanjantı yerine Relu kullanılır. Bu nedenle, yöntemin aynı doğruluğu ile hız 6 kat daha hızlı hale gelir.
  2. Düzenlileştirme yerine bırakma kullanmak, aşırı takma sorununu çözer. Ancak, eğitim süresi 0,5'lik bir bırakma oranı ile iki katına çıkar.
  3. Ağın boyutunu küçültmek için örtüşen birleşimler gerçekleştirilir. Bu nedenle, birinci ve beşinci seviyelerin hata seviyeleri sırasıyla %0,4 ve %0,3'e düşürülmüştür.

ImageNet veri kümesi

ImageNet, 22.000 kategoriye ayrılmış 15 milyon yüksek çözünürlüklü etiketli görüntüden oluşan bir settir. Görüntüler çevrimiçi olarak toplanır ve Amazon'un Mechanical Turk kitle kaynak kullanımı kullanılarak manuel olarak etiketlenir. 2010'dan beri, Pascal Görsel Nesne Yarışmasının bir parçası olarak yıllık ImageNet Büyük Ölçekli Görsel Tanıma Yarışması (ILSVRC) düzenlenmektedir. Zorluk, 1.000 kategorinin her birinde 1.000 görüntü içeren bir ImageNet veri kümesinin bir bölümünü kullanır. Toplam 1,2 milyon eğitim görüntüsü, 50.000 doğrulama görüntüsü ve 150.000 test görüntüsü vardır. ImageNet, farklı çözünürlüklere sahip görüntülerden oluşur. Bu nedenle, yarışma için 256 × 256 sabit çözünürlüğe ölçeklendirilirler. Görüntü orijinal olarak dikdörtgen ise, görüntünün ortasındaki bir kareye kırpılır.

Mimari

Resim 1

Ağ mimarisi Şekil 1'de gösterilmiştir. AlexNet sekiz ağırlıklı katman içerir. Bunlardan ilk beşi evrişimseldir ve geri kalan üçü tamamen bağlantılıdır. Çıktı, 1000 sınıf etiketinin bir dağılımını oluşturan bir softmax kayıp işlevinden geçirilir. Ağ, beklenti dağılımı üzerinden doğru etiketleme olasılığının logaritmasının tüm eğitim durumları üzerinden ortalamayı maksimuma çıkarmaya eşdeğer olan çok doğrusal lojistik regresyonu maksimize eder. İkinci, dördüncü ve beşinci evrişim katmanlarının çekirdekleri, yalnızca aynı GPU'da bulunan önceki katmandaki çekirdek haritalarla ilişkilendirilir. Üçüncü evrişim katmanının çekirdekleri, ikinci katmanın çekirdeklerinin tüm haritalarına bağlanır. Tam bağlantılı katmanlardaki nöronlar, önceki katmandaki tüm nöronlara bağlanır.

Böylece, AlexNet 5 evrişimsel katman ve 3 tam bağlantılı katman içerir. Relu, her evrişimli ve tam bağlantılı katmandan sonra uygulanır. Bırakma, birinci ve ikinci tam bağlı katmanlardan önce uygulanır. Ağ 62,3 milyon parametre içerir ve bir ileri geçişte 1,1 milyar hesaplama harcar. Tüm parametrelerin %6'sını oluşturan evrişim katmanları, hesaplamaların %95'ini gerçekleştirir.

Eğitim

AlexNet 90 dönemden geçer. İki Nvidia Geforce GTX 580 GPU'da eğitim aynı anda 6 gün sürüyor, bu da ağın ikiye bölünmesinin nedeni. 0,01 öğrenme oranı, 0,9 momentum ve 0,0005 ağırlık düşüşü ile stokastik gradyan inişi kullanılır. Öğrenme oranı, doğruluk doygunluğundan sonra 10'a bölünür ve eğitim sırasında 3 kat azalır. Ağırlık güncelleme şeması wşuna benziyor:

nerede i- yineleme numarası, v momentum değişkenidir ve epsilon- öğrenme hızı. Tüm eğitim aşaması boyunca, öğrenme oranı tüm katmanlar için eşit seçilmiş ve manuel olarak düzeltilmiştir. Sonraki buluşsal yöntem, doğrulama hatalarının sayısı azalmayı bıraktığında öğrenme oranını 10'a bölmekti.

Kullanım örnekleri ve uygulama

Sonuçlar, büyük, derin bir evrişimsel sinir ağının, yalnızca denetimli öğrenmeyi kullanarak çok karmaşık veri kümeleri üzerinde rekor kıran sonuçlar elde edebildiğini göstermektedir. AlexNet'in yayınlanmasından bir yıl sonra, ImageNet yarışmasına katılan tüm katılımcılar, sınıflandırma problemini çözmek için evrişimli sinir ağlarını kullanmaya başladılar. AlexNet, evrişimli sinir ağlarının ilk uygulamasıydı ve yeni bir araştırma çağı açtı. Artık derin öğrenme kitaplıklarının yardımıyla AlexNet'i uygulamak daha kolay hale geldi: PyTorch, TensorFlow, Keras.

Sonuç

Ağ, birinci ve beşinci seviyelerin bir sonraki hata seviyesine ulaşır: sırasıyla %37.5 ve %17.0. ILSVRC-2010 yarışması sırasında elde edilen en iyi performans, farklı öznitelik vektörleri üzerinde eğitilmiş altı seyrek kodlanmış modelden tahminlerin ortalamasını alan bir yaklaşım kullanılarak %47,1 ve %28,2 olmuştur. O zamandan beri, Fisher vektörleri üzerinde eğitilmiş iki sınıflandırıcının tahminlerinin ortalamasını alan bir yaklaşım kullanılarak %45.7 ve %25.7'lik sonuçlar elde edilmiştir. ILSVRC-2010'un sonuçları Tablo 1'de gösterilmektedir.


Sol: Sekiz ILSVRC-2010 test görüntüsü ve modelin büyük olasılıkla olduğunu düşündüğü beş etiket. Her görüntünün altına doğru etiket yazılır ve ilk beşteyse olasılık kırmızı çubukla gösterilir. Sağda: ilk sütunda beş ILSVRC-2010 test görüntüsü. Kalan sütunlar altı eğitim görüntüsünü gösterir.

giriiş

Bu araştırmanın konusu, yapay sinir ağlarının aparatlarına dayalı bir görüntü tanıma sisteminin geliştirilmesidir. Görüntü tanıma görevi çok önemlidir, çünkü bir bilgisayar tarafından otomatik görüntü tanıma olasılığı, bilim ve teknolojinin gelişiminde, fotoğraflarda yüzleri ve diğer nesneleri aramak için sistemlerin geliştirilmesi, kalite kontrolü gibi birçok yeni fırsatı beraberinde getirir. insan müdahalesi olmadan üretilen ürünler, otomatik taşıma kontrolü ve diğerleri.

Yapay sinir ağlarına gelince, son yıllarda makine öğreniminin bu bölümü, mevcut bilgisayarların bilgi işlem gücündeki önemli bir artış ve çok daha büyük sinir ağlarını eğitmenize izin veren bilgi işlem için grafik kartlarının yaygın kullanımı nedeniyle giderek daha fazla geliştirildi. Derinlik ve karmaşık yapı öncekinden daha fazla, bu da başta görüntü tanıma sorunu olmak üzere birçok problem için diğer algoritmalara kıyasla önemli ölçüde daha iyi sonuçlar gösteriyor. Sinir ağlarının gelişimindeki bu yöne derin öğrenme (“derin öğrenme”) denir ve şu anda en başarılı ve hızla gelişenlerden biridir. Örneğin, ImageNet-2014 yıllık görüntü tanıma yarışmasının sonuçlarına göre, başarılı algoritmaların büyük çoğunluğu derin evrişimli ağlar kullandı.

Görüntü tanıma sorunu çok kapsamlı olduğundan ve çoğu durumda farklı görüntü türleri için ayrı bir yaklaşım gerektirdiğinden, görüntü tanıma sorununu tek bir çalışma çerçevesinde bir bütün olarak ele almak neredeyse imkansızdır, bu nedenle karar verildi. örneğin, trafik işaretlerinin tanınması gibi bir görüntü tanıma alt görevini ayrı olarak ele almak.

Bu nedenle, bu çalışmanın temel amacı, yol işaretleri görüntüleri için yapay sinir ağlarına dayalı bir görüntü tanıma sistemi geliştirmektir. Bu hedefe ulaşmak için aşağıdaki görevler formüle edildi:

Yapay sinir ağları konusundaki literatürün analitik bir incelemesinin yapılması ve bunların görüntü tanıma problemine uygulanması

Yapay sinir ağlarının aparatlarını kullanarak yol işaretlerinin tanınması için bir algoritmanın geliştirilmesi

Geliştirilen algoritmaya dayalı bir prototip görüntü tanıma sisteminin geliştirilmesi. Bu görevin sonucu, kullanıcının bir görüntü yüklemesine ve bu görüntünün sınıfına ilişkin bir tahmin almasına olanak tanıyan bir yazılım paketi olmalıdır.

Deneysel çalışmalar yapmak. Ortaya çıkan algoritmanın doğruluğunu araştırmak ve değerlendirmek gerekir.

Çalışma sırasında tüm görevler tamamlandı. Her biri için özel sonuçlar çalışmanın ana bölümünde açıklanacaktır.

1. Literatür taraması

.1 Makine öğrenimi

Bu yazıda ayrıntılı olarak tartışılan sinir ağları, makine öğrenmesi algoritmalarının veya makine öğrenmesinin çeşitlerinden biridir. Makine öğrenimi, yapay zekanın alt alanlarından biridir. Makine öğrenmesi algoritmalarının temel özelliği, süreç içinde öğrenme yetenekleridir. Örneğin, bir karar ağacı oluşturmak için bir algoritma, verilerin ne olduğu ve içlerinde hangi kalıpların bulunduğu hakkında önceden hiçbir bilgiye sahip değil, yalnızca bazı girdi nesneleri kümesi ve her biri için bazı özelliklerin değerleri ile birlikte bir sınıf etiketi, ağacın kendisi oluşturma sürecinde gizli kalıpları ortaya çıkarır, yani öğrenir ve öğrendikten sonra daha önce görmediği yeni nesneler için sınıfı zaten tahmin edebilir.

İki ana makine öğrenimi türü vardır: denetimli öğrenme ve denetimsiz öğrenme. Denetimli öğrenme, algoritmanın, ilk verilere ek olarak, onlar hakkında daha sonra öğrenme için kullanabileceği bazı ek bilgilerle sağlandığını varsayar. Denetimli öğrenme için en popüler problemler sınıflandırma ve regresyon problemleridir. Örneğin, sınıflandırma problemi şu şekilde formüle edilebilir: Her biri birkaç sınıftan birine ait olan belirli bir nesne kümesine sahip olmak, yeni nesnenin bu sınıflardan hangisine ait olduğunu belirlemek gerekir. Bu çalışmada ele alınan yol işaretlerini tanıma görevi, tipik bir sınıflandırma problemi türüdür: birkaç tür yol işareti - sınıf vardır ve algoritmanın görevi işareti "tanımak", yani onu mevcut sınıflardan birine atfet.

Denetimsiz öğrenme, denetimli öğrenmeden farklıdır, çünkü algoritmaya ilk veri kümesinin kendisinden başka hiçbir ek bilgi verilmez. Denetimsiz öğrenme probleminin en popüler örneği kümeleme problemidir. Kümeleme probleminin özü şudur: Algoritmanın girdisi, farklı sınıflara ait belirli sayıda nesnedir (ancak hangi nesnenin hangi sınıfa ait olduğu bilinmiyor, sınıfların sayısı da bilinmiyor olabilir) ve amaç Algoritmanın amacı, bu nesne kümesini aynı sınıfa ait olan "benzer" nesnelerin alt kümelerine bölmektir.

Tüm makine öğrenimi algoritmaları arasında birkaç ana aile vardır. Bir sınıflandırma sorunu söz konusu olduğunda, en popüler bu tür aileler örneğin şunları içerir:

· Kural Tabanlı Sınıflandırıcılar - bu tür sınıflandırıcıların ana fikri, nesneleri belirli bir sınıfa “IF - THEN” biçiminde sınıflandırmak için kurallar aramaktır. Bu tür kuralları aramak için genellikle bazı istatistiksel metrikler kullanılır ve bir karar ağacına dayalı kuralların oluşturulması da yaygındır.

· Lojistik regresyon - ana fikir, uzayı en doğru şekilde iki yarı uzaya bölen, böylece farklı sınıflardaki nesnelerin farklı yarı uzaylara ait olmasını sağlayan doğrusal bir düzlem bulmaktır. Bu durumda, hedef düzlem denklemi, girdi parametrelerinin doğrusal bir kombinasyonu olarak aranır. Örneğin, böyle bir sınıflandırıcıyı eğitmek için gradyan iniş yöntemi kullanılabilir.

Bayes sınıflandırıcı - adından da anlaşılacağı gibi, sınıflandırıcı şu şekilde yazılmış Bayes teoremine dayanmaktadır.

sinir ağı makine öğrenimi

Bu durumda sınıflandırıcının fikri, tüm parametrelerin sınıflandırılan örnek için sahip oldukları değerlerle aynı olması şartıyla, maksimum sonsal olasılığa sahip sınıfı bulmaktır. Genel durumda, bu görev, çok sayıda koşullu olasılığın ön bilgisini ve buna bağlı olarak büyük bir eğitim örneklem büyüklüğü ve yüksek hesaplama karmaşıklığını içerir, bu nedenle pratikte, Naive Bayesian sınıflandırıcı olarak adlandırılan bir Bayes sınıflandırıcı türü çoğunlukla kullanılır. kullanılan, tüm parametrelerin birbirinden bağımsız olduğu varsayıldığında, sırasıyla, formül çok daha basit bir biçim alır ve onu kullanmak için sadece az sayıda koşullu olasılık gerektirir.


Bu varsayım genellikle gerçeklikten uzak olsa da, Naive Bayes sınıflandırıcısı genellikle iyi performans gösterir.

Karar ağaçları - basitleştirilmiş bir biçimde, bu algoritma, her düğümün nesnenin parametreleri üzerinde gerçekleştirilen bazı testlere karşılık geldiği ve yaprakların son sınıflar olduğu bir ağaç oluşturmaya dayanır. Yapımları için birçok karar ağacı ve algoritma çeşidi vardır. Örneğin, en popüler algoritmalardan biri C4.5'tir.

· Sinir ağları - genel durumda yönlendirilebilen veya yönlendirilemeyen ve bazı ağırlıkları olan bir dizi eleman (nöron) ve bunlar arasındaki bağlantılar olarak temsil edilen bir model. Sinir ağının çalışması sırasında, nöronlarının giriş olarak adlandırılan bir kısmı, bir şekilde yayılan ve dönüşen bir sinyal (giriş verileri) alır ve ağın çıkışında (çıkış nöronları) sonucunu görebilirsiniz. örneğin ağ, bireysel sınıfların olasılıkları. Sinir ağları bu çalışmada bir sonraki bölümde daha ayrıntılı olarak tartışılacaktır.

Destek vektör makineleri - algoritma kavramı, lojistik regresyon durumunda olduğu gibi, ayırma düzlemi (veya birkaç düzlem) arayışında aynıdır, ancak bu durumda bu düzlemi arama yöntemi farklıdır - bir düzlem ondan en yakın noktalara olan mesafe - genellikle ikinci dereceden optimizasyon yöntemlerinin kullanıldığı her iki sınıfın temsilcileri mümkün olacak şekilde aranır.

Tembel öğrenenler, bir modeli önceden oluşturmak ve daha sonra bir nesneyi ona dayalı olarak belirli bir sınıfa sınıflandırma hakkında kararlar vermek yerine, benzer nesnelerin çoğunlukla bir ve aynı sınıfa sahip olduğu fikrine dayanan özel bir tür sınıflandırma algoritmalarıdır. . Böyle bir algoritma, sınıflandırma için bir nesneyi girdi olarak aldığında, daha önce görüntülenen nesneler arasında kendisine benzer nesneleri arar ve sınıfları hakkındaki bilgileri kullanarak, hedef nesnenin sınıfına ilişkin kendi tahminini oluşturur.

Sınıflandırma algoritmalarının temelde çok farklı fikirlere sahip olabileceği ve elbette farklı görev türleri için farklı verimlilik gösterebileceği görülebilir. Bu nedenle, az sayıda giriş özelliği olan problemler için, giriş nesneleri için bazı benzerlik metrikleri - tembel sınıflandırıcıları hızlı ve kolay bir şekilde hesaplamak mümkünse, kural tabanlı sistemler yararlı olabilir, ancak çok büyük bir problemden bahsediyorsak. görüntü veya konuşma tanıma gibi ayrıca tanımlanması veya yorumlanması zor olan çok sayıda parametre, sinir ağları en uygun sınıflandırma yöntemi haline gelir.

1.2 Sinir ağları

Yapay sinir ağları, yaygın olarak bilinen ve kullanılan makine öğrenme modellerinden biridir. Yapay sinir ağları fikri, hayvanların ve insanların sinir sisteminin taklit edilmesine dayanmaktadır.

Hayvanların sinir sisteminin basitleştirilmiş bir modeli, her biri bir gövdeye ve iki tip dallara sahip bir hücre sistemi olarak sunulur: dendritler ve aksonlar. Hücre belirli bir anda dendritler aracılığıyla diğer hücrelerden sinyaller alır ve bu sinyaller yeterli güçteyse uyarılır ve bu uyarıyı aksonlar aracılığıyla bağlı olduğu diğer hücrelere iletir. Böylece sinyal (uyarma) sinir sistemi boyunca yayılır. Sinir ağı modeli benzer bir şekilde yapılandırılmıştır. Bir sinir ağı, nöronlardan ve bunlar arasındaki yönlendirilmiş bağlantılardan oluşur ve her bağlantının bir ağırlığı vardır. Aynı zamanda, bazı nöronlar girdidir - dış ortamdan veri alırlar. Daha sonra, her adımda, nöron tüm giriş nöronlarından bir sinyal alır, sinyallerin ağırlıklı toplamını hesaplar, ona bazı işlevler uygular ve sonucu her bir çıkışına iletir. Ağ ayrıca, ağın sonucunu oluşturan belirli sayıda çıktı nöronuna sahiptir. Dolayısıyla bir sınıflandırma problemi için bu nöronların çıktı değerleri, girdi nesnesi için sınıfların her birinin tahmin edilen olasılıkları anlamına gelebilir. Buna göre, bir sinir ağının eğitimi, nöronlar arasındaki bağlantılar için bu tür ağırlıkların seçilmesinden oluşur, böylece tüm girdi verilerinin çıktı değerleri mümkün olduğunca gerçek değerlere yakın olur.

Birkaç ana sinir ağı mimarisi türü vardır:

İleri beslemeli ağ - nöronların ve aralarındaki bağlantıların, sinyallerin yalnızca bir yönde yayıldığı asiklik bir grafik oluşturduğu anlamına gelir. En popüler ve geniş çapta incelenen bu ağlardır ve eğitimleri en az zorluk sunar.

Tekrarlayan sinir ağları (tekrarlayan sinir ağları) - bu tür ağlarda, doğrudan yayılma ağlarının aksine, sinyaller her iki yönde iletilebilir ve bir giriş değerini işleme sürecinde aynı nörona birkaç kez ulaşabilir. Tekrarlayan sinir ağlarının özel bir türü, örneğin Boltzmann makinesidir. Bu tür ağlarla çalışmanın ana zorluğu, eğitimleridir, çünkü genel durumda bunun için verimli bir algoritma oluşturmak zor bir iştir ve hala evrensel bir çözümü yoktur.

· Kendi kendini organize eden Kohonen haritaları - öncelikle verileri kümelemek ve görselleştirmek için tasarlanmış bir sinir ağı.

Sinir ağlarının gelişim tarihinde 3 ana büyüme dönemi vardır. Yapay sinir ağları alanındaki ilk araştırmalar 20. yüzyılın 40'lı yıllarına dayanmaktadır. 1954'te J. McCulloch ve W. Pitts, yapay sinir ağları oluşturmanın temel ilkelerini özetleyen "Sinir aktivitesi ile ilgili fikirlerin mantıksal hesabı" adlı çalışmayı yayınladı. 1949'da, D. Hebb'in, yazarın sinir ağlarını öğrenmenin teorik temellerini ele aldığı ve sinir ağlarını öğrenme kavramını nöronlar arasında ağırlık belirleme olarak ilk kez formüle ettiği "Davranış Organizasyonu" kitabı yayınlandı. 1954'te W. Clark, bir bilgisayar kullanarak Hebb ağının bir analogunu uygulamak için ilk girişimi yaptı. 1958'de F. Rosenblatt, esasen bir gizli katmana sahip bir sinir ağı olan bir algılayıcı modeli önerdi. Rosenblatt algılayıcısının ana görünümü Şekil 1'de gösterilmektedir.

Şekil 1. Rosenblatt Perceptron

Bu model, algılayıcının çıkış değeri doğru olduğu sürece ağırlıkların değişmeden kalması gerçeğinden oluşan hata düzeltme yöntemi kullanılarak eğitilmiştir, bir hata durumunda bağlantının ağırlığı yönünde 1 değişir. hatanın tersi meydana geldi. Rosenblatt tarafından kanıtlandığı gibi bu algoritma her zaman yakınsar. Böyle bir model kullanarak, o zamanlar şüphesiz büyük bir başarı olan Latin alfabesinin bazı harflerini tanıyan bir bilgisayar oluşturmak mümkün oldu.

Bununla birlikte, sinir ağlarına olan ilgi, 1969'da M. Minsky ve S. Papert tarafından, algılayıcı modelinin sahip olduğu önemli sınırlamaları, özellikle dışlayıcı veya ve ayrıca sinir ağlarını eğitmek için bilgisayarların gerekli bilgi işlem gücü için çok yüksek gereksinimlere işaret etti. Bu bilim adamlarının bilim camiasında çok yüksek bir otoriteye sahip olmaları nedeniyle, sinir ağları bir süre için ümit vaat etmeyen bir teknoloji olarak kabul edildi. Durum ancak 1974'te geri yayılım algoritmasının oluşturulmasından sonra değişti.

Geri yayılım algoritması 1974'te iki bilim adamı, P. Verbos ve A. Galushkin tarafından eşzamanlı ve bağımsız olarak önerildi. Bu algoritma, gradyan iniş yöntemine dayanmaktadır. Algoritmanın ana fikri, hata bilgisini ağ çıkışlarından girişlerine, yani standart yaklaşıma göre ters yönde yaymaktır. Bu durumda bağlantıların ağırlıkları, kendilerine ulaşan hata hakkındaki bilgilere göre ayarlanır. Şaşırtıcı olmayan gradyan iniş yöntemi gradiyente dayalı olarak hesaplandığından, bu algoritmanın getirdiği temel gereksinim, nöronların aktivasyon fonksiyonunun türevlenebilir olması gerektiğidir.

Geri yayılım algoritması, daha önce bu endüstrinin gelişimini engelleyen algılayıcı sınırlamalarını atlamanıza izin veren, birden çok gizli katmana sahip bir ağı eğitmeyi kolaylaştırır. Matematiksel bir bakış açısından, bu algoritma, oldukça iyi çalışılmış ve optimize edilmiş bir problem olan sıralı matris çarpımına indirgenmiştir. Ek olarak, bu algoritma, ağ eğitim süresini önemli ölçüde hızlandırabilen iyi paralelleştirilmiştir. Bütün bunlar birlikte, sinir ağlarının yeni bir çiçeklenmesine ve bu yönde birçok aktif araştırmaya yol açtı.

Geri yayılım algoritmasının aynı zamanda bir takım sorunları vardır. Bu nedenle, gradyan inişinin kullanılması, yerel bir minimuma yakınsama riskini içerir. Diğer bir önemli problem ise, çok sayıda katman varlığında algoritmanın uzun öğrenme süresidir, çünkü geri yayılım sürecindeki hata, sırasıyla ağın başlangıcına yaklaşıldığında, ilk katmanların eğitimi sırasında giderek daha fazla azalma eğilimindedir. ağ son derece yavaş olacaktır. Genel olarak sinir ağlarında bulunan bir diğer dezavantaj, çalışmalarının sonuçlarını yorumlamanın zorluğudur. Eğitilmiş sinir ağı modeli, girişi bir nesne ve çıkışı bir tahmin olan bir tür kara kutudur, ancak giriş nesnesinin hangi özelliklerinin dikkate alındığını ve nöronlardan hangilerinin dikkate alındığını belirlemek genellikle oldukça sorunludur. neyden sorumludur. Bu, örneğin, eğitilmiş modelin kendisinin, incelenen konu alanı hakkında bir miktar bilgi özetini temsil ettiği ve araştırmacının bu nesnenin neden belirli bir nesneye atandığını anlamasının kolay olduğu karar ağaçlarına kıyasla sinir ağlarını çok daha az çekici kılar. sınıf.

Bu eksiklikler, sinir ağlarının iyi performans göstermesine rağmen, bu sonuçların giderek daha popüler hale gelen destek vektör makineleri gibi diğer sınıflandırıcıların sonuçlarıyla karşılaştırılabilir olması, ikincisinin yorumlanmasının çok daha kolay olması ve eğitimin daha az zaman gerektirmesi gerçeğiyle birleştiğinde, sinir ağlarının gelişiminde bir başka düşüş.

Bu düşüş ancak derin öğrenme veya derin öğrenme kavramının ortaya çıktığı ve yayılmaya başladığı 21. yüzyılın 2000'li yıllarında sona erdi. Sinir ağlarının canlanması, evrişimli ağlar, kısıtlı bolzman makineleri, yığınlanmış otomatik kodlayıcılar vb. gibi yeni mimarilerin ortaya çıkmasıyla kolaylaştırıldı ve bu da görüntü ve konuşma tanıma gibi makine öğrenimi alanlarında önemli ölçüde daha iyi sonuçlar elde etmeyi mümkün kıldı. Gelişimleri için önemli bir faktör de güçlü grafik kartlarının ortaya çıkması ve yayılması ve bunların bilgi işlem görevleri için kullanılmasıydı. Bir işlemciye kıyasla önemli ölçüde daha fazla çekirdek sayısına sahip olan ve her biri daha az güce sahip olan video kartları, sinir ağlarını eğitmek için idealdir. Bu, genel olarak bilgisayarların son zamanlarda önemli ölçüde artan performansı ve bilgi işlem kümelerinin yayılmasıyla birleştiğinde, sinir ağlarının öncekinden önemli ölçüde daha karmaşık ve derin mimarilerini eğitmeyi mümkün kılmıştır.

1.3 derinöğrenme

Makine öğrenmesi algoritmalarını kullanırken karşılaşılması gereken en önemli sorunlardan biri, eğitimin gerçekleştirileceği temele göre doğru öznitelikleri seçme sorunudur. Bu sorun, görüntü tanıma, konuşma tanıma, doğal dil işleme ve benzerleri, yani öğrenme için kullanılabilecek belirgin bir dizi özelliğin olmadığı sorunlar göz önüne alındığında özellikle önemli hale gelir. Genellikle, eğitim için bir dizi özellik seçimi, araştırmacı tarafından bazı analitik çalışmalar yoluyla gerçekleştirilir ve algoritmanın başarısını büyük ölçüde belirleyen, seçilen özellikler kümesidir. Bu nedenle, görüntü tanıma sorunu için, bu tür özellikler görüntüdeki baskın renk, değişimin derecesi, görüntüde net sınırların varlığı veya başka bir şey olabilir. Görüntü tanıma sorunu ve bunun için doğru özelliklerin seçimi ilgili bölümde daha ayrıntılı olarak ele alınacaktır.

Ancak, bu yaklaşımın önemli dezavantajları vardır. İlk olarak, bu yaklaşım, özellikleri belirlemek için önemli miktarda çalışma gerektirir ve bu çalışma, araştırmacı tarafından manuel olarak yürütülür ve zaman alıcı olabilir. İkincisi, niteliksel bir algoritmanın elde edilebileceği temelinde özelliklerin tanımlanması, bu durumda büyük ölçüde rastgele hale gelir, ayrıca bu şekilde görüntünün iç yapısı üzerinde önemli bir etkiye sahip olabilecek özelliklerin ortaya çıkması olası değildir. dikkate alınmalıdır, ancak insanlar için açık olmadığında. Bu nedenle, daha sonra makine öğrenimi algoritmalarının çalışması için kullanılabilecek özelliklerin otomatik olarak algılanması fikri özellikle çekici görünüyor. İşte tam da bu, derin öğrenme yaklaşımının kullanılmasının sağladığı fırsattır.

Makine öğrenimi teorisi açısından, derin öğrenme, temsili öğrenme olarak adlandırılanın bir alt kümesidir. Temsil öğreniminin ana konsepti, gelecekte bazı algoritmaların, örneğin sınıflandırmanın çalışacağı temelinde, özelliklerin otomatik olarak aranmasıdır.

Öte yandan, makine öğrenimini kullanırken karşılaşılması gereken bir diğer önemli sorun, orijinal verilerin görünümü üzerinde önemli bir etkiye sahip olabilecek, ancak araştırmacının kendi özleriyle ilgili olmayan varyasyon faktörlerinin varlığıdır. analiz etmeye çalışıyorum.. Bu nedenle, görüntü tanıma probleminde, bu tür faktörler görüntüdeki nesnenin gözlemciye dönük olduğu açı, günün saati, aydınlatma vb. olabilir. Yani bakış açısına ve hava durumuna bağlı olarak kırmızı bir araba fotoğrafta farklı bir gölge ve şekle sahip olabilir. Bu nedenle, bir fotoğraftaki bir nesneyi tanımlamak gibi bu tür görevler için, belirli bir pikselin rengi gibi belirli düşük seviyeli gerçekleri değil, daha yüksek bir soyutlama seviyesinin özelliklerini, örneğin, tekerleklerin varlığı. Ancak, orijinal görüntü temelinde tekerlekleri olup olmadığının belirlenmesinin basit bir iş olmadığı ve doğrudan çözümü çok zor olabileceği açıktır. Ek olarak, tekerleklerin varlığı, çok sayıda olası işaretten yalnızca biridir ve hepsini belirlemek ve görüntüyü varlıkları için kontrol etmek için algoritmalar derlemek çok gerçekçi görünmüyor. Araştırmacıların derin öğrenme yaklaşımından tam olarak yararlanabileceği yer burasıdır. Derin öğrenme, ilk nesnenin hiyerarşik bir özellik yapısı biçiminde sağlanmasına dayanır, böylece her bir sonraki özellik seviyesi, bir önceki seviyenin öğeleri temelinde inşa edilir. Yani, görüntülerden bahsediyorsak, görüntünün ilk pikselleri en düşük seviye olarak hareket edecek, bu pikseller arasında ayırt edilebilecek segmentler bir sonraki seviye olacak, ardından segmentlerin eklendiği köşeler ve diğer geometrik şekiller olacak. . Figürlerinin bir sonraki seviyesinde, insanlar tarafından zaten tanınan nesneler, örneğin tekerlekler oluşur ve son olarak, hiyerarşinin son seviyesi, görüntüdeki belirli nesnelerden, örneğin bir arabadan sorumludur.

Modern bilimde derin öğrenme yaklaşımını uygulamak için çeşitli mimarilerin çok katmanlı sinir ağları kullanılır. Sinir ağları, verilerden tanımlama ve hiyerarşik bir dizi özellik oluşturma problemini çözmek için idealdir, çünkü aslında bir sinir ağı, her biri yalnızca giriş verileri belirli kriterleri karşılıyorsa etkinleştirilen bir nöronlar topluluğudur - yani , belirli bir özelliği temsil ederken, nöron aktivasyonunun kuralları - bu özelliği belirleyen budur - otomatik olarak öğrenilir. Aynı zamanda, sinir ağları en yaygın biçimleriyle, kendi içlerinde, bir sonraki nöron katmanının girdi olarak önceki katmanın nöronlarının çıktılarını - veya başka bir deyişle, daha yüksek bir katmanın özelliklerini kullandığı hiyerarşik bir yapıyı temsil eder. seviye, daha düşük bir seviyenin özelliklerine göre oluşturulur.

Bu yaklaşımın yayılması ve bununla bağlantılı olarak, sinir ağlarının bir sonraki çiçeklenmesi, birbiriyle ilişkili üç nedenden kaynaklanmaktadır:

Belirli sorunları çözmek için keskinleştirilmiş yeni sinir ağları mimarilerinin ortaya çıkışı (evrişimli ağlar, Boltzmann makineleri, vb.)

Genel olarak gpu hesaplama ve paralel hesaplamanın geliştirilmesi ve erişilebilirliği

Her katmanın standart geri yayılım algoritması kullanılarak (genellikle etiketlenmemiş veriler üzerinde, yani aslında otomatik kodlayıcı eğitilir) ayrı ayrı eğitildiği sinir ağlarının katman katman eğitimi yaklaşımının ortaya çıkması ve yaygınlaşması. bu seviyede önemli özellikleri belirlemeniz ve ardından tüm katmanların tek bir ağda birleştirilmesi ve ağ, belirli bir sorunu çözmek için işaretlenmiş veriler kullanılarak daha fazla eğitilir (ince ayar). Bu yaklaşımın iki önemli avantajı vardır. İlk olarak, bu, ağ eğitiminin verimliliğini önemli ölçüde artırır, çünkü her an eğitilen derin bir yapı değil, bir gizli katmana sahip bir ağdır - sonuç olarak, ağ derinliği olarak hata değerlerinin azalmasıyla ilgili sorunlar artar ve öğrenme oranında buna karşılık gelen bir azalma ortadan kalkar. İkinci olarak, ağ eğitimine yönelik bu yaklaşım, eğitim sırasında etiketlenmemiş verileri kullanmanıza olanak tanır, bu genellikle etiketlenenden çok daha fazlasıdır - bu da ağ eğitimini araştırmacılar için daha kolay ve daha erişilebilir hale getirir. Bu yaklaşımda etiketlenmiş veriler, yalnızca belirli bir sınıflandırma problemini çözmek için ağa ince ayar yapmak için ve aynı zamanda verileri tanımlayan özelliklerin genel yapısı önceki süreçte zaten oluşturulmuş olduğundan, yalnızca en sonunda gereklidir. eğitim, ağa ince ayar yapmak için ilk eğitimden çok daha az veri gereklidir. işaretleri tanımlamak için. Bu yaklaşımın kullanılması, gerekli etiketlenmiş veri miktarını azaltmanın yanı sıra, büyük miktarda etiketlenmemiş veri kullanarak ağı bir kez eğitmenize ve ardından elde edilen özellik yapısını çeşitli sınıflandırma problemlerini çözmek için kullanmanıza, farklı kullanarak ağa ince ayar yapmanıza olanak tanır. veri setleri - her seferinde tam ağ eğitimi durumunda gerekli olandan çok daha kısa sürede.

Derin öğrenme bağlamında yaygın olarak kullanılan ana sinir ağı mimarilerine daha yakından bakalım.

· Çok katmanlı algılayıcı - çok sayıda katmana sahip geleneksel tam bağlantılı bir sinir ağıdır. Kaç katmanın yeterince büyük olduğu sorusunun net bir cevabı yoktur, ancak genellikle 5-7 katmana sahip ağlar zaten "derin" olarak kabul edilir. Sinir ağlarının bu mimarisi, derin öğrenme kavramının yaygınlaşmasından önce kullanılan ağlardan temel farklılıkları olmasa da, temel problem olan eğitim problemi başarılı bir şekilde çözülürse çok etkili olabilir. daha önce bu tür ağlarla çalışmak. Şu anda, bu sorun, daha hızlı eğitime ve buna bağlı olarak daha fazla eğitim yinelemesine veya daha önce bahsedilen katmanlı ağ eğitimine izin veren ağ eğitimi için grafik kartları kullanılarak çözülmektedir. Bu nedenle, 2012 yılında Ciresan ve meslektaşları, yeterli bir eğitim süresi durumunda (başarılı olan) çok sayıda katmana sahip çok katmanlı bir algılayıcının varsayımını yaptıkları "Rakam tanıma için derin büyük çok katmanlı algılayıcılar" başlıklı bir makale yayınladılar. makul bir sürede gpu üzerinde paralel hesaplama kullanarak) ve eğitim için yeterli veri (orijinal veri kümesine çeşitli rastgele dönüşümler uygulayarak elde edilir) diğer, daha karmaşık modellerden daha kötü olmayan performans gösterebilir. 5 gizli katmana sahip bir sinir ağı olan modelleri, MNIST veri setinden sayıları sınıflandırırken, daha karmaşık modellerin daha önce yayınlanmış sonuçlarından daha iyi olan 0.35 hata oranı gösterdi. Ayrıca, bu şekilde eğitilmiş birkaç ağı tek bir modelde birleştirerek hata oranını %0,31'e düşürmeyi başardılar. Bu nedenle, görünen basitliğine rağmen, çok katmanlı algılayıcı, derin öğrenme algoritmalarının oldukça başarılı bir temsilcisidir.

· Yığılmış otomatik kodlayıcı (yığın otomatik kodlayıcı) - bu model çok katmanlı algılayıcıyla ve genel olarak derin sinir ağlarını eğitme göreviyle yakından ilgilidir. Derin ağların katman katman eğitiminin uygulanması, bir yığın otomatik kodlayıcının kullanılmasıyla gerçekleşir. Ancak bu model sadece diğer modelleri eğitmek amacıyla kullanılmaz, çoğu zaman kendi içinde büyük pratik değere sahiptir. Yığılmış bir otomatik kodlayıcının özünü tanımlamak için önce geleneksel bir otomatik kodlayıcı kavramını ele alalım. Otomatik kodlayıcı, bir sinir ağının beklenen çıkış değerlerinin kendi giriş değerleri olduğu denetimsiz bir öğrenme algoritmasıdır. Şematik olarak, otomatik kodlayıcı modeli Şekil 2'de gösterilmektedir:

Şekil 2. Klasik otomatik kodlayıcı

Açıkçası, gizli katmandaki nöronların sayısı giriş nöronlarının sayısına eşitse, böyle bir modeli eğitme görevinin önemsiz bir çözümü vardır - o zaman gizli katmanın girdi değerlerini çıktıya çevirmesi yeterlidir. Bu nedenle, otomatik kodlayıcıları eğitirken, örneğin, gizli katmandaki nöronların sayısı giriş katmanındakinden önemli ölçüde daha az olacak şekilde ayarlanan ek kısıtlamalar getirilir veya yüksek derecede nöron seyrekliğini sağlamak için özel düzenleme teknikleri kullanılır. gizli katman. Otomatik kodlayıcıların en saf haliyle en yaygın kullanımlarından biri, orijinal verilerin sıkıştırılmış bir temsilini elde etme görevidir. Örneğin, gizli katmanda MNIST veri kümesinde eğitilmiş 30 nöronlu bir otomatik kodlayıcı, çıktı katmanındaki rakamların orijinal görüntülerini neredeyse hiç değişiklik yapmadan geri yüklemenize olanak tanır, yani aslında orijinal görüntülerin her biri, sadece 30 sayı ile doğru bir şekilde tanımlanmalıdır. Bu uygulamada, otomatik kodlayıcılar genellikle Temel Bileşen Analizine bir alternatif olarak düşünülür. Yığılmış bir otomatik kodlayıcı, esasen, katman katman öğretilen birkaç geleneksel otomatik kodlayıcının bir kombinasyonudur. Bu durumda, otomatik kodlayıcıların ilkinin gizli katmanının eğitilmiş nöronlarının çıkış değerleri, ikincisi için giriş değerleri olarak hareket eder, vb.

Evrişimli ağlar, son zamanlarda en popüler derin öğrenme modellerinden biridir ve öncelikle görüntü tanıma için kullanılır. Evrişimsel ağlar kavramı üç ana fikir üzerine kurulmuştur:

o Yerel duyarlılık (yerel alıcı alanlar) - görüntü tanıma görevi hakkında konuşursak, bu, görüntüdeki bir veya başka bir öğenin tanınmasının öncelikle yakın çevresinden etkilenmesi gerektiği anlamına gelirken, görüntünün başka bir bölümünde bulunan pikseller , büyük olasılıkla bu öğeyle hiçbir şekilde ilgili değiller ve onu doğru bir şekilde tanımlamaya yardımcı olacak bilgiler içermiyorlar.

o Paylaşılan ağırlıklar - modelde paylaşılan ağırlıkların varlığı, aynı nesnenin görüntünün herhangi bir yerinde bulunabileceği varsayımını somutlaştırırken, aynı modelin (ağırlıklar kümesi) onu aramak için tüm bölümlerinde kullanılır. resim

o Alt örnekleme (alt örnekleme) - modeli istenen modelden küçük sapmalara karşı daha dayanıklı hale getirmenize olanak tanıyan bir kavram - küçük deformasyonlar, ışık değişiklikleri vb. ile ilişkili olanlar dahil. Alt örnekleme fikri, bir desenle eşleştirirken, dikkate alınan belirli bir piksel veya piksel alanı için kesin değer değil, belirli bir mahallede toplanması, örneğin ortalama veya maksimum değer.

Matematiksel bir bakış açısından, evrişimli sinir ağlarının temeli, orijinal görüntünün küçük bir alanını (örneğin, 7 * 7 piksel) temsil eden bir matrisin eleman-eleman çarpımından oluşan matris evrişim işlemidir. evrişim çekirdeği adı verilen aynı boyutta bir matrisle ve ardından elde edilen değerleri toplayarak. Bu durumda, mutabakat çekirdeği esasen bir şablondur ve toplama sonucunda elde edilen sayı, belirli bir görüntü alanının bu şablona benzerlik derecesini karakterize eder. Buna göre, evrişimli ağın her katmanı belirli sayıda kalıptan oluşur ve ağın eğitilmesinin görevi, orijinal görüntülerin en önemli özelliklerini yansıtacak şekilde bu kalıplardaki doğru değerleri seçmektir. Bu durumda, her şablon görüntünün tüm bölümleriyle sırayla karşılaştırılır - ağırlıkların ayrılması fikrinin ifade bulduğu yer burasıdır. Evrişimli bir ağdaki bu tür katmanlara evrişim katmanları denir. Evrişim katmanlarına ek olarak, evrişimli ağlar, görüntünün küçük alanlarını tek bir sayıyla değiştiren alt örnekleme katmanlarına sahiptir, böylece aynı anda bir sonraki katmanın üzerinde çalışacağı örnek boyutunu azaltır ve ağı verilerdeki küçük değişikliklere karşı daha dirençli hale getirir. Evrişimli ağın son katmanlarında, genellikle doğrudan nesne sınıflandırması yapmak üzere eğitilmiş bir veya daha fazla tam bağlantılı katman kullanılır. Son yıllarda evrişimli ağların kullanımı görüntü sınıflandırmada fiili standart haline geldi ve bu alanda en iyi sonuçları elde etmenizi sağlıyor.

· Kısıtlı Boltzmann Makineleri - evrişimli ağlardan farklı olarak, öncelikle konuşma tanıma görevi için kullanılan başka bir derin öğrenme modeli türüdür. Klasik anlamda Boltzmann makinesi, kenarları düğümler (nöronlar) arasındaki bağımlılıkları yansıtan yönsüz bir grafiktir. Nöronların bir kısmı görünür, bir kısmı gizlidir. Sinir ağları açısından, Boltzmann makinesi esasen tekrarlayan bir sinir ağıdır, istatistikler açısından rastgele bir Markov alanıdır. Boltzmann makineleri için önemli kavramlar, ağ enerjisi ve denge durumu kavramlarıdır. Ağın enerjisi, birbirine güçlü şekilde bağlı kaç nöronun aynı anda etkin durumda olduğuna bağlıdır, böyle bir ağın eğitilmesi görevi ise enerjisinin minimum olduğu bir denge durumuna yakınsamaktır. Bu tür ağların ana dezavantajı, genel anlamda onları eğitmedeki büyük problemlerdir. Bu sorunu çözmek için, J. Hinton ve meslektaşları, ağ yapısına bir kısıtlama getiren ve onu bir kısmında yalnızca görünür nöronların olduğu ve diğerinde yalnızca iki parçalı bir grafik olarak temsil eden bir Kısıtlı Boltzmann Makineleri modeli önerdiler. gizli olanlar. sırasıyla, bağlantılar yalnızca görünür ve gizli nöronlar arasında bulunur. Bu sınırlama, konuşma tanıma sorunlarının çözümünde önemli ilerleme kaydedildiği için bu tür eğitim ağları için verimli algoritmalar geliştirmeyi mümkün kıldı, bu model neredeyse daha önce popüler olan gizli Markov ağları modelinin yerini aldı.

Şimdi, derin öğrenmenin temel kavramlarını ve ilkelerini göz önünde bulundurarak, görüntü tanıma gelişiminin temel ilkelerini ve evrimini ve derin öğrenmenin içinde hangi yeri kapladığını kısaca ele alacağız.

1.4 Görüntü tanıma

Görüntü tanıma problemi için pek çok formülasyon vardır ve bunu açık bir şekilde tanımlamak oldukça zordur. Örneğin, görüntü tanıma, orijinal görüntüdeki bazı mantıksal nesneleri arama ve tanımlama görevi olarak düşünülebilir.

Görüntü tanıma genellikle bir bilgisayar algoritması için zor bir iştir. Bu, her şeyden önce, bireysel nesnelerin görüntülerinin yüksek değişkenliğinden kaynaklanmaktadır. Bu nedenle, bir görüntüde bir araba arama görevi, bir nesnede bir araba için önemli özelliklerin (tekerlekler, belirli bir şekil) varlığını otomatik olarak tanımlayabilen ve gerekirse "alabilen insan beyni için basittir. ” Hayal gücündeki resim, eksik detayları temsil ediyor ve bir bilgisayar için son derece zor, çünkü birçok farklı şekle sahip çok sayıda farklı marka ve model araba çeşidi var, buna ek olarak, son şekli görüntüdeki nesne, çekim noktasına, kaldırıldığı açıya ve diğer parametrelere büyük ölçüde bağlıdır. Aydınlatma ayrıca, ortaya çıkan görüntünün rengini etkileyen ve ayrıca bireysel ayrıntıları görünmez veya çarpık hale getiren önemli bir rol oynar.

Bu nedenle, görüntü tanımadaki ana zorluklar şunlardan kaynaklanır:

Sınıftaki çeşitli öğeler

Görüntüdeki şekil, boyut, yön, konum değişkenliği

Aydınlatma değişkenliği

Bu zorluklarla mücadele etmek için, görüntü tanıma tarihi boyunca çeşitli yöntemler önerilmiştir ve şu anda bu alanda önemli ilerleme kaydedilmiştir.

Görüntü tanıma alanındaki ilk çalışmalar 1963'te L. Roberts tarafından "Üç Boyutlu Katıların Makine Algısı" makalesinde yayınlandı, burada yazarın bir nesne şeklindeki olası değişikliklerden soyutlamaya çalıştığı ve üzerinde odaklandığı "Üç Boyutlu Katıların Makine Algısı". farklı aydınlatma koşullarında ve dönüşler olduğunda basit geometrik şekillerin görüntü tanıması. Geliştirdiği bilgisayar programı, görüntüdeki bazı basit şekillerdeki geometrik nesneleri tanımlayabiliyor ve bilgisayarda üç boyutlu modelini oluşturabiliyordu.

1987'de S. Ulman ve D. Huttenlocher, "Hizalama Kullanarak Nesne Tanıma" başlıklı bir makale yayınladılar ve burada nispeten basit şekillerdeki nesneleri tanıma girişiminde bulundular ve tanıma süreci iki aşamada organize edildi: birincisi, bir alan araması hedef nesnenin bulunduğu görüntüde ve küçük bir dizi karakteristik özellik kullanarak olası boyutlarını ve yönünü (“hizalama”) belirlemek ve ardından nesne pikselinin potansiyel görüntüsünü piksel piksel beklenen görüntüyle karşılaştırmak.

Bununla birlikte, görüntülerin piksel piksel karşılaştırılması, karmaşıklığı, olası sınıfların her bir nesnesi için bir şablona ihtiyaç duyulması ve piksel piksel karşılaştırma durumunda, yalnızca piksel bazında karşılaştırma yapılması gibi birçok önemli dezavantaja sahiptir. belirli bir nesne aranabilir ve tüm bir nesne sınıfı aranamaz. Bazı durumlarda bu uygulanabilir, ancak çoğu durumda belirli bir nesneyi değil, belirli bir sınıfın birçok nesnesini aramanız gerekir.

Görüntü tanımanın daha da geliştirilmesindeki önemli yönlerden biri, kontur tanımlamaya dayalı görüntü tanımaydı. Çoğu durumda, görüntü hakkındaki bilgilerin çoğunu içeren konturlardır ve aynı zamanda, görüntüyü bir kontur kümesi olarak düşünmek onu önemli ölçüde basitleştirebilir. Bir görüntüde kontur bulma problemini çözmek için, klasik ve en iyi bilinen yaklaşım, çalışmaları yerel maksimum gradyanı bulmaya dayanan Canny Edge Detector'dır.

Görüntü analizi alanındaki bir diğer önemli yön, frekans filtreleme ve spektral analiz gibi matematiksel yöntemlerin uygulanmasıdır. Bu yöntemler, örneğin görüntüleri sıkıştırmak (JPEG sıkıştırması) veya kalitesini iyileştirmek (Gauss filtresi) için kullanılır. Ancak bu yöntemler doğrudan görüntü tanıma ile ilgili olmadığı için burada daha ayrıntılı olarak ele alınmayacaktır.

Görüntü tanıma problemi ile bağlantılı olarak sıklıkla düşünülen bir diğer problem de segmentasyon problemidir. Segmentasyonun temel amacı, görüntüdeki her biri ayrı ayrı incelenebilen ve sınıflandırılabilen ayrı nesnelerin seçilmesidir. Orijinal görüntü ikili ise, yani yalnızca iki renkten oluşan piksellerden oluşuyorsa, segmentasyon görevi büyük ölçüde basitleştirilmiştir. Bu durumda, segmentasyon problemi genellikle matematiksel morfoloji yöntemleri kullanılarak çözülür. Matematiksel morfoloji yöntemlerinin özü, bir görüntüyü bir ikili değerler kümesi olarak temsil etmek ve bu kümeye mantıksal işlemler uygulamaktır, başlıcaları transfer, büyüme (mantıksal toplama) ve erozyon (mantıksal çarpma). Kapatma ve açma gibi bu işlemlerin ve türevlerinin kullanılmasıyla, örneğin görüntüdeki gürültüyü ortadan kaldırmak veya sınırları vurgulamak mümkün hale gelir. Segmentasyon probleminde bu tür yöntemler kullanılırsa, en önemli görevi sadece gürültüyü ortadan kaldırmak ve görüntü üzerinde az çok homojen alanlar oluşturmak ve daha sonra bir grafikte bağlı bileşenleri aramaya benzer algoritmalar kullanarak bulmak kolay hale gelir. - bunlar istenen bölümler Görüntüler olacaktır.

RGB görüntülerinin bölütlenmesine gelince, görüntü bölümleri hakkında önemli bilgi kaynaklarından biri de dokusu olabilir. Bir görüntünün dokusunu belirlemek için, doku algısının özelliklerini insan vizyonuyla yeniden üretme girişiminde oluşturulan Gabor filtresi sıklıkla kullanılır. Bu filtre, görüntünün frekans dönüştürme işlevine dayanmaktadır.

Görüntü tanıma için kullanılan bir diğer önemli algoritma ailesi, yerel öznitelik aramaya dayalı algoritmalardır. Yerel özellikler, görüntüyü modelle (aradığınız nesne) ilişkilendirmenize ve verilen görüntünün modelle eşleşip eşleşmediğini belirlemenize ve eğer öyleyse model parametrelerini belirlemenize (örneğin, , eğim açısı, uygulanan sıkıştırma vb.) . İşlevlerinin niteliksel performansı için yerel tekillikler, afin dönüşümlere, kaymalara vb. karşı dirençli olmalıdır. Yerel özelliklerin klasik bir örneği, genellikle çeşitli nesnelerin sınırlarında bulunan köşelerdir. Köşeleri bulmak için en popüler algoritma Harris dedektörüdür.

Son zamanlarda, sinir ağlarına ve derin öğrenmeye dayalı görüntü tanıma yöntemleri giderek daha popüler hale geldi. Bu yöntemlerin ana çiçeklenmesi, 20. yüzyılın sonunda, diğer yöntemlere kıyasla görüntü tanımada önemli ölçüde daha iyi sonuçlar veren evrişimsel ağların (LeCun, ) ortaya çıkmasından sonra geldi. Bu nedenle, yıllık görüntü tanıma yarışması ImageNet-2014'teki önde gelen (yalnızca değil) algoritmaların çoğu, şu veya bu biçimde evrişimli ağları kullandı.

1.5 Trafik işareti tanıma

Genel olarak konuşursak, trafik işareti tanıma, görüntü tanımanın veya bazı durumlarda video kayıtlarının birçok görevinden biridir. Bu görev, örneğin araba kontrol otomasyon programlarında trafik işareti tanıma kullanıldığından büyük pratik öneme sahiptir. Yol işaretlerini tanıma görevinin birçok varyasyonu vardır - örneğin, bir fotoğrafta yol işaretlerinin varlığının belirlenmesi, bir görüntüde bir yol işareti olan bir alanın vurgulanması, bir fotoğrafta açıkça bir resim olan hangi özel işaretin gösterildiğinin belirlenmesi. yol levhası vb. Genellikle, yol işaretlerinin tanınmasıyla ilgili üç küresel görev vardır - çevredeki manzara arasında tanımlama, doğrudan tanıma veya sınıflandırma ve sözde izleme - bu, algoritmanın "takip etme", yani, video dizisinde trafik işaretini odakta tutun. Bu alt görevlerin her biri kendi içinde ayrı bir araştırma konusudur ve genellikle kendi araştırmacıları ve geleneksel yaklaşımları vardır. Bu çalışmada, bir fotoğrafta gösterilen bir yol işaretini sınıflandırma sorununa odaklanıldı, bu yüzden daha ayrıntılı olarak ele alacağız.

Bu görev, dengesiz frekansa sahip sınıflar için bir sınıflandırma görevidir. Bu, bazı sınıflar diğerlerinden daha yaygın olduğu için farklı sınıflara ait bir görüntünün olasılığının farklı olduğu anlamına gelir - örneğin, Rus yollarında, hız sınırı işareti “40”, “Trafikte yok” işaretinden çok daha yaygındır. . Ek olarak, yol işaretleri, bir grup içindeki sınıflar birbirine çok benzer olacak şekilde birkaç sınıf grubu oluşturur - örneğin, tüm hız sınırı işaretleri çok benzer görünür ve yalnızca içlerindeki sayılarda farklılık gösterir; bu, elbette, trafiği önemli ölçüde karmaşıklaştırır. sınıflandırma görevi Öte yandan, yol levhalarının net bir geometrik şekli ve küçük bir olası renk kümesi vardır, bu da sınıflandırma prosedürünü büyük ölçüde basitleştirebilir - yol levhalarının gerçek fotoğraflarının farklı açılardan ve farklı aydınlatma koşullarında çekilebileceği gerçeği olmasa bile. . Bu nedenle, yol işaretlerini sınıflandırma görevi, tipik bir görüntü tanıma görevi olarak düşünülebilse de, en iyi sonucu elde etmek için özel bir yaklaşım gerektirir.

Belli bir zamana kadar, her araştırmacı kendi görevini belirlediği ve kendi veri setini kullandığı için bu konudaki araştırmalar oldukça kaotik ve ilgisizdi, bu nedenle mevcut sonuçları karşılaştırmak ve genellemek mümkün değildi. Bu nedenle, 2005 yılında, Bahlmann ve meslektaşları, trafik işareti tanımanın daha önce bahsedilen 3 alt görevinin tümünü destekleyen kapsamlı bir trafik işareti tanıma sisteminin bir parçası olarak, 23 farklı trafik işareti için %94 doğrulukla çalışan bir işaret tanıma algoritması uyguladılar. sınıflar. Eğitim 40.000 görüntü üzerinde gerçekleştirilirken, her sınıfa karşılık gelen görüntü sayısı 30 ile 600 arasında değişmektedir. Bu sistemde yol işaretlerini tespit etmek için AdaBoost algoritması ve Haar dalgacıkları kullanılmış ve Beklenti Maksimizasyonu algoritmasına dayalı bir yaklaşım kullanılmıştır. Bulunan işaretleri sınıflandırmak için. Moutarde tarafından 2007'de geliştirilen hız limitli bir trafik işareti tanıma sistemi %90'a varan bir doğruluğa sahipti ve 281 görüntüden oluşan bir set üzerinde eğitildi. Bu sistemde, görüntülerdeki trafik işaretlerini (sırasıyla Avrupa ve Amerika işaretleri için) tespit etmek için daire ve kare dedektörler kullanıldı; burada her bir rakam daha sonra bir sinir ağı kullanılarak ayıklandı ve sınıflandırıldı. 2010 yılında, Ruta ve meslektaşları 48 farklı trafik işaretini tespit etmek ve sınıflandırmak için %85,3'lük bir sınıflandırma doğruluğu ile bir sistem geliştirdiler. Yaklaşımları, görüntüdeki daireleri ve çokyüzlüleri aramaya ve bu işareti diğerlerinden ayırt etmeyi mümkün kılan az sayıda özel bölgeyi vurgulamaya dayanıyordu. Bu durumda, yazarlar tarafından Renk Mesafe Dönüşümü adı verilen ve görüntüde bulunan renklerin sayısını azaltmaya ve buna bağlı olarak görüntüleri karşılaştırma olanaklarını artırmaya ve görüntünün boyutunu küçültmeye olanak tanıyan özel bir görüntü renk dönüşümü uygulandı. işlenmiş veriler. Broggie ve Collen 2007'de yol işaretlerini tespit etmek ve sınıflandırmak için renk segmentasyonu, şekil tespiti ve bir sinir ağından oluşan üç aşamalı bir algoritma önerdiler, ancak yayınları algoritmalarının sonuçlarının nicel göstergelerinden yoksundur. Gao ve diğerleri, 2006 yılında, amaçlanan işaretin renginin ve şeklinin analizine dayanan bir trafik işareti tanıma sistemi önerdi ve 98 trafik işareti örneği arasında %95'lik bir tanıma doğruluğu gösterdi.

Trafik işareti tanıma alanındaki araştırmaların parçalanmasıyla ilgili durum, 2011 yılında IJCNN (Uluslararası Sinir Ağları Ortak Konferansı) konferansının trafik işareti tanıma yarışması düzenlediğinde değişti. Bu yarışma için, Alman yollarında bulunan ve 43 farklı sınıfa ait 50.000'den fazla yol levhası görüntüsünü içeren Alman Trafik İşareti Tanıma Benchmark (GTSRB) veri seti geliştirildi. Bu veri setinden yola çıkılarak iki aşamadan oluşan bir yarışma düzenlendi. İkinci aşama sonucunda “İnsan vs. Bilgisayar: Trafik İşareti Tanıma için Kıyaslama Makine Öğrenimi Algoritmaları”, yarışmanın sonuçlarına genel bir bakış ve en başarılı takımlar tarafından kullanılan yaklaşımların bir tanımını sağlar. Ayrıca, bu etkinliğin ardından, algoritmaların yazarları - yarışmaya katılanlar - tarafından bir dizi makale yayınlandı ve bu veri seti daha sonra trafik işareti tanıma ile ilgili algoritmalar için kuyuya benzer şekilde temel kriter haline geldi. El yazısıyla yazılan rakam tanıma için bilinen MNIST.

Bu yarışmadaki en başarılı algoritmalar arasında evrişimli ağlar komitesi (IDSIA ekibi), çok ölçekli evrişimli ağ (Multi-Scale CNN, Sermanet ekibi) ve rastgele orman (Random Forests, CAOR ekibi) yer alıyor. Bu algoritmaların her birine daha yakından bakalım.

D. Ciresan başkanlığındaki İtalyan Dalle Molle Yapay Zeka Araştırma Enstitüsü'nden IDSIA ekibi tarafından önerilen Sinir Ağları Komitesi, bir kişinin doğruluğundan (%99.22) daha yüksek olan %99.46'lık bir işaret sınıflandırma doğruluğu elde etti, aynı yarışmanın bir parçası olarak değerlendirildi. Bu algoritma daha sonra “Traffik Sign Sınıflandırması için Çok Sütunlu Derin Sinir Ağı” makalesinde daha ayrıntılı olarak açıklanmıştır. Yaklaşımın ana fikri, orijinal verilere 4 farklı normalleştirme yönteminin uygulanmasıdır: Görüntü Ayarlama, Histogram Eşitleme, Uyarlamalı Histogram Eşitleme ve Kontrast Normalleştirme. Daha sonra normalleştirme ve orijinal veri seti sonucunda elde edilen her bir veri seti için, girdiye çeşitli rastgele dönüşümler uygulanırken, her biri 8 katmandan oluşan ağırlıkların rastgele başlatılan başlangıç ​​değerleri ile 5 evrişimsel ağ inşa edilmiş ve eğitilmiştir. eğitim örneğinin boyutunu ve değişkenliğini artırmaya izin veren eğitim sırasında ağın değerleri. Elde edilen ağ tahmini, evrişimli ağların her birinin tahmininin ortalaması alınarak oluşturulmuştur. Bu ağları eğitmek için gpu hesaplama kullanan bir uygulama kullanıldı.

New York Üniversitesi'nden P. Sermanet ve Y. LeCun'dan oluşan bir ekip tarafından çok ölçekli bir evrişimli ağ kullanan bir algoritma önerildi. Bu algoritma “Milti Ölçekli Evrişimsel Ağlarla Trafik İşareti Tanıma” makalesinde detaylı olarak anlatılmıştır. Bu algoritmada tüm orijinal görüntüler 32*32 piksel boyutunda ölçeklendirilerek gri tonlamaya dönüştürülmüş ve ardından bunlara kontrast normalizasyonu uygulanmıştır. Ayrıca, orijinal görüntülere küçük rastgele dönüşümler uygulanarak orijinal eğitim setinin boyutu 5 kat artırıldı. Ortaya çıkan ağ, Şekil 3'te gösterildiği gibi iki aşamadan (aşamalardan) oluşuyordu, son sınıflandırma ise sadece ikinci aşamanın değil aynı zamanda birincinin çıktı değerlerini kullandı. Bu ağ %98.31 doğruluk gösterdi.

Şekil 3. Çok ölçekli sinir ağı

Üçüncü başarılı rastgele orman algoritması, MINES ParisTech'teki CAOR ekibi tarafından geliştirildi. Algoritmalarının ayrıntılı bir açıklaması “Uzamsal ağırlıklı HOG ağaçları kullanılarak gerçek zamanlı trafik işareti tanıma” makalesinde yayınlandı. Bu algoritma, her biri eğitim setinin rastgele seçilen bir alt kümesi üzerinde eğitilmiş 500 rastgele karar ağacından oluşan bir orman oluşturmaya dayanırken, sınıflandırıcının nihai çıktı değeri en çok oyu alan değerdir. Bu sınıflandırıcı, daha önce ele alınanlardan farklı olarak, orijinal görüntüleri bir piksel kümesi biçiminde değil, yarışma organizatörleri tarafından onlarla birlikte sağlanan HOG-görüntü temsillerini (yönlendirilmiş gradyan histogramları) kullandı. Algoritmanın nihai sonucu, doğru sınıflandırılmış görüntülerin% 96.14'üydü; bu, trafik işaretlerini tanıma görevi için, performansları hala sonuçların gerisinde kalsa da, sinir ağları ve derin öğrenme ile ilgili olmayan yöntemlerin de oldukça başarılı bir şekilde kullanılabileceğini gösteriyor. evrişimsel ağlar.

1.6 Mevcut kütüphanelerin analizi

Geliştirilmekte olan sistemde sinir ağları ile çalışmak için algoritmalar uygulamak için mevcut kütüphanelerden birinin kullanılmasına karar verildi. Bu nedenle, derin öğrenme algoritmalarının uygulanması için mevcut yazılım çözümlerinin bir analizi yapıldı ve bu analizin sonuçlarına göre bir seçim yapıldı. Mevcut çözümlerin analizi iki aşamadan oluşuyordu: teorik ve pratik.

Teorik aşamada Deeplearning4j, Theano, Pylearn2, Torch ve Caffe gibi kütüphaneler düşünülmüştür. Her birini daha ayrıntılı olarak ele alalım.

Deeplearning4j (www.deeplearning4j.org), Java ile yazılmış sinir ağlarını ve derin öğrenme algoritmalarını uygulamak için açık kaynaklı bir kitaplıktır. Java, Scala ve Closure dillerinden kullanılabilir, Hadoop, Apache Spark, Akka ve AWS ile entegrasyon desteklenir. Kütüphane, bu kütüphaneye ticari destek de sağlayan Skymind tarafından geliştirilmekte ve sürdürülmektedir. Bu kütüphanenin içinde aynı firma tarafından geliştirilen ND4J n boyutlu dizilerle hızlı çalışma için bir kütüphane kullanılmaktadır. Deeplearning4j, çok katmanlı algılayıcı, evrişimli ağlar, Kısıtlı Bolzmann Makineleri, Yığılmış Gürültü Giderici Otomatik Kodlayıcılar, Derin Otomatik Kodlayıcılar, Özyinelemeli otomatik kodlayıcılar, Derin inanç ağları, tekrarlayan ağlar ve diğerleri dahil olmak üzere birçok ağ türünü destekler. Bu kitaplığın önemli bir özelliği, bir kümede çalışabilmesidir. Kütüphane ayrıca GPU ağ eğitimini de destekler.

· Theano (www.github.com/Theano/Theano), çok boyutlu dizileri kullanarak matematiksel ifadeleri verimli bir şekilde oluşturmanıza, değerlendirmenize ve optimize etmenize olanak tanıyan açık kaynaklı bir Python kitaplığıdır. Çok boyutlu dizileri temsil etmek ve bunlar üzerinde çalışmak için NumPy kitaplığı kullanılır. Bu kütüphane öncelikle bilimsel araştırmalara yöneliktir ve Montreal Üniversitesi'nden bir grup bilim insanı tarafından oluşturulmuştur. Theano'nun yetenekleri çok geniştir ve sinir ağlarıyla çalışmak, onun küçük parçalarından yalnızca biridir. Aynı zamanda, bu özel kitaplık en popüler olanıdır ve derin öğrenme ile çalışmak söz konusu olduğunda en çok bahsedilen kitaplıktır.

Pylearn2 (www.github.com/lisa-lab/pylearn2) Theano'nun üzerine inşa edilmiş, ancak araştırmacılar için daha kullanıcı dostu ve daha basit bir arayüz sağlayan, hazır bir algoritma seti sağlayan ve izin veren açık kaynaklı bir python kütüphanesidir. YAML dosyaları biçiminde ağların kolay yapılandırılması. Montreal Üniversitesi LISA laboratuvarından bir grup bilim insanı tarafından geliştirildi.

· Torch (www.torch.ch) - C'de uygulanan, ancak araştırmacıların çok daha uygun Lua betik dilini kullanarak onunla çalışmasına izin veren, makine öğrenimi algoritmalarını hesaplamak ve uygulamak için bir kitaplık. Bu kütüphane, matrisler, çok boyutlu diziler üzerinde kendi verimli operasyon uygulamasını sağlar, GPU hesaplamalarını destekler. Tamamen bağlı ve evrişimli ağları uygulamanıza izin verir. Açık kaynak koduna sahiptir.

· Caffe (www.caffe.berkeleyvision.org), öncelikle Berkley Vision and Learning Center tarafından geliştirilen, derin öğrenme algoritmalarının verimli bir şekilde uygulanmasına odaklanan, ancak öncekilerin tümü gibi açık kaynak kodlu bir kütüphanedir. Kütüphane C'de uygulanmaktadır, ancak aynı zamanda Python ve Matlab için uygun bir arayüz sağlar. Tam bağlantılı ve evrişimli ağları destekler, ağları .prototxt formatında bir dizi katman olarak formatta tanımlamanıza izin verir, GPU hesaplamayı destekler. Kütüphanenin avantajları arasında, diğer özelliklerle birlikte, kütüphaneyi yukarıda listelenenler arasında çalışmaya başlamayı en kolay hale getiren çok sayıda önceden eğitilmiş model ve örneğin varlığı da bulunmaktadır.

Bir dizi kritere dayalı olarak, daha fazla değerlendirme için 3 kitaplık seçildi: Deeplearning4j, Theano ve Caffe. Bu 3 kütüphane kurulmuş ve pratikte test edilmiştir.

Bu kütüphaneler arasında Deeplearning4j'nin kurulumu en sorunlu olan olduğu kanıtlandı, ayrıca kütüphaneyle birlikte verilen demolarda hatalar bulundu, bu da kütüphanenin güvenilirliği ile ilgili bazı soruları gündeme getirdi ve daha fazla çalışmayı son derece zorlaştırdı. Ek olarak, Java dilinin Caffe'nin uygulandığı C'ye göre daha düşük performansı göz önüne alındığında, bu kitaplığın daha fazla dikkate alınmamasına karar verildi.

Theano kütüphanesinin de kurulumu ve yapılandırılması oldukça zor olduğu ortaya çıktı, ancak bu kütüphane için çok sayıda yüksek kaliteli ve iyi yapılandırılmış dokümantasyon ve çalışma kodu örnekleri var, bu yüzden sonunda kütüphane çalışabildi, grafik kartı kullanmak dahil. Ancak, ortaya çıktığı gibi, bu kütüphanede temel bir sinir ağının uygulanması bile, kendi kodunuzun büyük bir miktarını yazmayı gerektirir; buna bağlı olarak, ağ yapısını tanımlama ve değiştirme konusunda da büyük zorluklar vardır. Bu nedenle, bu kütüphanenin Caffe'ye kıyasla potansiyel olarak çok daha geniş yeteneklerine rağmen, bu çalışma için, görevler için en uygun olan ikincisine odaklanmaya karar verildi.

1.7 Kitaplıkkafe

Caffe kütüphanesi oldukça basit ve araştırmacı dostu bir arayüz sağlayarak sinir ağlarını yapılandırmayı ve eğitmeyi kolaylaştırır. Kitaplık ile çalışmak için, JSON formatına biraz benzeyen, iyi yapılandırılmış ve insanlar tarafından anlaşılabilir olan prototxt formatında (protokol tampon tanım dosyası - Google tarafından oluşturulan bir veri açıklama dili) bir ağ açıklaması oluşturmanız gerekir. Ağın tanımı, esasen, sırayla, katmanlarının her birinin bir açıklamasıdır. Girdi olarak, kitaplık bir veritabanı (leveldb veya lmdb), bellek içi veriler, HDF5 dosyaları ve görüntüler ile çalışabilir. Geliştirme ve test amacıyla DummyData adı verilen özel bir veri türü kullanmak da mümkündür.

Kitaplık, aşağıdaki türlerde katmanların oluşturulmasını destekler: InnerProduct (tamamen bağlı katman), Bölme (aynı anda birkaç çıktı katmanına aktarım için verileri dönüştürür), Düzleştirme (verileri çok boyutlu bir matristen bir vektöre dönüştürür), Yeniden Şekillendirme (size izin verir) veri boyutunu değiştirmek için), Birleştirme (birden çok giriş katmanındaki verileri tek bir çıktı katmanına dönüştürür), Dilimleme ve diğer birkaçı. Evrişimli ağlar için özel katman türleri de desteklenir - Evrişim (evrişim katmanı), Havuzlama (alt örnekleme katmanı) ve Yerel Yanıt Normalleştirme (yerel veri normalleştirme katmanı). Ek olarak, ağ eğitimi (Softmax, Öklid, Menteşe, Sigmoid Çapraz Entropi, Bilgi Kazanımı ve Doğruluk) ve nöron aktivasyon işlevleri (Rektifiye-Doğrusal, Sigmoid, Hiperbolik Tanjant, Mutlak Değer, Güç ve BNLL) için çeşitli kayıp işlevi türleri desteklenir. - bunlar ayrıca ayrı ağ katmanları olarak yapılandırılmıştır.

Böylece ağ bildirimsel olarak oldukça basit bir biçimde tanımlanır. Bu çalışmada kullanılan ağ yapılandırmalarının örnekleri Ek 1'de görülebilir. Ayrıca, kitaplığın standart komut dosyaları kullanarak çalışması için ağ eğitimi yapılandırmasını - eğitim için yineleme sayısı, öğrenme oranı, bilgi işlem platformu - cpu veya gpu vb.

Model eğitimi, yerleşik komut dosyaları kullanılarak (mevcut görev için sonlandırıldıktan sonra) veya python veya Matlab'da sağlanan api kullanılarak kod yazılarak manuel olarak uygulanabilir. Aynı zamanda, yalnızca ağı eğitmekle kalmayıp, aynı zamanda, örneğin sağlanan görüntü listesine dayalı bir veritabanı oluşturmaya izin veren komut dosyaları vardır - bu durumda, görüntüler daha önce sabit bir boyuta küçültülür ve normalleştirilir. veritabanına ekleniyor. Eğitim komut dosyaları ayrıca bazı yardımcı eylemleri de kapsar - örneğin, belirli sayıda yinelemeden sonra modelin mevcut doğruluğunu değerlendirir ve eğitilen modelin mevcut durumunu bir anlık görüntü dosyasına kaydeder. Anlık görüntü dosyalarını kullanmak, gerekirse baştan başlamak yerine gelecekte modeli eğitmeye devam etmenize ve ayrıca belirli sayıda yinelemeden sonra modelin yapılandırmasını değiştirmenize - örneğin, yeni bir katman eklemenize - ve aynı zamanda , önceden eğitilmiş katmanların ağırlıkları, daha önce açıklanan katmanlı öğrenme mekanizmasını uygulamanıza olanak tanıyan değerlerini koruyacaktır.

Genel olarak, kütüphanenin kullanımı oldukça uygun olduğu ortaya çıktı ve istenen tüm modellerin uygulanmasını ve bu modeller için sınıflandırma doğruluk değerlerinin elde edilmesini mümkün kıldı.

2. Bir prototip görüntü tanıma sisteminin geliştirilmesi

.1 Görüntü sınıflandırma algoritması

Konuyla ilgili teorik materyalin incelenmesi ve pratik deneyler sırasında, son algoritmada somutlaştırılması gereken aşağıdaki fikir seti oluşturulmuştur:

· Derin evrişimli sinir ağlarının kullanımı. Evrişimli ağlar, yol işaretleri de dahil olmak üzere görüntü tanımada sürekli olarak en iyi sonuçları gösterir, bu nedenle geliştirilen algoritmadaki kullanımları mantıklı görünüyor

· Çok katmanlı algılayıcıların kullanımı. Evrişimli ağların genel olarak daha yüksek verimliliğine rağmen, çok katmanlı algılayıcının daha iyi sonuçlar gösterdiği görüntü türleri vardır, bu nedenle bu algoritmanın da kullanılmasına karar verildi.

· Ek bir sınıflandırıcı kullanarak birkaç modelin sonuçlarını birleştirmek. En az iki tür sinir ağının kullanılmasına karar verildiğinden, her birinin sonuçlarına dayalı olarak bazı genel sınıflandırma sonuçları oluşturmak için bir yol gereklidir. Bunun için, giriş değerleri ağların her birinin sınıflandırmasının sonucu olan ve çıktının nihai tahmin edilen görüntü sınıfı olan sinir ağlarıyla ilgili olmayan ek bir sınıflandırıcı kullanılması planlanmaktadır.

· Girdi verilerine ek dönüşümler uygulayın. Giriş görüntülerinin tanıma için uygunluğunu artırmak ve buna bağlı olarak sınıflandırıcının performansını iyileştirmek için, giriş verilerine birkaç tür dönüşüm uygulanmalı ve her birinin sonuçları, görüntüleri tanımak için eğitilmiş ayrı bir ağ tarafından işlenmelidir. Bu tür bir dönüşümle.

Yukarıdaki tüm fikirlere dayanarak, aşağıdaki görüntü sınıflandırıcı kavramı oluşturulmuştur. Sınıflandırıcı, bağımsız olarak çalışan 6 sinir ağından oluşan bir topluluktur: 2 çok katmanlı algılayıcı ve 4 evrişimli ağ. Aynı zamanda, aynı türdeki ağlar, giriş verilerine uygulanan dönüşüm türüne göre birbirinden farklıdır. Girdi verileri, her ağ her zaman girdiyle aynı boyuta sahip olacak şekilde ölçeklenir ve bu boyutlar ağdan ağa değişebilir. Tüm ağların sonuçlarını toplamak için, 2 seçeneğin kullanıldığı ek bir klasik sınıflandırıcı kullanılır: bir karar ağacına dayalı J48 algoritması ve “tembel” bir sınıflandırıcı olan kStar algoritması. Sınıflandırıcıda kullanılan dönüşümler:

· Binarizasyon - görüntü, yalnızca siyah ve beyaz piksellerden oluşan yenisiyle değiştirilir. İkilileştirmeyi gerçekleştirmek için uyarlamalı eşikleme yöntemi kullanılır. Yöntemin özü, görüntünün her pikseli için, bazı piksel komşularının ortalama değerinin hesaplanmasıdır (görüntünün yalnızca gri tonlarını içerdiği varsayılır, bunun için orijinal görüntüler daha önce buna göre dönüştürülmüştür), ve daha sonra hesaplanan ortalama değere göre pikselin siyah mı yoksa beyaz mı kabul edileceği belirlenir.

· Histogram eşitleme - yöntemin özü, görüntü histogramına belirli bir işlevi uygulamaktır, böylece elde edilen diyagramdaki değerler mümkün olduğunca eşit olarak dağıtılır. Bu durumda amaç fonksiyonu, orijinal görüntüdeki renk yoğunluğu dağılım fonksiyonuna göre hesaplanır. Bir görüntü histogramına benzer bir işlevi uygulamanın bir örneği Şekil 4'te gösterilmiştir. Bu yöntem hem siyah beyaz hem de renkli görüntülere uygulanabilir - her bir renk bileşeni için ayrı ayrı. Bu çalışmada her iki seçenek de kullanılmıştır.

Şekil 4, bir görüntüye grafik hizalaması uygulamanın sonuçları

Kontrast geliştirme - görüntünün her pikseli için bazı komşuluklarında yerel bir minimum ve bir maksimum olduğu ve daha sonra başlangıç ​​değeri maksimuma daha yakınsa bu pikselin yerel bir maksimum ile değiştirildiği gerçeğinden oluşur veya aksi takdirde yerel bir minimum. Siyah beyaz görüntüler için geçerlidir.

Şematik olarak, elde edilen sınıflandırıcının genel şeması Şekil 5'te gösterilmektedir:

Şekil 5, sınıflandırıcının son şeması

Modelin girdi verilerinin ve sinir ağlarının dönüştürülmesinden sorumlu kısmını uygulamak için Python dili ve Caffe kitaplığı kullanılır. Ağların her birinin yapısını daha ayrıntılı olarak tanımlayalım.

Her iki çok katmanlı algılayıcı da 4 gizli katman içerir ve genel olarak konfigürasyonları şu şekilde tanımlanır:

giriş katmanı

Katman 1, 1500 nöron

Katman 2, 500 nöron

Katman 3, 300 nöron

Katman 4, 150 nöron

çıktı katmanı

Bu ağı açıklayan bir Caffe yapılandırma dosyası örneği Ek 1'de görülebilir. Evrişimli ağlara gelince, ImageNet veri kümesinden görüntü sınıflandırması için geliştirilmiş iyi bilinen LeNet ağı, mimarilerinin temeli olarak alınmıştır. Bununla birlikte, önemli ölçüde daha küçük bir boyuta sahip olan dikkate alınan görüntüleri eşleştirmek için ağ değiştirildi. Kısa bir açıklama şöyle görünür:

Bu ağın şeması Şekil 6'da gösterilmektedir.

Şekil 6, bir konvolüsyonel ağın diyagramı

Modele giden sinir ağlarının her biri ayrı ayrı eğitilir. Sinir ağlarını eğittikten sonra, eğitim setinin her bir görüntüsü için ağların her biri için özel bir Python betiği, sınıflandırma sonucunu her bir sınıf için bir olasılık listesi şeklinde alır, en olası iki sınıfı seçer ve elde edilen değerleri resim sınıfının gerçek değeri ile birlikte bir dosyaya yazar. Ortaya çıkan dosya daha sonra Weka kitaplığında uygulanan bir sınıflandırıcıya (J48 ve kStar) eğitim seti olarak iletilir. Buna göre, bu kütüphane kullanılarak daha fazla sınıflandırma yapılır.

2.2 Sistem mimarisi

Şimdi, sinir ağları ve ek bir sınıflandırıcı kullanan trafik işareti tanıma algoritmasını ele aldıktan sonra, doğrudan bu algoritmayı kullanarak geliştirilen sistemin açıklamasına geçelim.

Geliştirilen sistem, kullanıcının bir yol levhasının görüntüsünü yüklemesini ve açıklanan algoritmayı kullanarak bu levha için bir sınıflandırma sonucu elde etmesini sağlayan bir web arayüzüne sahip bir uygulamadır. Bu uygulama 4 modülden oluşmaktadır: web uygulaması, sinir ağları modülü, sınıflandırma modülü ve yönetici arayüzü. Şematik olarak, modüllerin etkileşim diyagramı Şekil 7'de gösterilmiştir.

Şekil 7, sınıflandırma sisteminin şeması

Diyagramdaki sayılar, kullanıcı sistemle çalışırken eylemlerin sırasını gösterir. Kullanıcı bir resim yükler. Kullanıcının isteği web sunucusu tarafından işlenir ve indirilen görüntü, görüntü üzerinde gerekli tüm dönüşümlerin (ölçeklendirme, renk şemasını değiştirme vb.) kendi tahminini üretir. Bu modülün kontrol mantığı daha sonra her ağ için en olası iki tahmini seçer ve bu verileri web sunucusuna döndürür. Web sunucusu, ağın tahminleri ile ilgili alınan verileri, işlendiği ve web sunucusuna ve oradan kullanıcıya döndürülen tahmin edilen görüntü sınıfına ilişkin nihai cevabın oluşturulduğu sınıflandırma modülüne iletir. Bu durumda, kullanıcı ile web sunucusu ve web sunucusu ve sinir ağlarının modülleri arasındaki etkileşim ve sınıflandırma, HTTP protokolü kullanılarak REST istekleri üzerinden gerçekleştirilir. Görüntü çok parçalı form veri formatında iletilir ve sınıflandırıcı çalışmalarının sonuçlarına ilişkin veriler JSON formatındadır. Bu işlem mantığı, farklı programlama dilleri de dahil olmak üzere bağımsız olarak geliştirilmelerine olanak tanıyan ve gerekirse diğerlerinin çalışma mantığını etkilemeden her modülün çalışma mantığını ayrı ayrı değiştirmek kolay olan bireysel modülleri birbirinden yeterince izole eder. .

Bu sistemde kullanıcı arayüzünü uygulamak için HTML ve Java Script dilleri, web sunucusunu ve sınıflandırma modülünü uygulamak için Java dili, sinir ağları modülünü uygulamak için Python dili kullanıldı. Sistemin kullanıcı arayüzünün görünümü Şekil 8'de gösterilmektedir.

Şekil 8. Sistem kullanıcı arayüzü

Bu sistemin kullanımı, sinir ağı ve sınıflandırma modüllerinin zaten eğitilmiş modeller içerdiğini varsayar. Aynı zamanda, eğitim modelleri için, esas olarak sinir ağlarının eğitimi için bir dizi python komut dosyası ve son sınıflandırıcıyı eğitmek için bir Java konsol yardımcı programı olan bir yönetici arabirimi sağlanır. Bu araçlar, sıklıkla veya profesyonel olmayan kullanıcılar tarafından kullanılmak üzere tasarlanmamıştır, bu nedenle onlar için daha gelişmiş bir arayüz gerekli değildir.

Genel olarak, geliştirilen uygulama, kullanıcının seçtiği görüntü için uygun bir sınıf tahmini elde etmesine izin vermek de dahil olmak üzere kendisine verilen tüm görevleri başarıyla yerine getirir. Bu nedenle, yalnızca bu algoritmada kullanılan sınıflandırıcının çalışmasının pratik sonuçları sorusu açık kalır ve Bölüm 3'te ele alınacaktır.

3. Deneysel çalışmaların sonuçları

.1 İlk veriler

Bu çalışmada giriş verisi olarak daha önce bahsedilen GTSRB (Alman Trafik İşaretleri Tanıma Benchmark) veri seti kullanılmıştır. Bu veri seti 43 sınıfa ait 51840 görüntüden oluşmaktadır. Aynı zamanda, farklı sınıflara ait görüntülerin sayısı farklıdır. Görüntü sayısının sınıflara göre dağılımı Şekil 9'da gösterilmiştir.

Şekil 9. Sınıflara Göre Görüntü Sayılarının Dağılımı

Giriş görüntülerinin boyutları da farklıdır. En küçük görüntünün genişliği 15 piksel, en büyüğünün genişliği 250 pikseldir. Görüntü boyutlarının genel dağılımı Şekil 10'da gösterilmektedir.

Şekil 10. Görüntü boyutlarının dağılımı

Kaynak görüntüler ppm formatında, yani her pikselin üç sayıya karşılık geldiği bir dosya olarak sunulur - kırmızı, yeşil ve mavi renk bileşenlerinin yoğunluk değerleri.

3.2 Veri ön işleme

Çalışmaya başlamadan önce ilk veriler buna göre hazırlandı - PPM formundan Caffe kütüphanesinin çalışabileceği JPEG formatına çevrildi, rastgele %80:20 oranında eğitim ve test setlerine bölündü ve ayrıca ölçeklendi. Sınıflandırma algoritması iki boyuttaki görüntüleri kullanır - 45 * 45 (ikili veriler üzerinde çok katmanlı bir perspron eğitimi için) ve 60 * 60 (diğer ağları eğitmek için), bu nedenle eğitim ve test setlerinin her görüntüsü için bu iki boyutun örnekleri oluşturulmuştur. . Ayrıca, görüntülerin her birine daha önce belirtilen dönüşümler (ikilileştirme, histogram normalleştirme, kontrast iyileştirme) uygulandı ve önceden elde edilen görüntüler, hızlı ve verimli bir anahtar-değer olan LMDB'de (Lightning Memory-Mapped Database) saklandı. depolama ". Bu şekilde veri depolama, Caffe kitaplığının en hızlı ve en uygun çalışmasını sağlar. Görüntüler Python Imaging Library (PIL) ve scikit-image kullanılarak dönüştürüldü. Her bir dönüşümden sonra elde edilen görüntü örnekleri Şekil 11'de gösterilmektedir. Veritabanında depolanan görüntüler daha sonra sinir ağlarının doğrudan eğitimi için kullanıldı.

Şekil 11. Bir görüntüye dönüşüm uygulama sonuçları

Sinir ağlarının eğitimine gelince, ağların her biri ayrı ayrı eğitilmiş ve çalışmalarının sonuçları değerlendirilmiş ve daha sonra son sınıflandırıcı oluşturularak eğitilmiştir. Ancak bundan önce, tek gizli katmana sahip bir algılayıcı olan en basit ağ inşa edildi ve eğitildi. Bu ağın değerlendirilmesinin iki amacı vardı - basit bir örnek kullanarak Caffe kütüphanesi ile çalışmayı incelemek ve onunla karşılaştırıldığında diğer ağların çalışmalarının sonuçlarının daha kapsamlı bir değerlendirmesi için bir kıyaslama oluşturmak. Bu nedenle, bir sonraki bölümde, ağ modellerinin her birini ve çalışmalarının sonuçlarını daha ayrıntılı olarak ele alın.

3.3 Bireysel modellerin sonuçları

Bu çalışma sırasında uygulanan modeller şunları içerir:

Bir gizli katmana sahip sinir ağı

· İlk veriler temelinde oluşturulmuş çok katmanlı sinir ağı

İkili veri temelinde oluşturulmuş çok katmanlı sinir ağı

Orijinal veriler temelinde oluşturulan evrişimli ağ

· Grafik hizalamasından sonra RGB verileri temelinde oluşturulan evrişimli ağ

Gri tonlama temelinde oluşturulan evrişimli ağ - grafik hizalamasından sonraki veriler

Kontrast geliştirmeden sonra gri tonlamalı veriler temelinde oluşturulan evrişimli ağ

· İki çok katmanlı sinir ağının ve 4 evrişimli olanın birleşiminden oluşan birleşik bir model.

Her birini daha ayrıntılı olarak ele alalım.

Bir gizli katmana sahip sinirsel bir katman var, ancak derin öğrenme modelleri için geçerli olmasa da, ilk olarak kütüphane ile çalışmak için bir eğitim materyali olarak ve ikinci olarak bazı temel algoritmalar olarak uygulama için çok yararlı olduğu ortaya çıkıyor. diğer modellerin çalışmaları ile karşılaştırmak için. Bu modelin şüphesiz avantajları, yapım kolaylığı ve yüksek öğrenme hızıdır.

Bu model, 45*45 piksel boyutundaki orijinal renkli görüntüler için inşa edilmişken, gizli katman 500 nöron içeriyordu. Ağ eğitimi yaklaşık 30 dakika sürdü ve sonuçta ortaya çıkan tahmin doğruluğu %59.7 idi.

İkinci yerleşik model, çok katmanlı, tamamen bağlı bir sinir ağıdır. Bu model, daha küçük formatlı görüntülerin ikili ve renkli versiyonları için oluşturulmuştur ve 4 gizli katman içermektedir. Ağ yapılandırması şu şekilde açıklanmıştır:

giriş katmanı

Katman 1, 1500 nöron

Katman 2, 500 nöron

Katman 3, 300 nöron

Katman 4, 150 nöron

çıktı katmanı

Şematik olarak, bu ağın modeli Şekil 12'de gösterilmektedir.

Şekil 12. Çok katmanlı bir algılayıcının şeması

Elde edilen modelin nihai doğruluğu, ikili görüntüler için %66,1, renkli olanlar için %81,5'tir. Ancak - bu, daha düşük doğruluğuna rağmen, ikilileştirilmiş görüntüler için bir model oluşturmayı haklı çıkarır - ikilileştirilmiş modelin doğru sınıfı belirleyebildiği bir dizi görüntü vardı. Ayrıca, renkli görüntü modeli önemli ölçüde daha uzun bir eğitim süresi gerektirdi - ikili sürüm için 1,5 saate kıyasla yaklaşık 5 saat.

Oluşturulan modellerin geri kalanı bir şekilde evrişimli ağlara dayanmaktadır, çünkü tam olarak bu tür ağlar, görüntü tanıma türündeki görevlerde en büyük verimliliği göstermiştir. ImageNet veri setinden görüntü sınıflandırması için geliştirilen tanınmış LeNet ağı, sinir ağı mimarisi için temel alınmıştır. Bununla birlikte, önemli ölçüde daha küçük bir boyuta sahip olan dikkate alınan görüntüleri eşleştirmek için ağ değiştirildi. Ağ mimarisinin kısa açıklaması:

Sırasıyla 9, 3 ve 3 çekirdek boyutlarına sahip 3 evrişim katmanı

3 katman alt örnekleme

100, 100 ve 43 nöron boyutlarında 3 tam bağlantılı katman

Bu ağ, daha büyük orijinal görüntüler, histogram eşitlemesinden sonraki görüntüler (renk korumalı), histogram eşitlemesinden sonraki görüntüler siyah beyaza indirgendi ve son olarak kontrastı artırılmış siyah beyaz görüntüler üzerinde ayrı ayrı eğitildi. Öğrenme çıktıları tablo 1'de sunulmuştur:

Tablo 1. Evrişimli ağ eğitim sonuçları

En iyi sonuçların histogram eşitlemesinden sonra siyah beyaz görüntüler temelinde oluşturulan ağ tarafından gösterildiği görülebilir. Bu, diyagramın seviyelendirilmesi sürecinde, örneğin görüntü ile arka plan arasındaki farklar ve genel parlaklık derecesi gibi görüntü kalitesinin aynı zamanda içerdiği ek bilgileri iyileştirdiği gerçeğiyle açıklanabilir. renk ve önemli bir anlam yükü taşımayan - bir kişi aynı işaretleri siyah beyaz olarak kolayca tanıyabilir - ancak gürültülü görüntü ve sınıflandırmayı karmaşıklaştıran - ortadan kaldırılmıştır.

Geri yayılım yöntemini kullanarak eğitim kümesindeki her ağı eğitin (küme tüm ağlar için aynıdır, ancak görüntülere farklı dönüşümler uygulanır)

2. Eğitim setinin her bir örneği için, her ağdan en olası iki sınıfı azalan olasılık sırasına göre alın, elde edilen seti (toplamda 12 değer) ve gerçek sınıf etiketini kaydedin

Elde edilen veri setini - 12 nitelik ve bir sınıf etiketi - son sınıflandırıcı için bir eğitim seti olarak kullanın

Ortaya çıkan modelin doğruluğunu değerlendirin: test kümesinin her bir örneği için, her ağdan azalan olasılık sırasına göre en olası iki sınıfı ve bu veri kümesine dayalı son sınıf tahminini alın

Bu şemadaki adımların sonuçlarına dayanarak, birleşik algoritmanın nihai doğruluğu hesaplandı: J48 algoritmasını kullanırken %93 ve KStar kullanırken %94,8. Aynı zamanda karar ağacı tabanlı algoritma biraz daha kötü sonuçlar gösteriyor ancak iki önemli avantajı var: Birincisi, algoritmanın çalışması sonucunda elde edilen ağaç, sınıflandırma mantığını net bir şekilde ortaya koyuyor ve gerçek veri yapısını daha iyi anlamanızı sağlıyor. (örneğin, hangi ağ belirli bir işaret türü için en doğru tahminleri verir ve bu nedenle tahmini sonucu benzersiz bir şekilde belirler) ve ikinci olarak, modeli oluşturduktan sonra, bu algoritma yeni varlıkları çok hızlı bir şekilde sınıflandırmanıza izin verir, çünkü sınıflandırma yalnızca ağaçtan yukarıdan aşağıya doğru geçilir. KStar algoritmasına gelince, çalışması sırasında model aslında oluşturulmamıştır ve sınıflandırma, eğitim seti arasında en benzer örneklerin aranmasına dayanmaktadır. Bu nedenle, bu algoritma varlıkları sınıflandırmasına rağmen, onlar için herhangi bir ek bilgi sağlamaz ve en önemlisi, her bir örneğin sınıflandırılması önemli miktarda zaman gerektirebilir, bu da çok fazla sonuç almanız gereken görevler için kabul edilemez olabilir. örneğin otomatik sürüşte yol işaretlerini tanırken hızlı bir şekilde.

Tablo 2, dikkate alınan tüm algoritmaların sonuçlarının genel bir karşılaştırmasını sunar.

Tablo 2. Algoritma sonuçlarının karşılaştırılması

Şekil 13, histogram eşitlemeli (x eksenindeki yineleme sayısı, y eksenindeki doğruluk) gri tonlamalı veriler için bir evrişimli ağ örneğini kullanan bir ağ eğitim grafiğini göstermektedir.

Şekil 13. Evrişimsel Ağ Eğitim Grafiği

Çalışmanın sonuçlarını özetlemek için, sınıflandırmanın sonuçlarını incelemek ve hangi işaretlerin sınıflandırılması en kolay olduğunu ve hangilerinin tam tersine tanınmasının zor olduğunu belirlemek de yararlıdır. Bunun için J48 algoritmasının çıktı değerlerini ve ortaya çıkan beklenmedik durum tablosunu dikkate alın (bkz. Ek 3). Bazı işaretler için sınıflandırma doğruluğunun %100 veya bunlara çok yakın olduğu görülebilir - örneğin, bunlar “Dur” (sınıf 14), “Yol ver” (sınıf 13), “Ana yol” (sınıf) işaretleridir. 12), “Tüm kısıtlamaları sonlandır” (sınıf 32), “Geçiş reddedildi” (sınıf 15) (Şekil 12). Bu işaretlerin çoğu karakteristik bir şekle ("Ana Yol") veya diğer işaretlerde benzeri olmayan özel grafik öğelere ("Tüm kısıtlamaların sonu") sahiptir.

Şekil 12. Kolayca tanınabilir yol işaretleri örnekleri

Diğer işaretler genellikle birbiriyle karıştırılır, örneğin solda bir sapma ve sağda bir sapma veya çeşitli hız sınırı işaretleri (Şekil 13).

Şekil 13. Sıklıkla karıştırılan karakter örnekleri

Sinir ağlarının genellikle birbiriyle simetrik olan işaretleri karıştırması dikkat çekicidir - bu özellikle görüntüde yerel özellikler arayan ve görüntüyü bir bütün olarak analiz etmeyen evrişimli ağlar için geçerlidir - çok katmanlı algılayıcılar bu tür görüntüleri sınıflandırmak için daha uygundur. .

Özetle, evrişimli sinir ağları ve bunların temelinde oluşturulan birleşik bir algoritma yardımıyla, yol işaretlerinin sınıflandırılmasında iyi sonuçlar almayı başardığımızı söyleyebiliriz - ortaya çıkan sınıflandırıcının doğruluğu neredeyse% 95'tir, bu da bize izin verir. pratik sonuçlar elde etmek için ayrıca, sinir ağlarının sonuçlarını birleştirmek için ek sınıflandırıcı kullanan önerilen yaklaşımın daha fazla iyileştirme için çok yeri vardır.

Çözüm

Bu yazıda, yapay sinir ağlarının aparatlarını kullanarak görüntü tanıma problemi detaylı olarak incelenmiştir. Derin sinir ağları kullananlar da dahil olmak üzere, görüntü tanımaya en uygun yaklaşımlar ele alındı ​​ve derin ağlar kullanılarak bir trafik işareti tanıma problemi örneği kullanılarak görüntü tanıma için kendi algoritması geliştirildi. Çalışmanın sonuçlarına göre, işin başında belirlenen tüm görevlerin tamamlandığı söylenebilir:

Görüntü tanıma için yapay sinir ağlarının kullanılması konusundaki literatürün analitik bir incelemesi yapıldı. Bu incelemenin sonuçlarına dayanarak, son zamanlarda en etkili ve yaygın olanın, derin evrişimli ağların kullanımına dayalı görüntü tanıma yaklaşımları olduğu bulundu.

Görüntü tanıma için bir algoritma, iki çok katmanlı algılayıcı ve 4 derin evrişimli ağdan oluşan bir sinir ağları topluluğu kullanan bir trafik işareti tanıma problemi örneği kullanılarak ve sonuçları birleştirmek için iki tür ek sınıflandırıcı - J48 ve KStar - kullanılarak geliştirilmiştir. bireysel ağların ve nihai tahminin oluşturulması

Kullanıcıya bir görüntü yüklemek için bir web arayüzü sağlayan ve önceden eğitilmiş modeller kullanarak bu görüntüyü sınıflandıran ve sınıflandırma sonucunu görüntüleyen, madde 3'teki algoritmaya dayalı yol işaretleri örneğini kullanarak görüntü tanıma için bir prototip sistem geliştirilmiştir. kullanıcıya

Madde 3'te geliştirilen algoritma GTSRB veri seti kullanılarak eğitilirken, içerdiği ağların her birinin sonuçları ve algoritmanın nihai doğruluğu iki tip ek sınıflandırıcı için ayrı ayrı değerlendirilmiştir. Deneysel sonuçlara göre, %94,8'e eşit en yüksek tanıma doğruluğu, bir sinir ağları topluluğu ve KStar sınıflandırıcı kullanılarak elde edilir ve bireysel ağlar arasında en iyi sonuçlar - %89,1 doğruluk - bir evrişimli ağ tarafından gösterilmiştir. gri tonlamaya ön görüntü dönüştürme kullanan ve görüntü histogram eşitleme gerçekleştiren.

Genel olarak, bu çalışma, şu anda derin yapay sinir ağlarının, özellikle evrişimli ağların, görüntü tanıma konusunda çok sayıda çalışmanın ve devam eden yarışmaların sonuçlarıyla doğrulanan, görüntü sınıflandırma için en verimli ve umut verici yaklaşım olduğunu doğruladı.

kullanılmış literatür listesi

1. Al-Azawi M. A. N. Sinir Ağı Tabanlı Otomatik Trafik İşaretleri Tanıma // Uluslararası Dijital Bilgi ve Kablosuz İletişim Dergisi (IJDIWC). - 2011. - Cilt 1. - Hayır. 4. - S. 753-766.

2. Baldi P. Otomatik Kodlayıcılar, Denetimsiz Öğrenme ve Derin Mimariler // ICML Denetimsiz ve Aktarım Öğrenme. - 2012. - T. 27. - S. 37-50.

Bahlmann C. et al. Renk, şekil ve hareket bilgilerini kullanarak trafik işareti algılama, izleme ve tanıma sistemi // Akıllı Araçlar Sempozyumu, 2005. Bildiriler. IEEE. - IEEE, 2005. - S. 255-260.

Bastien F. et al. Theano: yeni özellikler ve hız iyileştirmeleri //arXiv baskı öncesi arXiv:1211.5590. - 2012.

Bengio Y., Goodfellow I., Courville A. derin öğrenme. - MIT Press, kitap hazırlanıyor

Bergstra J. et al. Theano: Python'da bir CPU ve GPU matematik derleyicisi //Proc. 9. Python Bilim Konf. - 2010. - S. 1-7.

Broggi A. et al. Gerçek zamanlı yol işaretleri tanıma // Akıllı Araçlar Sempozyumu, 2007 IEEE. - IEEE, 2007. - S. 981-986.

Canny J. Kenar algılamaya hesaplamalı bir yaklaşım // Model Analizi ve Makine Zekası, IEEE İşlemleri açık. - 1986. - hayır. 6. - S. 679-698.

Ciresan D., Meier U., Schmidhuber J. Görüntü sınıflandırması için çok sütunlu derin sinir ağları //Bilgisayar Görme ve Örüntü Tanıma (CVPR), 2012 IEEE Konferansı. - IEEE, 2012. - S. 3642-3649.

Ciresan D. et al. Trafik işareti sınıflandırması için bir sinir ağları komitesi // Sinir Ağları (IJCNN), 2011 Uluslararası Ortak Konferansı. - IEEE, 2011. - S. 1918-1921.

11. Ciresan D.C. et al. Rakam tanıma için derin büyük çok katmanlı algılayıcılar //Sinir Ağları: Ticaretin Püf Noktaları. - Springer Berlin Heidelberg, 2012. - S. 581-598.

Daugman J. G. Görüntü analizi ve sıkıştırma için sinir ağları ile ayrık 2-D Gabor dönüşümlerini tamamlayın // Akustik, Konuşma ve Sinyal İşleme, IEEE İşlemleri açık. - 1988. - T. 36. - Hayır. 7. - S. 1169-1179.

Gao X.W. et al. İnsan görme modelleri kullanılarak çıkarılan renk ve şekil özelliklerine göre trafik işaretlerinin tanınması // Görsel İletişim ve Görüntü Temsil Dergisi. - 2006. - T. 17. - Hayır. 4. - S. 675-685.

Goodfellow I.J. et al. Pylearn2: bir makine öğrenimi araştırma kitaplığı //arXiv ön baskı arXiv:1308.4214. - 2013.

Han J., Kamber M., Pei J. Veri madenciliği: Kavramlar ve teknikler. -Morgan Kaufmann, 2006.

Harris C., Stephens M. Birleşik bir köşe ve kenar dedektörü //Alvey görüş konferansı. - 1988. - T. 15. - S. 50.

Houben S. et al. Gerçek dünya görüntülerinde trafik işaretlerinin algılanması: Alman Trafik İşareti Algılama Benchmark //Neural Networks (IJCNN), The 2013 International Joint Conference on. - IEEE, 2013. - S. 1-8.

Huang F. J., LeCun Y. Genel nesne tanıma için svm ve evrişimli ağ ile büyük ölçekli öğrenme // Bilgisayarla Görme ve Örüntü Tanıma üzerine 2006 IEEE Bilgisayar Topluluğu Konferansı. - 2006.

Huttenlocher D.P., Ullman S. Hizalama kullanarak nesne tanıma //Proc. ICCV. - 1987. - T. 87. - S. 102-111.

Jia, Yangqing. "Caffe: Hızlı özellik yerleştirme için açık kaynaklı bir evrişimsel mimari." h ttp://kafe. Berkeleyvizyon. org (2013).

Krizhevsky A., Sutskever I., Hinton G. E. Derin evrişimli sinir ağları ile Imagenet sınıflandırması // Sinirsel bilgi işleme sistemlerinde ilerlemeler. - 2012. - S. 1097-1105.

Lafuente-Arroyo S. et al. Destek vektör makineleri kullanılarak dönüşlere göre değişmeyen trafik işareti sınıflandırması // Akıllı Görüş Sistemleri için Gelişmiş Kavramların Bildirileri, Brüksel, Belçika. - 2004.

LeCun Y., Bengio Y. Görüntüler, konuşma ve zaman serileri için evrişimsel ağlar //Beyin teorisi ve sinir ağlarının el kitabı. - 1995. - T. 3361. - S. 310.

LeCun Y. et al. Sınıflandırma için öğrenme algoritmaları: El yazısı rakam tanıma üzerine bir karşılaştırma //Sinir ağları: istatistiksel mekanik perspektifi. - 1995. - T. 261. - S. 276.

Masci J. et al. Hiyerarşik özellik çıkarma için yığılmış evrişimli otomatik kodlayıcılar //Yapay Sinir Ağları ve Makine Öğrenimi-ICANN 2011. - Springer Berlin Heidelberg, 2011. - S. 52-59.

Matan O. et al. Sinir ağı mimarilerini kullanarak el yazısı karakter tanıma // 4. USPS İleri Teknoloji Konferansı Bildirileri. - 1990. - S. 1003-1011.

McCulloch W. S., Pitts W. Sinir aktivitesine içkin fikirlerin mantıksal bir hesabı // Matematiksel biyofizik bülteni. - 1943. - T. 5. - Hayır. 4. - S. 115-133.

Minsky M., Seymour P. Perceptrons. - 1969.

Mitchell T. Üretken ve ayrımcı sınıflandırıcılar: saf Bayes ve lojistik regresyon, 2005 //Makale #"897281.files/image021.gif" adresinde mevcuttur>