• Keine Ergebnisse gefunden

Bildverarbeitung Praktikum ¨Ubung 8, Abgabe 18.06.2020

N/A
N/A
Protected

Academic year: 2021

Aktie "Bildverarbeitung Praktikum ¨Ubung 8, Abgabe 18.06.2020"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Bildverarbeitung Praktikum

Ubung 8, Abgabe 18.06.2020¨

Dr. Christina Gillmann June 10, 2020

1 Kleiner Disclaimer

Bitte beachten sie, dass es in der aktuellen Vorlesung nicht darum geht, die Algorithmen wie beispielsweise die Backprpagation selbst zu implementieren. Um das zu lernen gibt es eigene Vorlesungen, deren Inhalt den Rahmen unserer Vorlesung sprengen w¨urden.

Ich m¨ochte sie an dieser Stelle explizit auffordern eine solche Vorlesung zu besuchen, wenn es ihr Studienplan zul¨asst. Neurale Netze sind eine zukunfsweisende Technologie und sie k¨onnen f¨ur ihre pers¨onliche Karriere (egal ob akademisch oder in der Industrie) von diesem Wissen massiv provitieren. Aufgrund der Popularit¨at von neuralen Netzw- erken und der guten Anwendbarkeit in der Bildverarbeitung m¨ochte ich ihnen jedoch nicht vorenthalten wie sie schnell und einfach ein neurales Netzwerk programmiert wer- den kann. Ich m¨ochte ihnen mit dieser Aufgabe ein Beispiel geben wie sie sehr gute Bibliotheken (vor allem im Bezug auf Performance und Generalit¨at) nutzen k¨onnen um Neurale Netzwerke schnell zu implementieren wowie ihnen ein Gef¨uhl zu geben was bei der Nutzung von neuralen Netzwerken wichtig ist.

2 Die eigentliche Aufgabe: CNN Programmieren

Sie sollen ein CNN implementieren. Hierzu m¨ussen sie tensorflow und keras herunter- laden. Diese Bibliotheken stellen alle Funktionen bereit, die sie f¨ur das Trainieren und Testen von Neuralen Netzwerken ben¨otigen.

c o n d a c r e a t e - n t e n s o r f l o w _ e n v t e n s o r f l o w c o n d a a c t i v a t e t e n s o r f l o w _ e n v

c o n d a i n s t a l l - c conda - f o r g e k e r a s

c o n d a i n s t a l l - c conda - f o r g e / l a b e l / b r o k e n k e r a s c o n d a i n s t a l l - c conda - f o r g e / l a b e l / c f 2 0 1 9 0 1 k e r a s c o n d a i n s t a l l - c conda - f o r g e / l a b e l / c f 2 0 2 0 0 3 k e r a s

1

(2)

In Tensorflow gibt es einen Datensatz namens MNIST. Es handelt sich hierbei um einen sehr ber¨uhmten Datensatz, der handgeschriebene Zahlen von 0 bis 9 enth¨alt. Dabei soll richtig erkannt werden welche Zahl geschrieben wurde.

Mit folgendem Befehl k¨onnen sie den Datensatz laden. Er enth¨alt 60000 Trainings- datens¨atze und 10000 Testdatens¨atze.

i m p o r t t e n s o r f l o w as tf

( x_train , y _ t r a i n ) , ( x_test , y _ t e s t ) = tf . k e r a s . d a t a s e t s . m n i s t . l o a d _ d a t a ()

a) Finden sie einen Repr¨asentanten jeder Klasse (0-9) und zeigen sie ihn in einem Plot an.

Bevor sie das neurale Netzwerk trainieren k¨onnen m¨ussen sie die Daten normalisieren und in die richtige Form (Werte zwischen 0 und 1) bringen. Das erreichen sie durch:

x _ t r a i n = x _ t r a i n . r e s h a p e ( x _ t r a i n . s h a p e [0] , 28 , 28 , 1) x _ t e s t = x _ t e s t . r e s h a p e ( x _ t e s t . s h a p e [0] , 28 , 28 , 1) i n p u t _ s h a p e = (28 , 28 , 1)

x _ t r a i n = x _ t r a i n . a s t y p e ( ’ float32 ’) x _ t e s t = x _ t e s t . a s t y p e ( ’ float32 ’) x _ t r a i n /= 255

x _ t e s t /= 255

Nun k¨onnen sie das neurale Netzwerk designen. Ein Vorschlag w¨are:

m o d e l = S e q u e n t i a l ()

m o d e l . add ( C o n v 2 D (28 , k e r n e l _ s i z e =(3 ,3) , i n p u t _ s h a p e = i n p u t _ s h a p e ) )

m o d e l . add ( M a x P o o l i n g 2 D ( p o o l _ s i z e =(2 , 2) ) ) m o d e l . add ( F l a t t e n () )

m o d e l . add ( D e n s e (128 , a c t i v a t i o n = tf . nn . r e l u ) ) m o d e l . add ( D r o p o u t ( 0 . 2 ) )

m o d e l . add ( D e n s e (10 , a c t i v a t i o n = tf . nn . s o f t m a x ) )

Dieser Aufabau entscheidet ¨uber die Performance ihres Neuralen Netzwerkes. Die 10 in ”Dense” muss so beibehalten werden, da sie am Ende entscheiden m¨ochten, welche der Klassen 0-9 nun am besten getroffen wurde. (Hierzu ein kleiner Hinweis: wir werden uns in der Vorlesung noch damit besch¨aftigen was es bedeutet, wenn man diese Klasse nicht einwandfrei identifizieren kann).

Trainieren k¨onnen sie ihr Netzwerk durch m o d e l . c o m p i l e ( o p t i m i z e r = ’ adam ’ ,

l o s s = ’ s p a r s e _ c a t e g o r i c a l _ c r o s s e n t r o p y ’ , m e t r i c s =[ ’ a c c u r a c y ’])

m o d e l . fit ( x = x_train , y = y_train , e p o c h s = 1 0 )

2

(3)

m o d e l . e v a l u a t e ( x_test , y _ t e s t )

Die Funktion ”evaluate” wird ihnen die Genauigkeit ihres Models ausgeben.

b) Hier k¨onnen sie verschiedene Parameter f¨ur die Kernel Gr¨oße w¨ahlen. Testen sie 3-5.

c) Auch das Pooling kann angepasst werden (2-5). Testen sie diese Parameter.

Jedes mal, wenn sie einen der Parameter aus b) und c) ¨andern, wird ihr Model eine andere Pr¨azision bei der Vorhersage haben. Dokumentieren sie diese.

d) Es gibt im MNIST Datensatz Bilder die einfach zu klassifizieren sind und welche bei denen es schwierig ist. Ein Beispiel ist der Datensatz mit der Nummer 4444. Es handelt sich dabei um eine 9, die einen zweiten Bogen enth¨alt. Bei allen Experimenten die sie durchf¨uhren sollten sie beobachten, ob dieser Datensatz richtig klassifiziert wird.

Teilen sie mir ihre Ergebnisse abh¨angig von den gew¨ahlten Parametern mit. Folgend finden sie den Code, der f¨ur den Datensatz die Vorhersage trifft.

i m a g e _ i n d e x = 4 4 4 4

plt . i m s h o w ( x _ t e s t [ i m a g e _ i n d e x ]. r e s h a p e (28 , 28) , c m a p = ’ Greys ’) p r e d = m o d e l . p r e d i c t ( x _ t e s t [ i m a g e _ i n d e x ]. r e s h a p e (1 , i m g _ r o w s

, i m g _ c o l s , 1) ) p r i n t ( p r e d . a r g m a x () )

Generell sollten sie diese Aufgabe als einen Versuchsaufbau sehen bei dem sie viele Parameter haben die sie manipulieren k¨onnen. Neurale Netze sind an der Stelle eine Art Blackbox in der sie etwas reinf¨uttern und ein Ergebnis bekommen, jedoch k¨onnen sie nicht nachvollziehen wie diese Berechnung genau funktioniert (das ist tats¨achlich ein fun- damentaler Forschungsfunkt). Die Qualit¨at ihres Ergebnisses h¨angt von den gew¨ahlten Parametern ab und es gibt noch keine ausreichenden Methoden um dieses ”Irgendwas”

mathematisch zu fassen. Gerne diskutieren wir ihre Ergebnisse dann in der Abnahme (soweit ich das nachvollziehen kann, denn wie gesagt, man kann es manchmal nicht richtig nachvollziehen).

3

Referenzen

ÄHNLICHE DOKUMENTE

Wenn sie Pixel zur Region hinzuf¨ ugen, m¨ ussen sie eine Variable mit dem aktuellen Mittelwert der Region speichern.. Dieser wird dann f¨ ur das weitere Entscheiden ¨ uber die

b) Die Filter so lange iterieren, bis sich am Bild nichts mehr ¨ andert. Wenden sie ihren Algorithmus auf ein bin¨ ares

Sie m¨ ussen jedoch nun zus¨ atzlich speichern welche Kanten sie entlang gelaufen sind. Nutzen sie dazu das Schema aus

In dieser Aufgabe sollen sie den Datensatz durch inderektes Volumen Rendering visual- isieren.. Hierbei kann ihnen das Histogramm Aufschluss geben.. b) Vergleichen sie

Schreiben sie eine Funktion U nsicherheitLaplace, die ein Bild und eine Unsicherheit- squantifizierung dieses Bildes als Eingabe erh¨ alt. Sie sollen nun ¨ ahnlich wie im Beispiel

Stichtenoth 11.01.2006. Mathematik f¨ ur

a) eine Klasse TableEntry, welche die Datenstruktur für einen Eintrag der Hashtabelle enthält, b) eine Klasse HashTable, welche die Hashtabelle selbst implementiert.. Die Klasse

F¨ ur ein Elektron mit Spin- 1 2 im Coulombpotential des Atomkernes betrachten wir nur die Zust¨ ande |(ν = 1)lmi |αi und |(ν = 2)lmi |αi, wobei |αi den Spinanteil beschreibt und