FPGA üzerinde HYSA ve HYSA'ya özel öğrenme algoritmalarının birlikte gerçeklenmesi
Implementation of CNN and CNN specific learning algorithms on FPGA
Yazar: ERDEM KÖSE
Danışman: PROF. DR. MÜŞTAK ERHAN YALÇIN
İstanbul Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Elektronik ve Haberleşme Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2017
Konu: Elektrik ve Elektronik Mühendisliği = Electrical and Electronics Engineering
Dizin: Geri yayılım ağları = Back propagation networks ; Hücresel yapay sinir ağları = Cellular artificial neural networks ; Mikroişlemciler = Microprocessors ; Sayısal görüntü işleme = Digital image processing

Özet:
İnsanlık ilk dönemlerinden bu yana sürekli hayatta kalmak ve refahını sağlamak için çalışmalar yapmıştır. Bu çalışmaların neredeyse hepsi hesaplamalara dayanmaktadır. Medeniyetler geliştikçe, merak arttıkça ve ihtiyaçlar değiştikçe yapılması gereken hesaplamalar karmaşıklaşmıştır. Transistör ve bilgisayarın icadına kadar insanların işlem kapasiteleri oldukça sınırlı kalmıştır. Bilgisayar çağında ise insanlık önceki dönemlerine nazaran çok büyük ilerlemeler katetmiş ve karşısına daha karmaşık problemler çıkmıştır. Bu problemlerden biri de mevcut bilgisayarların yapmakta zorlandığı çeşitli paralel işlemlerdir. Bu amaçla ortaya atılan modellerden biri de yapay sinir ağı adlı modeldir. Yapay sinir ağları canlılarda bulunan sinir sisteminin temel parçası sinir hücresinin davranışını bir elektronik devre üzerinde gerçekleştirmeyi olanaklı hale getirmektedir. Canlılarda bulunan sinir sistemleri çok düşük frekanslarda çalışmalarına karşın çok yüksek paralel işlem kabiliyetine sahiptirler. Sinir sistemlerinin genel amaçlı işlemcilere göre en büyük avantajı kısa sürede hızlı biçimde bir çok girişi işleyip bir çok çıkış verebilmeleridir. Yapay sinir ağları ile hayvansal sinir sisteminin işleyişi çeşitli hesaplamalarda kullanılabilir hale gelmiştir, bu sayede çözülebilir problem sayısı artmıştır. Chua ve Yang tarafından özel bir sinir ağı modeli olan hücresel yapay sinir ağları ortaya konmuştur. Hücresel yapay sinir ağlarının temeli yapay sinir ağlarına ve hücresel otomatlara dayanmaktadır. Görüntü işleme ve işaret üretimi gibi alanlarda kullanılmaktadır. Hücresel yapay sinir ağlarının ilk gerçeklemeleri analog ve sayısal melez olarak yapılmıştır. Analog gerçeklemelerin esneklik ve prototipleme dezavantajları görülüp ayrık zamanlı hücresel yapay sinir ağı modeli ortaya atılmış ve sayısal ortama geçişin başlangıcı olmuştur. Daha sonraları sayısal devre tasarımları yapılmıştır. Bu tasarımların da eksiklikleri ve dezavantajları vardır, bu yüzden yeni çözümler araştırılmaktadır. Çok çekirdekli işlemciler ya da grafik işlemcileri paralel işlemleri yapmakta kullanılmaktadırlar; ancak taşınabilir değillerdir. Yine de IBM Cell, NVidia Cuda ve Intel Xeon gibi işlemciler ile hücresel yapay sinir ağı modellemeleri ve simülasyonları yapılabilmektedir. Güç tüketimi düşük ve sistem tasarımı için gerekli olan boyutları küçük yani taşınabilir olan sayısal işaret işlemcilerinin ya da mikroişlemcilerin ise işlem kabiliyetleri çok kısıtlı kalmaktadır. Bu yüzden alanda programlanabilir kapı dizileri -İngilizce kısaltması FPGA- ile birçok hücresel yapay sinir ağları emülasyon işlemcisi gerçeklemesi yapılmıştır; ancak şablon öğrenmesi ile beraber yapılan bir gerçekleme yoktur. Bu çalışmada şablon öğrenmesi yapabilen sayısal bir hücresel yapay sinir ağı emülasyon işlemcisi tasarlanmıştır. İşlemci; denetleme birimi ve hesaplama birimi olmak üzere iki parçadan oluşmaktadır ve 100 MHz frekansta 1 W güç tüketimiyle 41.5 santigrad derece sıcaklıkta çalışmaktadır. Spartan 6 içeren Digilent Atlys geliştirme kartı üzerinde VHDL kullanılarak tasarlanmıştır. Denetleme birimi; bilgisayar ya da ağ ile bağlantıyı kuracak kısımlar, Microblaze mikroişlemci, rastgele sayı üreteci ve yapılandırma birimi bulunmaktadır. Microblaze mikroişlemcisi rastgele erişimli bellek, ethernet, UART ve flash hafızayı denetlemektedir. Rastgele sayı üreteci, öğrenme metodlarının içinde kullanılmaktadır. Microblaze mikroişlemcisi hücresel yapay sinir ağı emülasyon işlemcisini yapılandırma birimini kullanarak denetlemektedir. Hesaplama birimi ise; aritmetik birim, önbellek ve sonlu durum makinesi yer almaktadır. Sonlu durum makinesi aritmetik birim, önbellek yazma-okuma ve iterasyon denetimini azami paralellikte yapmaktadır. Sonlu durum makinesi hücresel yapay sinir ağı emülasyon işlemcisinin denetim birimidir. Hesaplama birimi parametrik olarak tasarlandığından farklı FPGA'lerde farklı yapılandırma ayarlarıyla tekrar gerçeklenebilir. Yapılandırılabilen özellikler; şablon boyutu, önbellek boyutu ve veri yolu genişliğidir; kullanılan yapılandırma özellikleri ise 3x3 şablon, 128x128 önbellek ve 16 bit veri yoludur, ki bu özellikler Digilent Atlys için azami özelliklerdir. Hücresel yapay sinir ağı emülasyon işlemcisi bir durum pikselini 3x3'lük bir şablonla önbellekten okuma, önbelleğe yazma dahil 5 saat darbesinde hesaplayabilmektedir. Toplam hesaplama süresi görüntü boyutuna, algoritmaya, DDR2 belleğe, Microblaze mikroişlemciye ve ağ bağlantısına bağlı olarak değişmektedir. Seviye 1 önbellek FIFO olarak tasarlanmıştır, böylece seviye 2 önbellekten veri okuma hızlanmıştır. Seviye 2 önbelleğin amacı da DDR2 rastgele erişimli belleğin oluşturduğu hız dezavantajını azaltmaktır. Ethernet bağlantısı ise görüntü alma hızını arttırmaktadır. UART bağlantısı ile de hata ayıklama yapılmaktadır. İşlemci Digilent Atlys geliştirme kartı üzerinde başarıyla çalıştırılmıştır. Digilent Atlys üzerindeki; Xilinx Spartan 6 XC6SLX45-3CSG324C FPGA, 128 MB 600 MHz DDR2 rastgele erişimli bellek, 16 MByte QSPI flash hafıza, 100 Mbits ethernet ve 1 Mbit UART bağlantıları kullanılmıştır. Tüm bu fonksiyonları sayesinde hücresel yapay sinir ağı emülasyon işlemcisi üzerinde çeşitli hücresel yapay sinir ağı ve şablon öğrenme algoritmaları gerçeklenebilmektedir. Geri yayılımlı şablon öğrenme ve çok şablonlu seri hücresel yapay sinir ağı işlemleri başarıyla gerçeklenmiştir. Intel i7 4790 ile MATLAB üzerinde yapılan hücresel yapay sinir ağı simülasyonuyla FPGA üzerindeki gerçeklemenin sonuçları birbirine çok yakın çıkmaktadır, hız konusunda da yeterli seviyededir.

Abstract:
Humankind has been working for the survival and prosperity since the existence. Almost all of these works are based on engineering and experience. While civilizations are evolving, curiosity is increasing and needs are changing, the calculations and designs was started to become more complex. Humankind's calculation capacity had been very limited until invention of transistor and then computer. When the information age came, the problem complexity has been started to increase even faster. One of these problems is parallel computing which forces current computers seriously. One of the models to solve this problem is artificial neural networks. It's possible that implementing nervous system of living beings on electronic circuits with artificial neural networks. Even nervous systems of living beings are working at low frequencies, they have highly parallel processing capabilities. Nervous systems' the biggest advantage on general purposed processors is processing multiple inputs and giving multiple outputs in a very short time. With artificial neural networks, nervous systems of living being can be used to solve different kind of problems and that expands the range of problems that can be solved. Artificial neural network or connectionist system is a nervous system based computational model used in various research disciplines. Artificial neural networks are based on a large collection of artificial neurons, which behaves like biological brain's axons. A single neural unit is connected to some of others and links can improve or prevent activation state of neighboring neural units. Each individual neural unit computes output using summation of inputs' multiplication with other units' weights. Limiting or thresholding function can be placed on each connection and on the unit itself to prevent datum exceeding the limit before propagating to other neural units. In spite of being manually programmed, these systems can be self-learning and trained. Thus, systems using this model outclasses competitors in areas where the solution or feature detection is difficult. In 1988 Chua and Yang purposed a new and special neural network model called cellular neural networks. Cellular neural networks are based on artificial neural networks and cellular automata. It can be used in image processing, wave generation, cryptology and sound processing. Cellular neural networks' first implementation is Cellular Neural Network Universal Machine is based on analogue and logic hybrid structure; processing is based on analogue, control is based on digital circuitries.Because of analogue implementation's disadvantages like flexibility and prototyping, discrete time cellular neural network model was designed by Harrer and Nossek and this became the start of the digital era for cellular neural networks. Until today many digital implementations of cellular neural network emulation has implemented. These implementations have some disadvantages and advantages to each other, so new solutions are being investigated. Multi core processors or graphics processors are used in doing parallel processes; but their mobility is lacking. Even so; processors like IBM Cell, NVidia Cuda and Intel Xeon can be used in modelling and simulation of cellular neural network applications. More application specific and mobile processors like digital signal processors and microcontrollers have limited capabilities. Because of all of these problems, Field Programmable Gate Arrays have been used in implementation of cellular neural network emulation processors; but there is no such cellular neural network emulation processor has learning capabilities. There are a few learning methods to learn cellular neural network templates. The mostly known examples are genetic algorithm, backpropagation like algorithm and manual template design. Backpropagation like learning method is a runtime learning method which based on error between desired and current value. In this work a cellular neural networks emulation processor which can do template learning with backpropagation was implemented. Processor has built on two units which are control unit and calculation unit. Processor works on 100 MHz frequency with 41.5 cantigrade degree heat and total 1 W power consumption. Processor is designed on Digilent Atlys, which has Spartan 6, development board using VHDL. Control unit includes Microblaze microprocessor which have communication units, pseudo-random number generator and configuration registers unit. Microblaze microprocessor controls random access memory, ethernet, UART, flash memory. Pseudo-random number generator is for using in learning methods. Microblaze microprocessor unit controls cellular neural network emulation processor via configuration registers unit. Calculation unit includes arithtmetic unit, caches and finite state machine. Finite state machine controls arithmetic unit, cache read-write and iteration control to get maximum parallelised and pipelined processing structure to have fast cellular neural network emulation processor. Finite state machine is cellular neural network emulation processor's control unit. Because of calculation unit is designed parametrically, calculation unit can be implemented in different FPGAs with different configuration settings. Configurable properties are; template size, cache size, and bit width. The configuration parameters in our design are; 3x3 templates, 128x128 cache and 16 bit data lane. These settings are the maximum settings for Digilent Atlys development board. Cellular neural network emulation processor can do a 3x3 state pixel process in 5 clock pulse with reading from cache, writing to cache and reading a template. Total calculation time depends on image size, software algorithm, DDR2 RAM, Microblace microprocessor and communication connection. Level 1 cache designed as first in first out memory, by this reading from level 2 block RAM cache becomes faster. The purpose of the level 2 block RAM ise decrease the speed disadvantage of reading from DDR2 RAM. Ethernet connection is for fast image transfer between host and client, the client is our FPGA implementation. UART connection is for error debugging and slow image transfer. Processor successfully runs on Digilent Atlys development board. Xilinx Spartan 6 XC6SLX45-3CSG324C FPGA, 128 MB 600 MHz DDR2 RAM and 1 Mbit UART connection on Digilent Atlys development board are being used and 16 MByte QSPI flash memory, 100 Mbits ethernet connection can be used in further works. With all of these functions, various cellular neural network and template learning algorithms can be implemented on cellular neural network emulation processor. Backpropagation template learning, random initialized template learning and multi template cellular neural network applications are successfully implemented on Microblaze microprocessor with C language. GPIOs are used for communication between Microblaze microprocessor and cellular neural network emulation processor core. The results are competitive with Intel Core i7 4790 MATLAB simulation results, even for 100 MHz frequency restrict. Processors' performance without learning is head to head with Intel Core i7 4790 MATLAB simulation with 84/1 power consumption gain and mobility advantages.