% !TeX root = ../thesis.tex
%----------------------------------------------------------------------------
\chapter{Madárhang felismerő rendszer implementáció}
\label{chapter:birbnetes}
%----------------------------------------------------------------------------

Éves szinten komoly károkat tudnak okozni a szőlőtermő vidékeken a termést előszeretettel fogyasztó seregély madarak\cite{seregelykar}. Jelenleg kevés hatékony megoldás van arra, hogy a szőlősgazdák meg tudják védeni a termést a kártékony madaraktól\cite{nk}.

A kártevő madarak hangalapú azonosítására dolgozott ki egy mesterséges intelligenciát alkalmazó megoldást diplomamunkája során Nagy Kristóf. Az ő munkájára alapoztunk ezt követően egy éves projekt munkát Torma Kristóffal jelen diplomamunkát megelőző évben, így itt csak rövid áttekintést szeretnék adni róla.

Ez a projekt alkalmas arra, hogy jól szemléltesse a peremhálózaton történő adat aggregációs képességeket a \gls{felho} szoftver számára. A projekt jól szemlélteti egy ilyen architektúra átültetésének kihívásait perem és \gls{felho} számítástechnikai rendszerre.

\section{Előzetes munka}

A Nagy Kristóf által megalkotott detekciós algoritmus felhasználást olyan megoldásban láttuk, ahol termőföldekre kihelyezett, nagy mennyiségben telepített \acrfull{iot} eszközök gyűjtik a hangmintákat és továbbítják a központi feldolgozó egység felé, amely a hangminták intelligens felismerését végzi. A kártékony madarak hangjának azonosítása után pedig valamilyen beavatkozást tudnak tenni a madarak elriasztásának érdekében (Például: a természetes ellenségeinek hangját lejátszani)

A rendszert amelyet fejlesztettünk hagyományos \gls{felho} architektúrára terveztük. Az \acrshort{iot} eszközök közvetlenül a \gls{felho}ben futó szolgáltatásokkal kommunikálnak.


\subsection{Intelligens felismerés}


A hangminták felismerése egy két szintű \acrfull{mi} rendszerben történik. Az első szint egy egyszerűbb \acrfull{svm} alapú algoritmus, amely egyfajta előszűrést végez a rögzített hangmintákon. Kiválasztja azokat a hangmintákat, amelyek nagy eséllyel tartalmaznak madár hangot.

A második szinten egy sokkal bonyolultabb \acrfull{cnn} alapú algoritmus áll. A \acrshort{cnn} által használt modell úgy lett tanítva, hogy a rögzített -- feltehetően -- madárhangokat tudja osztályokba sorolni. Így képes specifikusan a seregély hangját felismerni és elkülöníteni a többi madárhangtól.

A korábban említett \acrshort{svm} alapú komponens miatt az \acrshort{iot} eszközökön, míg a komolyabb számítási igényű \acrshort{cnn} alapú megoldás, már igényeli a \gls{felho} által nyújtott komolyabb számítási teljesítményt. 

Az elméleti működéséről az algoritmusoknak a következő fejezetek adnak áttekintést.

\subsubsection{\acrlong{svm}}

A gépi tanulás kontextusában az \acrshort{svm} egy felügyelt tanulási módszer, amelyet többek között a klasszifikációs feladatok megoldására tudnak eredményesen használni\cite{scikit_svm}. Fontos előnye, hogy nagyon hatékonynak tekinthető az erőforrás használat szempontjából.

Működésének alapját az adja, hogy úgy próbálja az adathalmazt felosztani osztályokra, hogy megkeresi egy vélt választó vonalhoz legközelebb eső pontokat (support vectorokat), majd azon dolgozik hogy a választó vonal és ezen pontok távolsága a legnagyobb legyen. Az algoritmus egyszerű dimenzióváltásoknak köszönhetően nagyon hatékonyan tud magasabb dimenziókban is problémát megoldani\cite{medium_svm}.


% TODO Ide szülni még egy bekezdést, hogy az itt hogy jó nekünk

\subsubsection{Konvolúciós Neurális Hálók}


A neurális hálók működésükben és felépítésükben a leginkább hasonlítanak az emberi agy működésére. Mint azt a neve is mutatja, neuronokból áll. Minden egyes neuronnak van egy bemenete és egy kimenete. A neuronok belsejében pedig egy aktivációs függvény van, amely alapján a kimenetet számolja. Ezeket a neuronokat rétegekbe szervezik, és oly módon kötik össze őket, hogy az egyes rétegekben lévő neuronok, az előttük lévő réteg kimenetét kapják meg bemenet gyanánt. Egy ilyen konstrukciót nevezünk neurális hálónak\cite{medium_nn}. A háló minden éle rendelkezik úgynevezett súlyozással, itt mi ezeknek a súlyozásoknak az összességét és magának a hálónak a felépítését egy csomagban modellnek nevezzük.

A konvolúciós neurális hálóknak (\acrlong{cnn}; \acrshort{cnn}) nagyon széles felhasználási köre van, a mozgókép felismeréstől az ajánló rendszereken át a természetes nyelvfeldolgozásig. A konvolúciós neurális hálók a neurális hálók egy speciális fajtája, ahol az egyes rétegek konvolúciót valósítanak meg\cite{medium_cnn}.

Az alkalmazott megoldás a beérkező hangokból spektrogramot generál, majd ezeket képként értelmezve végez rajtuk felismerést. Mivel a konvolúciós neurális hálókat eredményesen használják képfelismerésre, ezért ez egy kézenfekvő megoldás itt is.

\subsection{Telepített eszköz}

A termőföldre telepített eszközök alacsony áramfogyasztású és következésképp csekély számítási teljesítményű hardverek.

A telepítés helyének adottságaiból fakadóan, fontos, hogy képesek legyenek valamilyen rádiós interfészen kommunikálni. Mivel a szőlő termő vidékeken ritkán áll rendelkezésre megfelelő vezetékesen kiépített informatikai infrastruktúra. Illetve a termőföldek sokasága és mérete miatt sem könnyen kivitelezhető ez.

Munkánk során egy ilyen eszköz prototípusát is elkészítettük mind hardver mind szoftver tekintetében. Fontosnak tartottuk a platform bővíthetőségét, így ezt figyelembe véve terveztük meg azt. 

\subsubsection{Hardver}

A hardver lényegében egy számítógép a szükséges perifériákkal együtt egy dobozba szerelve. A rendszer lelkét adó számítógép egy \acrfull{rpi} mikroszámítógép 4-es modellje. Ez a modell 4 magos ARM processzorral és 8 Gigabyte memóriával rendelkezik. Ennek az az oka, hogy nem szerettük volna, ha már a fejlesztés szakaszában hardveres limitációkba ütköznénk. Azt szerettük volna, ha kész a rendszer akkor konkrét mérésekre és számításokra tudjuk alapozni a hardverválasztást, de addig ne legyen ebből probléma. Népszerűségének köszönhetően a \acrlong{rpi} kellően jó közösségi támogatással rendelkezik mind hardveres mind pedig szoftveres szempontból.

Az eszköz bemenetéül egy USB mikrofon szolgál. Ez egy egyszerű széles hatókörű konferencia mikrofon, amely eredeti funkcióját tekintve arra szolgál, hogy az asztal közepén az asztal körül ülők hangját képes legyen venni. így a tesztkörnyezetünkhöz is megfelelő lefedettséggel rendelkezik.

Az eszköz visszajelzésre több megoldással is rendelkezik. Elsősorban három különböző színű \acrshort{led} izzóval rendelkezik (piros, zöld és kék), amelyeket szoftveresen lehet vezérelni. Ezek különböző fontos eseményekre vagy állapotokra tudják felhívni a figyelmet.

Emellett a prototípus tartalmaz egy hangszórót és egy D osztályú erősítőt, amellyel állítható hangerővel különböző hangok játszhatóak le. Ez egy demó környezet esetén lehet a seregély madár természetes ellenségeinek hangmintája is.

A vezeték nélküli kommunikációs interfésze az eszköznek nincs fixen rögzítve. Az adott környezetnek és tesztesetnek megfelelő kiegészítővel látjuk el, ha szükség van rá. Ez lehet \acrshort{wifi} de \gls{4g} vagy akár \gls{5g} is.

A prototípus egy műanyag házba van beszerelve. Az összeszerelt prototípus \aref{fig:doboz}.\ ábrán látható. A fejlesztés és tesztelés megkönnyítésére egy RJ45-ös csatlakozó is beépítésre került, amelynek segítségével csatlakozhatunk az eszközre \acrshort{ip} protokoll felett. Az összeszerelés -- annak egyszerűségéből adódóan -- kézzel történt.

\begin{figure}[h!]
	\centering
	\includegraphics[width=0.8\textwidth]{figures/doboz}
	\caption{Összeszerelt prototípusa a telepített \acrshort{iot} eszköznek}
	\label{fig:doboz}
\end{figure}

Az eszköz tápellátása 5V-on történik, a használt tápegység 3A áram leadására képes, tapasztalatink szerint ez elegendő az eszköz stabil működtetésére.


\subsubsection{Szoftver}

A szoftverkörnyezet alapjául szolgáló operációs rendszer egy \textit{Debian}\footnote{\url{https://www.debian.org/}} alapú rendszer (\textit{Raspbian}) fut. Ez egy népszerű és jól dokumentált operációs rendszer.

Az erre telepített szoftver komponenst két részre bontható. Platform függő platform-illesztőre és platform független üzleti logikára. 

% platform illesztő, üzleti logika -> erről hosszan lehet írni
% Debian/Raspbian
% Python ?
% Deployment gittel

\subsection{\Gls{felho} rendszer}

\begin{figure}[h!]
	\centering
	\includegraphics[width=1.05\textwidth]{figures/architecture-redesigned}
	\caption{A \gls{felho} szoftver architekturális felépítése}
	\label{fig:architecture-redesigned}
\end{figure}


\subsection{Kommunikáció}

% HTTP és MQTT hibrid megoldás
% Nat meg adat méret

\section{Tervezés}

% Itt leírom az átalakítást a három rétegű pörgő lófaszra

% a szükséges átalakításokat összeszedem

% Végül az elkészült műdől is írok pár sort és hogy miért jó ez nekünk
% = hogy lehet ezzel megmutatni, hogy miért jó a kenyér és a héja