\newpage
\section{Personenerkennung mit Hilfe einer Kamera}

\begin{figure}[p]
\centering
\begin{subfigure}[b]{0.8\textwidth}
    \includegraphics[width=1\linewidth]{images/pi_camera_1.jpg}
    \caption{}
    \label{fig:kamera-activate1}
\end{subfigure}
\begin{subfigure}[b]{0.8\textwidth}
    \includegraphics[width=1\textwidth]{images/pi_camera_2.jpg}
    \caption{}
    \label{fig:kamera-activate2}
\end{subfigure}
\begin{subfigure}[b]{0.8\textwidth}
    \includegraphics[width=1\textwidth]{images/pi_camera_3.jpg}
    \caption{}
    \label{fig:kamera-activate3}
\end{subfigure}

\caption{Drei Aktivierungsschritte der Praspberry Pi Kamera: \ref{fig:kamera-activate1}: Interfacing Options auswählen, \ref{fig:kamera-activate2}: Camera Options auswählen, \ref{fig:kamera-activate3}: Aktivierung bestätigen}%
\label{fig:kamera-activate}

\end{figure}

Als ein weiteres Vergleichsmittel zur Personenerkennung im Labor wurde eine 5 Megapixel Kamera für den Raspberry Pi zusammen mit einem Bilderkennungs Skript genutzt.
Aus Datenschutzgründen ist die Benutzung einer Kamera zwar nicht dauerhaft möglich in der Hochschule, zum Vergleichen der Effektivität mit der in dieser Arbeit entwickelten Präsenzerkennung und dem Präsenzerkennungssensor von Homematic jedoch sehr hilfreich.

Angeschlossen wird die Kamera über ein spezielles Flachbandkabel an den Raspberry Pi.
Die Aktivierung der Kamera  erfolgt über das Raspberry Pi Software Configuration Tool, das mit dem Befehl \inline{sudo raspi-config} aufgerufen wird.
Dort wird anschließend wie in Abbildung \ref{fig:kamera-activate} gezeigt die Kamera aktiviert.

Um die von der Kamera aufgenommenen Bilder zu analysieren wird Python zusammen mit den Modulen OpenCV, Numpy, Imutils und imagezmq benutzt.
Der Sourcecode ist auf dem EFI Git Service unter dem Projekt \inline{heimbsle69869 / smarthome-presence-detect} in dem Ordner \inline{Camera} zu finden.
Zur Personenerkennung wird das Skript \inline{person_detection.py} genutzt.
Es nutzt imutils um einen Videostream zu lesen, von dem jeder Frame in ein OpenCV-Array eingelesen wird.
Anhand dieses Arrays werden durch ein bereits für die Personenerkennung trainierten Tensorflow-Erkennungsmodell mit einer definierbaren Konfidenz Personen erkannt.
Ändert sich die Anzahl der erkannten Personen von einem Frame auf den anderen, wird die neue Anzahl per MQTT an Node-Red veröffentlicht.

\paragraph{}
Die Präsenzerkennung mit dieser Methode wird begrenzt duch die Rechenleistung des Rasp\-berry Pi, dem Aufnahmewinkel der Kamera und der Qualität des Trainings des verwendeten Erkennungsmodell.
Durch die begrenzte Rechenleistung des Raspberry Pi werden die aufgenommenen Frames nur sehr langsam, mit etwa 3-10 Frames pro Sekunde, verarbeitet.
Die Kamera nimmt mit 30 Frames pro Sekunde auf.
Dies kann verbessert werden, indem die Frames vom Raspberry Pi über WLAN an einen leistungsfähigeren Computer übertragen werden, auf dem die Analyse stattfindet.
So konnte die Verarbeitungsgeschwindigkeit auf fast 30 Frames pro Sekunde erhöht werden.

Das verwendete Erkennungsmodell erkennt Personen während des Tests zuverlässig.
Allerdings werden sehr häufig fälschlicherweise mehr Personen erkannt als sich im Bild befinden.
Dies könnte mit weiterem Training des Modells verbessert werden.

\paragraph{Fazit Kamera:}
Die Präsenzerkennung mit Hilfe einer Kamera ist nicht realistisch Anwendbar in einer Hochschulumgebung, da heutige Datenschutzrichlinien die Aufnahme Personenbezogener Daten ohne deren Einwilligung nicht erlauben.
Sie ist jedoch in Anbetracht der Erkennungsqualität die vielversprechendste Lösung, da mit einem nur grundlegend trainierten Erkennungsmodell bereits sehr gute Ergebnisse erzielt wurden.