Convolutional Neural Networks (CNNs) for Visual Recognition
In Stanford wird aktuell in unterschiedlichen Vorlesungen die Deep Learning Technologie gelehrt. Dabei spielen neuronale Netzwerke eine sehr wichtige Rolle. Convolutional Neural Networks (CNN) eigen sich insbesondere für die Erkennung von Objekten in Bildern und Videos – für die visuelle Erkennung.
Die Stanford Vorlesung CS231n (Convolutional Neural Networks for Visual Recognition) gibt einen sehr guten und tiefen Einblick in die Technolgie, die immer mehr Anwendungen findet. Die Vorlesung wird von in der KI Szene bekannten Wissenschaftlern durchgeführt: Fei-Fei Li, Andrej Karpathy und Justin Johnson
Der Inhalt der KI Vorlesung wird auf der CS231n Stanford Seite wie folgt beschrieben:
Computer Vision has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. Core to many of these applications are visual recognition tasks such as image classification, localization and detection. Recent developments in neural network (aka “deep learning”) approaches have greatly advanced the performance of these state-of-the-art visual recognition systems. This course is a deep dive into details of the deep learning architectures with a focus on learning end-to-end models for these tasks, particularly image classification. During the 10-week course, students will learn to implement, train and debug their own neural networks and gain a detailed understanding of cutting-edge research in computer vision. The final assignment will involve training a multi-million parameter convolutional neural network and applying it on the largest image classification dataset (ImageNet). We will focus on teaching how to set up the problem of image recognition, the learning algorithms (e.g. backpropagation), practical engineering tricks for training and fine-tuning the networks and guide the students through hands-on assignments and a final course project. Much of the background and materials of this course will be drawn from the ImageNet Challenge.
Vorlesungsreihe CS231n 2016 auf YouTube
Hier könnt ihr euch die CNN Vorlesungen über YouTube anschauen:

















Notizen zu den einzelnen Vorlesungen
Vorlesung 1: Einleitung und historischer Hintergrund
- CS231n Lecture 1 Video und Folien als Overlay
- Stanford Vorlesungsreihe CS229 (Machine Learning) wird vorausgesetzt
- Vorlesungreihe CS131 ist ein sinnvoller Einstieg in Computer Vision mit Basisinformationen
- Vorlesungreihe CS231a bietet allgemeinen Überblick über CNN
- Fokus von CS231n: image classification (wie object detection und image captioning) mit CNN Architektur
- Das Themenfeld AI (artificial intelligence) wurde bereits 1966 (vor 50 Jahren) als Forschungsgruppe gestartet
- Aktuelle Herausforderungen in dem Themengebiet „visual recognition“ in computer vision
- perceptual grouping
- dence image labeling für gesamte Szenen mittels perceptual grouping
- Verstehen von Interaktionen in einem Bild –> aktuelles Projekt: visual genome
- Ausblick: eine Geschichte aus einem einzelnen Bild erstellen können –> Dissertation von Andrej Karpathy (siehe auch seinen Blog)
- Interessante Wettbewerbe für Objekterkennung
- PASCAL Visual object challenge (20 Objekt Kategorien)
- IMAGENET – 22K Kategorien, 14M Bilder (2012 war eine CNN Architektur das erste Mal der Sieger des Wettbewerbs. Dies war der Beginn der Deep Learning Revolution)
- Wichtige Personen
- Yann Lecun (Erfinder der CNN Archtiektur)
- Alex Krizhevsky (Erfinder von „AlexNet“)
- Jeff Hinton (Advisor von Alex Krizhevsky)
- Interessante Inhalte dieses Kurses: Imaga Captioning (mithilfe RNN) sowie DeepDream und NeuralStyle
Vorlesung 2: Bild Klassifizierung Teil 1
- CS231n Lecture 2 Video und Folien als Overlay
- Empfehlung: Python Numpy Tutorial
- Besprochene Themen:
- Image Classificition
- Nearest Neighbor Classifier (auch: k-Nearest Neighbor)
- Pixelweise Differenz von Test und Training Bildern, anschließend Aufsummierung der Differenz, die kleineste Zahl liefert das beste Trainingsbild –> Klassifizierung
- Das Tool FLANN optimiert den Nearest Neighbor Classifier in Bezuf auf die Rechenzeit
- L1 (Manhattan) distance, L2 (Euclidean) distance
- cross validation
- Zusatzinfos:
- Beispiel Datensatz: CIFAR-10 (10 labels, 50.000 Trainingsbidler images, Auflösung: 32x32px, 10.000 Testbilder)
- Architektur-unterschiede: CNN (gut in Bilderkennung), RNN (gut in Modellierung von Sequenzen)
Vorlesung 3
- CS231n Lecture 3 Video und Folien als Overlay
- Themen, die diskutiert wurden
- loss functions
- Multiclass SVM loss
- Softmax Classifier
- Weight Regularization
- L2 regularization (wird typischerweise benutzt)
- Optimazation
- Mini-batch Gradient Descent
- Update Formeln wie Momentum, Adagrad, RMSProp und Adam werden in weiteren Vorlesungen diskutiert
- loss functions
- Zusatzinfos:
Vorlesung 4
- CS231n Lecture 4 Video und Folien als Overlay
- Themen, die in dieser Vorlesung vorgestellt wurden:
- Gradient Descent
- Back Propagation
- sigmoid function
- Jacobian matrix
- Kodier-Beispiele mit unterschiedlichen Frameworks
- Torch Layer
- Caffe Layer (GPU Implementierung)
- Neural networks
- hidden layer
- activation functions (sigmoid, tanh, ReLU, Leaky ReLU, Maxout, ELU)
- Zusatzinfos:
- Beispiel, wie das Trainieren eines 2 Layer Neural Network in 11 Zeilen implementiert wurde
- Online Demo für ein ConvNetJS
Vorlesung 5
- CS231n Lecture 5 Video und Folien als Overlay
- Diskutierte Themen
- Die Geschichte über Trainieren von neuronalen Netzen
- Erste wirklich nutzbringen Ergebnisse: Context-Dependent Pre-trained Deep Neural Networks for Large Vocabulary Speech Recognition – George Dahl, Dong Yu, Li Deng, Alex Acero, 2010
- Durchbruch: Imagenet classification with deep convolutional neural networks – Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton, 2012
- Vor- und Nachteile von einzelnen Aktivierungsfunktionen
- Sigmoid
- tanh
- ReLU: f(x)=max(0,x), erfunden von Krizhevsky in 2012
- Leaky ReLU: f(x)=max(0.01*x,x)
- Parametric Rectifier (PReLU): f(x)=max(alpha*x,x)
- Exponential Linear Units (ELU)
- Maxout “Neuron”
- Daten-Vorbereitung
- zero-centered
- normalized
- decorrelated
- whitened
- Initialisierung der Gewichte (weight initialization)
- kleine Zufallszahlen
- „Xavier initialization“ –> basiert auf den Trainings-Daten und wird nicht willkürlich definiert. Funkioniert mit ReLU leider nicht, außer es wird ein Faktor 0.5 eingebaut.
- Batch Normalization
- Überwachung des Lernprozesses
- Optimierung der Hyperparameter
- random search vs. grid search
- Überwachnung von loss und accuracy
- Die Geschichte über Trainieren von neuronalen Netzen
- Zusatzinformationen:
- Es gibt viele vortrainierte ConvNets, so dass eigene Ideen auch ohne große Datenmengen ausprobiert werden können. Siehe z.B. Caffe Model Zoo bei github
- interessante, nicht erklärbare Ergebnisse für Loss Functions bei tumblr
Vorlesung 6
- CS231n Lecture 6 Video und Folien als Overlay
- Diskutierte Themen
- Parameter Updates
- Stochastic Gradient Descent (SGD)
- momentum update –> dämpft das Update
- nesterov momentum update / nesterov accelerated gradient (NAG)
- AdaGrad update –> reduziert nach und nach das Update
- RMSProp update –> Verbesserung von AdaGrad update
- Adam update –> Mix aus momentum und RMSProp
- Eininge Hinweise zur learning rate
- second order optimization methods
- BGFS
- L-BFGS
- Regularization with dropout
- Monte Carlo approximation
- Kurzer Einstieg in Convolutional Neural Networks
- LeNet
- AlexNet
- CNNs werden z.B. für autonomes Fahren benutzt
- es werden viele Bespiele für CNN Anwendungen genannt
- Parameter Updates
Zusätzliche Information zu der ConvNet Vorlesung
Folien und Zusatzmaterial
Stanford University CS231n: Convolutional Neural Networks for Visual Recognition
here.) Unless otherwise specified the course lectures and meeting times are Monday, Wednesday 3:00-4:20, Bishop Auditorium in Lathrop Building (map)Update: The class has ended!
Detaillierte Beschreibung der CNN Technologie
CS231n Convolutional Neural Networks for Visual Recognition
Course materials and notes for Stanford class CS231n: Convolutional Neural Networks for Visual Recognition.
Quellcode zu den Projekten der ConvNet Vorlesung
cs231n/cs231n.github.io
cs231n.github.io – Public facing notes page