sprawozdanie version dwa

This commit is contained in:
simonrgk 2018-05-21 00:11:13 +02:00
parent e05837c965
commit b27d52e928

View File

@ -46,7 +46,7 @@
\title{Retusz starych zdjęć \\ \small{Projekt ze Sztzucznej Inteligencji, WETI, PG 2018}}
\author{\protect\begin{tabular}{ll|l}
Szymon Szczyrbak & \textit{165760} & Informatyka 2016/2017 \\
Kacper Donat & \textit{165581} & Semest IV, gr. 1
Kacper Donat & \textit{165581} & Semestr IV, gr. 1
\protect\end{tabular}}
\floatname{algorithm}{Program}
@ -105,9 +105,27 @@
Każdy z kroków jest parametryzowalny, oraz każde zdjęcie zawiera losową zmianę do parametru w celu zapobiegnięcia
zbyt szybkiemu overfittingowi sieci.
\subsection{Architektura modelu GAN}
Technika GAN zakłada jednoczesne uczenie dwóch modelów: generatora i dyskryminatora. W niniejszym projekcie dla generatora wejściem jest uszkodzone zdjęcie i wyjsciem jest zdjęcie po retuszu, a dla dyskryminatora wejściem jest zdjęcie po retuszu, a wyjściem jest mapa wartości od $0.0$ do $1.0$ oceniających prawdopodobieństwo przynależności wejściowego zdjęcia do datasetu zawierającego prawidłowo wyretuszowane zdjęcia.
Dyskryminator to sztuczna sieć neuronowa składająca się z czterech warstw konwolucyjnych (filtr 4x4x3, krok 1x1 i liczba map aktywacji dla pierwszej warstwy równa 32 i dla kolejnych dwukrotnie większa od liczby warstwy poprzedniej) i dodatkowej warstwy wyjściowej zwracającej jedną mapę o głębokości 1. W warstwach ukrytych po konwolucji wykonywana jest normalizacja. We wszystkich warstwach opróch warstwy wyjściowej stosowana jest funkcja aktywacyji LeakyReLU o $\alpha = 0.2$. W warstwie wyjściowej zastosowano funckję aktywacji Sigmoid.
Generator składa się identycznie tak jak dyskryminator z czterech warstw konwolucyjnych oraz dodatkowych lustrzanie zbudowanych warstw dekonwolucyjnych. W warstwie wyjściowej przed dekonwolucją stosowana się dodatkowa funkcja aktywacyji LeakyReLU, a po dekonwolucji zastosowano funkcję aktywacyji tanh.
Obie sieci neuronowe są uczone dostarczonym przez bibliotekę PyTorch algorytmem Adam o tempie uczenia $lr = 0.0002$.
Użyte funkcje straty generatora $G_{loss}$ i dyskryminatora $D_{loss}$ zdefiniowano poprzez funkcje straty L1 oraz Binary Cross-Entropy jako:
$$G_{loss} = BCE(D(G(x), real) + \lambda L1(G(x), y)$$
$$D_{loss} = BCE(D(y),real_{smooth}) + BCE(D(G(x)),fake_{smooth})$$
gdzie $x$ to zniszczone zdjęcie z datasetu, a $y$ to wyretuszowane zdjęcie z datasetu. $real$ to mapa wartości $1.0$ opisująca perfekcyjnie zretuszowanie zdjęcia, a $fake$ to analogiczna mapa samych $0.0$.
Dodanie do funkcji straty generatora sterowanej parametrem $\lambda = 100$ straty L1 zdaje się zapobiegać nauce oszukiwania dyskryminatora poprzez manipulacje kolorem palety barw zdjęcia.
Jako że dyskryminator uczy się oceniać jakość retuszu znacznie szybciej, niż generator uczy się dobrze retuszować, spowolniono szybkość jego nauki techniką znaną jako label smoothing dodając do $real$ i $fake$ losowy szum z zakresu kolejno od $-0.3$ do $0.2$ oraz od $0.0$ do $0.3$, w wyniku uzyskując $real_{smooth}$ i $fake_{smooth}$.
\section{Rezultaty}
\begin{center}\textit{\color{red} wstaw budowę sieci plox}\end{center}
\begin{center}\textit{\color{red} wstaw budowę sieci plox
- nope jest textowo opisana}\end{center}
\begin{figure}[H]
\centering
@ -167,3 +185,5 @@
decydować, które części są uszkodzeniem, a które detalem do zachowania. Problem ten widać w 3 wierszu prezentowanych
danych - wzór na koszuli został uznany za uszkodzenie i usunięty przez sieć.
\end{document}