From b27d52e9289f6bb327509e69c87fff20936ac6fd Mon Sep 17 00:00:00 2001 From: simonrgk Date: Mon, 21 May 2018 00:11:13 +0200 Subject: [PATCH] sprawozdanie version dwa --- sprawozdanie/sprawozdanie.tex | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/sprawozdanie/sprawozdanie.tex b/sprawozdanie/sprawozdanie.tex index 2fc945c..bbd46d8 100644 --- a/sprawozdanie/sprawozdanie.tex +++ b/sprawozdanie/sprawozdanie.tex @@ -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} + +