sprawozdanie version dwa
This commit is contained in:
parent
e05837c965
commit
b27d52e928
@ -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}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user