Convolutional Networks Flashcards
local receptove field
neurony reaguja tylko na niektore bodzce w ograniczonych rejonach pola widzenia
nakladajace sie na siebie receptive fields moga na siebie nachodzic, zajmujac cale pole
LeNet-5
architektura lecun z 1998
convolutional layer
neurony w 1 warstwie nie lacza sie ze wszystkimi poprzednimi, ale tylko z tymi w receptive fields
kolejna warstwa laczy sie tylko z tymi neuronami - w efekcie z jakims malym obszarem
nie trzeba zamieniac inputu na 1d
zero padding
dodawanie zer na krawedziach w celu stalego rozmiaru warstw
stride
przeskok z jednego receptive field do 2, rozmiar warstw sie zmniejsza, mozna wykorzystac dla bardzo duzych danych
filters
convolutional kernels
wagi neuronow, reprezentowane jako male obrazy
sa macierzami, ktore uwidaczniaja pewne obszary, np wetykalna linia
feature map
efekt zastosowania filtra,
na kazdy pixel przypada 1 neuron,
wszystkie neurony w danej mapie maja te same parametry, co drastycznie redukuje liczbe obliczen
Once the CNN has learned to
recognize a pattern in one location, it can recognize it in any other location
neuron w wyzszej warstwie jest polaczony z wszystkimi neuronami kazdej mapy w danym obszarze
pooling layer
probkuje input
nie ma wag
uzywa jakies funkcji agregujacej, np max czy avegrahe
moze byc na glebokosc - rotacje
global average pooling layer
oblicza srednia calej mapy, moze byc wykorzystane jako output layer
lepsze wieksze czy mniejsze warstwy?
lepsze mniejsze ale nalozone na siebie, oprocz input layer
dlaczego ilosc filtrow rosnie?
poniewaz na poczatku ilosc low-level features jest raczej mala, potem jest bardzo duzo mozliwosci polaczenia ich w zaawansowane ksztalty
data augmentation
zwiekszanie zbioru danych poprzez dodatkowe transformacje, np translacje, rotacje, cieniowanie itd.
local response normalization
metoda nornalizacyjna, najbardziej aktywowane neurony ograniczaja neurony lezace na tej samej pozycji, w pobliskich feature mapach. Zwieksza to roznice miedzy mapami
inception modules
subnetworks, wymyslone dla GoogLeNet,
jeden z wymiarow ma dlugosc 1, przez co wylapuja pojedyncze pixele
wylapuja zwiazki na glebokosci,
redukuja wymiary
skip connection
signal dochodzacy do warstwy jest przekazywany do warstwy troche wyzej
When training a neural network, the goal is to make it model a target function h(x). If you add the input x to the output of the network (i.e., you add a skip connection), then the network will be forced to model f(x) =h(x) – x rather than h(x). This is called residual learning
umozliwiaj tez nauke nawet jesli niektore warstwy jeszcze nie zaczely
tf.image.resize
funkcja do resizu inputu,
nie utrzymuje proporcji
mozna uzyc
tf.image.crop_and_resize()
Intersection over
Union (IoU)
funkcja kosztu wykorzystywana do lokalizowania obiektow,
mierzy pole wspolne przewidzianej ramki i faktycznej, dzieli przez ich laczne pole - union
jak kiedys dzialala detekcja obiektow?
kiedys: trenowano CNN, siec przesuwala sie po zdjeciu, uzywajac jakiegos prostokata i szukala obiektow, wielkosci prostokata mogly byc rozne - minus: wykrywanie tego samego obiektu pare razy
non-max supression
dodajemy objectness output do cnn -prawdopodobienstwo ze obiekt znajduje sie na zdjeciu: sigmoid i binary-cross entropy
potem usuwamy wszystkie ramki z niskim prawdopodobienstwem
znajdujemy bouding box z najwiekszym prawdopodobienstwem i usuwanie innych ramek ktore bardzo sie z nim lacza, powtarzamy az zostanie tylko 1 ramka
Fully convolutional networks (FCN)
Zastepujemy dense layers convolucyjnymi
Potrzebne valid padding - wtedy filtr jest rozmiaru inputu -> 1 output
Efektem bedzie taka sama liczba outputow jak w przypadku standardowej dense layer, ktora obliczalaby wazone sumy
W przeciwienstwie do dense layer, moze przetwarzac inputy o dowolnym rozmiarze -> rozne rozmiary zdjec
Efekt bedzie taki sam jak dla dense layer -> mozna skopiowac wagi z dense layer
Przetwrz dane zdjexie tylko raz
YOLOv3
You only look once
5 bounding boxes na kazda komorke, dla kazdego liczymy objectness
20 class probabilities na komorke
zamiast wyliczac absolutne wspolrzedne na zdjeciu, wylicza je w dla kazdej komorki 0-1
przed trenowaniem, znajduje 5 wzorcowych bounding box dimensions - anchor boxes, za pomoca algorytmu K-means - > dobre rozmiary bounding boxes
siec jest trenowana za pomoca zdjec o roznych rozmiarach
Semantic segmentation
Klasyfikuje sie kazdy pixel do jakiejs klasy,
Nie odroznia sie instancji obiektow
Prpblem wynika ze zmiany rozmiaru zdjecia przechodzacefo przez filtry, siec moze wiedziec ze jest tam obiket ale nie wie gdzie dokladnie
bottleneck layer
ostatnia konwolucyjna warstwa przed output layer