From 7b288397a51633c878631c0e6d48c96ffce09a84 Mon Sep 17 00:00:00 2001 From: nunzip Date: Thu, 7 Mar 2019 19:44:00 +0000 Subject: Add VBN figures and vanilla gan figures --- report/fig/vanilla_gan_arc.pdf | Bin 0 -> 384912 bytes report/fig/vbn_dc.pdf | Bin 0 -> 264080 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 report/fig/vanilla_gan_arc.pdf create mode 100644 report/fig/vbn_dc.pdf (limited to 'report/fig') diff --git a/report/fig/vanilla_gan_arc.pdf b/report/fig/vanilla_gan_arc.pdf new file mode 100644 index 0000000..3bc6a6b Binary files /dev/null and b/report/fig/vanilla_gan_arc.pdf differ diff --git a/report/fig/vbn_dc.pdf b/report/fig/vbn_dc.pdf new file mode 100644 index 0000000..a00899b Binary files /dev/null and b/report/fig/vbn_dc.pdf differ -- cgit v1.2.3-54-g00ecf From 863948a0a6ebd4233e634b0eb0dd03727e0bc61b Mon Sep 17 00:00:00 2001 From: nunzip Date: Thu, 7 Mar 2019 21:20:26 +0000 Subject: playing with dropout --- report/fig/dcgan_dropout01.png | Bin 0 -> 56728 bytes report/fig/dcgan_dropout01_gd.png | Bin 0 -> 21547 bytes report/fig/dcgan_dropout05.png | Bin 0 -> 51813 bytes report/fig/dcgan_dropout05_gd.png | Bin 0 -> 25444 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 report/fig/dcgan_dropout01.png create mode 100644 report/fig/dcgan_dropout01_gd.png create mode 100644 report/fig/dcgan_dropout05.png create mode 100644 report/fig/dcgan_dropout05_gd.png (limited to 'report/fig') diff --git a/report/fig/dcgan_dropout01.png b/report/fig/dcgan_dropout01.png new file mode 100644 index 0000000..bc2d7f3 Binary files /dev/null and b/report/fig/dcgan_dropout01.png differ diff --git a/report/fig/dcgan_dropout01_gd.png b/report/fig/dcgan_dropout01_gd.png new file mode 100644 index 0000000..37914ff Binary files /dev/null and b/report/fig/dcgan_dropout01_gd.png differ diff --git a/report/fig/dcgan_dropout05.png b/report/fig/dcgan_dropout05.png new file mode 100644 index 0000000..a93e5aa Binary files /dev/null and b/report/fig/dcgan_dropout05.png differ diff --git a/report/fig/dcgan_dropout05_gd.png b/report/fig/dcgan_dropout05_gd.png new file mode 100644 index 0000000..d15ced2 Binary files /dev/null and b/report/fig/dcgan_dropout05_gd.png differ -- cgit v1.2.3-54-g00ecf From d9026b814a09348ea59bee73f09c4095c04d61cb Mon Sep 17 00:00:00 2001 From: nunzip Date: Thu, 7 Mar 2019 22:21:34 +0000 Subject: Add cgan dropout --- report/fig/cgan_dropout01.png | Bin 0 -> 19085 bytes report/fig/cgan_dropout01_ex.png | Bin 0 -> 14640 bytes report/fig/cgan_dropout05.png | Bin 0 -> 20612 bytes report/fig/cgan_dropout05_ex.png | Bin 0 -> 14018 bytes report/paper.md | 109 +++++++++++++++++++++++++-------------- 5 files changed, 71 insertions(+), 38 deletions(-) create mode 100644 report/fig/cgan_dropout01.png create mode 100644 report/fig/cgan_dropout01_ex.png create mode 100644 report/fig/cgan_dropout05.png create mode 100644 report/fig/cgan_dropout05_ex.png (limited to 'report/fig') diff --git a/report/fig/cgan_dropout01.png b/report/fig/cgan_dropout01.png new file mode 100644 index 0000000..450deaf Binary files /dev/null and b/report/fig/cgan_dropout01.png differ diff --git a/report/fig/cgan_dropout01_ex.png b/report/fig/cgan_dropout01_ex.png new file mode 100644 index 0000000..2bbf777 Binary files /dev/null and b/report/fig/cgan_dropout01_ex.png differ diff --git a/report/fig/cgan_dropout05.png b/report/fig/cgan_dropout05.png new file mode 100644 index 0000000..0fe282f Binary files /dev/null and b/report/fig/cgan_dropout05.png differ diff --git a/report/fig/cgan_dropout05_ex.png b/report/fig/cgan_dropout05_ex.png new file mode 100644 index 0000000..b9f83fd Binary files /dev/null and b/report/fig/cgan_dropout05_ex.png differ diff --git a/report/paper.md b/report/paper.md index 02a689b..7a26e55 100644 --- a/report/paper.md +++ b/report/paper.md @@ -7,29 +7,11 @@ Generative Adversarial Networks present a system of models which learn to output GAN's employ two neural networks - a *discriminator* and a *generator* which contest in a zero-sum game. The task of the *discriminator* is to distinguish generated images from real images, while the task of the generator is to produce realistic images which are able to fool the discriminator. -### Mode Collapse - Training a shallow GAN with no convolutional layers poses multiple problems: mode collapse and generating low quality images due to unbalanced G-D losses. Mode collapse can be observed in figure \ref{fig:mode_collapse}, after 200.000 iterations of the GAN network presented in appendix, figure \ref{fig:vanilla_gan} . The output of the generator only represents few of the labels originally fed. At that point the loss function of the generator stops improving as shown in figure \ref{fig:vanilla_loss}. We observe, the discriminator loss tentding to zero as it learns ti classify the fake 1's, while the generator is stuck producing 1's. -\begin{figure} -\begin{center} -\includegraphics[width=24em]{fig/generic_gan_loss.png} -\caption{Shallow GAN D-G Loss} -\label{fig:vanilla_loss} -\end{center} -\end{figure} - -\begin{figure} -\begin{center} -\includegraphics[width=24em]{fig/generic_gan_mode_collapse.pdf} -\caption{Shallow GAN mode collapse} -\label{fig:mode_collapse} -\end{center} -\end{figure} - A significant improvement to this vanilla architecture is Deep Convolutional Generative Adversarial Networks (DCGAN). # DCGAN @@ -64,15 +46,6 @@ We propose 3 different architectures, varying the size of convolutional layers i \item Deep: Conv512-Conv256 \end{itemize} -\begin{figure} -\begin{center} -\includegraphics[width=24em]{fig/short_dcgan_ex.pdf} -\includegraphics[width=24em]{fig/short_dcgan.png} -\caption{Shallow DCGAN} -\label{fig:dcshort} -\end{center} -\end{figure} - \begin{figure} \begin{center} \includegraphics[width=24em]{fig/med_dcgan_ex.pdf} @@ -82,15 +55,6 @@ We propose 3 different architectures, varying the size of convolutional layers i \end{center} \end{figure} -\begin{figure} -\begin{center} -\includegraphics[width=24em]{fig/long_dcgan_ex.pdf} -\includegraphics[width=24em]{fig/long_dcgan.png} -\caption{Deep DCGAN} -\label{fig:dclong} -\end{center} -\end{figure} - It is possible to notice that using deeper architectures it is possible to balance G-D losses more easilly. Medium DCGAN achieves a very good performance, balancing both binary cross entropy losses ar around 1 after 5.000 epochs, showing significantly lower oscillation for longer training even when compared to Deep DCGAN. @@ -98,7 +62,7 @@ Deep DCGAN. Since we are training with no labels, the generator will simply try to output images that fool the discriminator, but do not directly map to one specific class. Examples of this can be observed for all the output groups reported above as some of the shapes look very odd (but smooth enough to be labelled as real). This specific issue is solved by training the network for more epochs or introducing a deeper architecture, as it can be deducted from a qualitative comparison -between figures \ref{fig:dcshort}, \ref{fig:dcmed} and \ref{fig:dclong}. +between figures \ref{fig:dcmed}, \ref{fig:dcshort} and \ref{fig:dclong}. Applying Virtual Batch Normalization on Medium DCGAN does not provide observable changes in G-D balancing, but reduces within-batch correlation. Although it is difficult to qualitatively assess the improvements, figure \ref{fig:vbn_dc} shows results of the introduction of this technique. @@ -111,7 +75,7 @@ is difficult to qualitatively assess the improvements, figure \ref{fig:vbn_dc} s \end{center} \end{figure} -We evaluated the effect of different dropout rates (results in appendix, figures \ref{dcdrop1_1}, \ref{dcdrop1_2}, \ref{dcdrop2_1}, \ref{dcdrop2_2}) and concluded that the optimization +We evaluated the effect of different dropout rates (results in appendix, figures \ref{fig:dcdrop1_1}, \ref{fig:dcdrop1_2}, \ref{fig:dcdrop2_1}, \ref{fig:dcdrop2_2}) and concluded that the optimization of this parameter is essential to obtain good performance: a high dropout rate would result in DCGAN producing only artifacts that do not really match any specific class due to the generator performing better than the discriminator. Conversely a low dropout rate would lead to an initial stabilisation of G-D losses, but it would result into oscillation when training for a large number of epochs. While training the different proposed DCGAN architectures, we did not observe mode collapse, confirming that the architecture used performed better than @@ -128,6 +92,8 @@ smoothing**, **virtual batch normalization**, balancing G and D. Please perform qualitative analyses on the generated images, and discuss, with results, what challenge and how they are specifically addressing. Is there the **mode collapse issue?** +The effect of dropout for the non-convolutional CGAN architecture does not affect performance as much as in DCGAN, as the images produced, together with the G-D loss remain almost unchanged. Results are presented in figures \ref{fig:cg_drop1_1}, \ref{fig:cg_drop1_2}, \ref{fig:cg_drop2_1}, \ref{fig:cg_drop2_2}. + # Inception Score @@ -223,6 +189,22 @@ architecture and loss function? \end{center} \end{figure} +\begin{figure} +\begin{center} +\includegraphics[width=24em]{fig/generic_gan_loss.png} +\caption{Shallow GAN D-G Loss} +\label{fig:vanilla_loss} +\end{center} +\end{figure} + +\begin{figure} +\begin{center} +\includegraphics[width=24em]{fig/generic_gan_mode_collapse.pdf} +\caption{Shallow GAN mode collapse} +\label{fig:mode_collapse} +\end{center} +\end{figure} + \begin{figure} \begin{center} \includegraphics[width=24em]{fig/dcgan_dropout01_gd.png} @@ -254,3 +236,54 @@ architecture and loss function? \label{fig:dcdrop2_2} \end{center} \end{figure} + +\begin{figure} +\begin{center} +\includegraphics[width=24em]{fig/short_dcgan_ex.pdf} +\includegraphics[width=24em]{fig/short_dcgan.png} +\caption{Shallow DCGAN} +\label{fig:dcshort} +\end{center} +\end{figure} + +\begin{figure} +\begin{center} +\includegraphics[width=24em]{fig/long_dcgan_ex.pdf} +\includegraphics[width=24em]{fig/long_dcgan.png} +\caption{Deep DCGAN} +\label{fig:dclong} +\end{center} +\end{figure} + +\begin{figure} +\begin{center} +\includegraphics[width=24em]{fig/cgan_dropout01.png} +\caption{CGAN Dropout 0.1 G-D Losses} +\label{fig:cg_drop1_1} +\end{center} +\end{figure} + +\begin{figure} +\begin{center} +\includegraphics[width=14em]{fig/cgan_dropout01_ex.png} +\caption{CGAN Dropout 0.1 Generated Images} +\label{fig:cg_drop1_2} +\end{center} +\end{figure} + +\begin{figure} +\begin{center} +\includegraphics[width=24em]{fig/cgan_dropout05.png} +\caption{CGAN Dropout 0.5 G-D Losses} +\label{fig:cg_drop2_1} +\end{center} +\end{figure} + +\begin{figure} +\begin{center} +\includegraphics[width=14em]{fig/cgan_dropout05_ex.png} +\caption{CGAN Dropout 0.5 Generated Images} +\label{fig:cg_drop2_2} +\end{center} +\end{figure} + -- cgit v1.2.3-54-g00ecf From 0825e9d67aeba32ce64aaedf52407040760ef192 Mon Sep 17 00:00:00 2001 From: nunzip Date: Thu, 7 Mar 2019 23:59:43 +0000 Subject: Add figures --- report/fig/CDCGAN_arch.pdf | Bin 0 -> 396186 bytes report/fig/cgan_long.png | Bin 23641 -> 0 bytes report/fig/cgan_long_ex.pdf | Bin 217767 -> 0 bytes report/fig/cgan_med.png | Bin 19123 -> 0 bytes report/fig/cgan_med_ex.pdf | Bin 217722 -> 0 bytes report/fig/cgan_short.png | Bin 26839 -> 0 bytes report/fig/cgan_short_ex.pdf | Bin 215426 -> 0 bytes report/fig/error_depth_kmean100.pdf | Bin 14275 -> 0 bytes report/fig/long_cgan.png | Bin 0 -> 23641 bytes report/fig/long_cgan_ex.pdf | Bin 0 -> 217767 bytes report/fig/med_cgan.png | Bin 0 -> 19123 bytes report/fig/med_cgan_ex.pdf | Bin 0 -> 217722 bytes report/fig/mix_zoom.png | Bin 23623 -> 23682 bytes report/fig/short_cgan.png | Bin 0 -> 26839 bytes report/fig/short_cgan_ex.pdf | Bin 0 -> 215426 bytes 15 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 report/fig/CDCGAN_arch.pdf delete mode 100644 report/fig/cgan_long.png delete mode 100644 report/fig/cgan_long_ex.pdf delete mode 100644 report/fig/cgan_med.png delete mode 100644 report/fig/cgan_med_ex.pdf delete mode 100644 report/fig/cgan_short.png delete mode 100644 report/fig/cgan_short_ex.pdf delete mode 100644 report/fig/error_depth_kmean100.pdf create mode 100644 report/fig/long_cgan.png create mode 100644 report/fig/long_cgan_ex.pdf create mode 100644 report/fig/med_cgan.png create mode 100644 report/fig/med_cgan_ex.pdf create mode 100644 report/fig/short_cgan.png create mode 100644 report/fig/short_cgan_ex.pdf (limited to 'report/fig') diff --git a/report/fig/CDCGAN_arch.pdf b/report/fig/CDCGAN_arch.pdf new file mode 100644 index 0000000..e01656a Binary files /dev/null and b/report/fig/CDCGAN_arch.pdf differ diff --git a/report/fig/cgan_long.png b/report/fig/cgan_long.png deleted file mode 100644 index 6b80387..0000000 Binary files a/report/fig/cgan_long.png and /dev/null differ diff --git a/report/fig/cgan_long_ex.pdf b/report/fig/cgan_long_ex.pdf deleted file mode 100644 index b40a96c..0000000 Binary files a/report/fig/cgan_long_ex.pdf and /dev/null differ diff --git a/report/fig/cgan_med.png b/report/fig/cgan_med.png deleted file mode 100644 index b42bf7b..0000000 Binary files a/report/fig/cgan_med.png and /dev/null differ diff --git a/report/fig/cgan_med_ex.pdf b/report/fig/cgan_med_ex.pdf deleted file mode 100644 index 9f52115..0000000 Binary files a/report/fig/cgan_med_ex.pdf and /dev/null differ diff --git a/report/fig/cgan_short.png b/report/fig/cgan_short.png deleted file mode 100644 index 2ddb5cd..0000000 Binary files a/report/fig/cgan_short.png and /dev/null differ diff --git a/report/fig/cgan_short_ex.pdf b/report/fig/cgan_short_ex.pdf deleted file mode 100644 index 8d451d4..0000000 Binary files a/report/fig/cgan_short_ex.pdf and /dev/null differ diff --git a/report/fig/error_depth_kmean100.pdf b/report/fig/error_depth_kmean100.pdf deleted file mode 100644 index 85fffdc..0000000 Binary files a/report/fig/error_depth_kmean100.pdf and /dev/null differ diff --git a/report/fig/long_cgan.png b/report/fig/long_cgan.png new file mode 100644 index 0000000..6b80387 Binary files /dev/null and b/report/fig/long_cgan.png differ diff --git a/report/fig/long_cgan_ex.pdf b/report/fig/long_cgan_ex.pdf new file mode 100644 index 0000000..b40a96c Binary files /dev/null and b/report/fig/long_cgan_ex.pdf differ diff --git a/report/fig/med_cgan.png b/report/fig/med_cgan.png new file mode 100644 index 0000000..b42bf7b Binary files /dev/null and b/report/fig/med_cgan.png differ diff --git a/report/fig/med_cgan_ex.pdf b/report/fig/med_cgan_ex.pdf new file mode 100644 index 0000000..9f52115 Binary files /dev/null and b/report/fig/med_cgan_ex.pdf differ diff --git a/report/fig/mix_zoom.png b/report/fig/mix_zoom.png index 0e40cab..b88ce7d 100644 Binary files a/report/fig/mix_zoom.png and b/report/fig/mix_zoom.png differ diff --git a/report/fig/short_cgan.png b/report/fig/short_cgan.png new file mode 100644 index 0000000..2ddb5cd Binary files /dev/null and b/report/fig/short_cgan.png differ diff --git a/report/fig/short_cgan_ex.pdf b/report/fig/short_cgan_ex.pdf new file mode 100644 index 0000000..8d451d4 Binary files /dev/null and b/report/fig/short_cgan_ex.pdf differ -- cgit v1.2.3-54-g00ecf From 434679320585d08733246dc83eb7844d9b386d90 Mon Sep 17 00:00:00 2001 From: nunzip Date: Sun, 10 Mar 2019 13:11:03 +0000 Subject: Write part 4 and add figures --- report/fig/added_generated_data.png | Bin 0 -> 21511 bytes report/fig/fake_only.png | Bin 0 -> 14446 bytes report/fig/fine_tuning.png | Bin 0 -> 17374 bytes report/fig/initialization.png | Bin 0 -> 18564 bytes report/fig/retrain_fail.png | Bin 0 -> 12925 bytes report/fig/train_few_real.png | Bin 0 -> 16790 bytes report/fig/training_mixed.png | Bin 0 -> 15373 bytes report/paper.md | 75 +++++++++++++++++++++++++++--------- 8 files changed, 56 insertions(+), 19 deletions(-) create mode 100644 report/fig/added_generated_data.png create mode 100644 report/fig/fake_only.png create mode 100644 report/fig/fine_tuning.png create mode 100644 report/fig/initialization.png create mode 100644 report/fig/retrain_fail.png create mode 100644 report/fig/train_few_real.png create mode 100644 report/fig/training_mixed.png (limited to 'report/fig') diff --git a/report/fig/added_generated_data.png b/report/fig/added_generated_data.png new file mode 100644 index 0000000..37c3e1e Binary files /dev/null and b/report/fig/added_generated_data.png differ diff --git a/report/fig/fake_only.png b/report/fig/fake_only.png new file mode 100644 index 0000000..27ceba1 Binary files /dev/null and b/report/fig/fake_only.png differ diff --git a/report/fig/fine_tuning.png b/report/fig/fine_tuning.png new file mode 100644 index 0000000..98caa69 Binary files /dev/null and b/report/fig/fine_tuning.png differ diff --git a/report/fig/initialization.png b/report/fig/initialization.png new file mode 100644 index 0000000..79b2f07 Binary files /dev/null and b/report/fig/initialization.png differ diff --git a/report/fig/retrain_fail.png b/report/fig/retrain_fail.png new file mode 100644 index 0000000..2a71fd4 Binary files /dev/null and b/report/fig/retrain_fail.png differ diff --git a/report/fig/train_few_real.png b/report/fig/train_few_real.png new file mode 100644 index 0000000..5a1f940 Binary files /dev/null and b/report/fig/train_few_real.png differ diff --git a/report/fig/training_mixed.png b/report/fig/training_mixed.png new file mode 100644 index 0000000..868cbf1 Binary files /dev/null and b/report/fig/training_mixed.png differ diff --git a/report/paper.md b/report/paper.md index 984debf..81be991 100644 --- a/report/paper.md +++ b/report/paper.md @@ -176,40 +176,62 @@ of the real training and synthetic images, e.g. 10%, 20%, 50%, and 100%, of each \begin{figure} \begin{center} -\includegraphics[width=24em]{fig/mix.png} -\caption{Mix training} +\includegraphics[width=12em]{fig/mix_zoom.png} +\includegraphics[width=12em]{fig/added_generated_data.png} +\caption{Mix data, left unchanged samples number, right added samples} \label{fig:mix1} \end{center} \end{figure} +## Adapted Training Strategy + +For this section we will use 550 samples from MNIST (55 samples per class). Training the classifier +yelds major challanges, since the amount of samples aailable for training is relatively small. + +Training for 100 epochs, similarly to the previous section, is clearly not enough. The MNIST test set accuracy reached in this case +is only 62%, while training for 300 epochs we can reach up to 88%. The learning curve in figure \ref{fig:few_real} suggests +we cannot achieve much better whith this very small amount of data, since the validation accuracy flattens, while the training accuracy +almost reaches 100%. + \begin{figure} \begin{center} -\includegraphics[width=24em]{fig/mix_zoom.png} -\caption{Mix training zoom} -\label{fig:mix2} +\includegraphics[width=24em]{fig/train_few_real.png} +\caption{Training with few real samples} +\label{fig:few_real} \end{center} \end{figure} +We conduct one experiment, feeding the test set to a L2-Net trained exclusively on data generated from our CGAN. It is noticeable that training +for the first 5 epochs gives good results (figure \ref{fig:fake_only}) when compared to the learning curve obtained while training the network ith only the few real samples. This +indicates that we can use the generated data to train the first steps of the network (initial weights) and apply the real sample for 300 epochs to obtain +a finer tuning. As observed in figure \ref{fig:few_init} the first steps of retraining will show oscillation, since the fine tuning will try and adapt to the newly fed data. The maximum accuracy reached before the validation curve plateaus is 88.6%, indicating that this strategy proved to be somewhat successfull at +improving testing accuracy. + \begin{figure} \begin{center} -\includegraphics[width=24em]{fig/mix_scores.png} -\caption{Mix training scores} -\label{fig:mix3} +\includegraphics[width=24em]{fig/initialization.png} +\caption{Retraining with initialization from generated samples} +\label{fig:few_init} \end{center} \end{figure} -## Adapted Training Strategy -*Using even a small number of real samples per class would already give a high recognition rate, -which is difficult to improve. Use few real samples per class, and, plenty generated images in a -good quality and see if the testing accuracy can be improved or not, over the model trained using -the few real samples only. -Did you have to change the strategy in training the classification network in order to improve the -testing accuracy? For example, use synthetic data to initialise the network parameters followed -by fine tuning the parameters with real data set. Or using realistic synthetic data based on the -confidence score from the classification network pre-trained on real data. If yes, please then -specify your training strategy in details. -Analyse and discuss the outcome of the experimental result.* +We try to improve the results obtained earlier by retraining L2-Net with mixed data: few real samples and plenty of generated samples (160.000) +(learning curve show in figure \ref{fig:training_mixed}. The peak accuracy reached is 91%. We then try to remove the generated +samples to apply fine tuning, using only the real samples. After 300 more epochs (figure \ref{fig:training_mixed}) the test accuracy is +boosted to 92%, making this technique the most successfull attempt of improvement while using a limited amount of data from MNIST dataset. + +\begin{figure} +\begin{center} +\includegraphics[width=12em]{fig/training_mixed.png} +\includegraphics[width=12em]{fig/fine_tuning.png} +\caption{Retraining; Mixed initialization left, fine tuning right} +\label{fig:training_mixed} +\end{center} +\end{figure} + +Failures classification examples are displayed in figure \ref{fig:retrain_fail}. The results showed indicate that the network we trained is actually performing quite well, +as most of the testing images that got misclassified (mainly nines and fours) show ambiguities. # Bonus @@ -369,3 +391,18 @@ architecture and loss function? \end{center} \end{figure} +\begin{figure} +\begin{center} +\includegraphics[width=24em]{fig/fake_only.png} +\caption{Retraining with generated samples only} +\label{fig:fake_only} +\end{center} +\end{figure} + +\begin{figure} +\begin{center} +\includegraphics[width=12em]{fig/retrain_fail.png} +\caption{Retraining failures} +\label{fig:retrain_fail} +\end{center} +\end{figure} -- cgit v1.2.3-54-g00ecf From d5e414f34e968fe18ff287591b7dbffec910314b Mon Sep 17 00:00:00 2001 From: Vasil Zlatanov Date: Sun, 10 Mar 2019 19:47:21 +0000 Subject: Add graphs --- report/fig/pca-cgan.png | Bin 0 -> 75567 bytes report/fig/pca-mnist.png | Bin 0 -> 87987 bytes report/fig/pr-cgan.png | Bin 0 -> 85915 bytes report/fig/pr-mnist.png | Bin 0 -> 57527 bytes report/fig/roc-cgan.png | Bin 0 -> 66027 bytes report/fig/roc-mnist.png | Bin 0 -> 59831 bytes report/fig/tsne-cgan.png | Bin 0 -> 74685 bytes report/fig/tsne-mnist.png | Bin 0 -> 76293 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 report/fig/pca-cgan.png create mode 100644 report/fig/pca-mnist.png create mode 100644 report/fig/pr-cgan.png create mode 100644 report/fig/pr-mnist.png create mode 100644 report/fig/roc-cgan.png create mode 100644 report/fig/roc-mnist.png create mode 100644 report/fig/tsne-cgan.png create mode 100644 report/fig/tsne-mnist.png (limited to 'report/fig') diff --git a/report/fig/pca-cgan.png b/report/fig/pca-cgan.png new file mode 100644 index 0000000..da5ffb1 Binary files /dev/null and b/report/fig/pca-cgan.png differ diff --git a/report/fig/pca-mnist.png b/report/fig/pca-mnist.png new file mode 100644 index 0000000..9ae845c Binary files /dev/null and b/report/fig/pca-mnist.png differ diff --git a/report/fig/pr-cgan.png b/report/fig/pr-cgan.png new file mode 100644 index 0000000..8a89185 Binary files /dev/null and b/report/fig/pr-cgan.png differ diff --git a/report/fig/pr-mnist.png b/report/fig/pr-mnist.png new file mode 100644 index 0000000..980c756 Binary files /dev/null and b/report/fig/pr-mnist.png differ diff --git a/report/fig/roc-cgan.png b/report/fig/roc-cgan.png new file mode 100644 index 0000000..2db40a9 Binary files /dev/null and b/report/fig/roc-cgan.png differ diff --git a/report/fig/roc-mnist.png b/report/fig/roc-mnist.png new file mode 100644 index 0000000..2980d52 Binary files /dev/null and b/report/fig/roc-mnist.png differ diff --git a/report/fig/tsne-cgan.png b/report/fig/tsne-cgan.png new file mode 100644 index 0000000..cf01bdf Binary files /dev/null and b/report/fig/tsne-cgan.png differ diff --git a/report/fig/tsne-mnist.png b/report/fig/tsne-mnist.png new file mode 100644 index 0000000..9059fb5 Binary files /dev/null and b/report/fig/tsne-mnist.png differ -- cgit v1.2.3-54-g00ecf From 06310df0389921e20ce194370344e4f12828049b Mon Sep 17 00:00:00 2001 From: nunzip Date: Wed, 13 Mar 2019 13:04:41 +0000 Subject: Fix epoch/batch --- report/fig/cgan_dropout01.png | Bin 19085 -> 18171 bytes report/fig/cgan_dropout05.png | Bin 20612 -> 19569 bytes report/fig/dcgan_dropout01_gd.png | Bin 21547 -> 20802 bytes report/fig/dcgan_dropout05_gd.png | Bin 25444 -> 24782 bytes report/fig/generic_gan_loss.png | Bin 32275 -> 28806 bytes report/fig/long_cgan.png | Bin 23641 -> 22301 bytes report/fig/long_cgan_ex.png | Bin 0 -> 90457 bytes report/fig/long_dcgan.png | Bin 18557 -> 17753 bytes report/fig/long_dcgan_ex.png | Bin 0 -> 142641 bytes report/fig/med_cgan.png | Bin 19123 -> 18352 bytes report/fig/med_cgan_ex.png | Bin 0 -> 84936 bytes report/fig/med_dcgan.png | Bin 18041 -> 17503 bytes report/fig/med_dcgan_ex.png | Bin 0 -> 186851 bytes report/fig/short_cgan.png | Bin 26839 -> 24681 bytes report/fig/short_cgan_ex.png | Bin 0 -> 79789 bytes report/fig/short_dcgan.png | Bin 22431 -> 20998 bytes report/fig/short_dcgan_ex.png | Bin 0 -> 158578 bytes report/fig/smoothing.png | Bin 18734 -> 17544 bytes report/fig/smoothing_ex.png | Bin 0 -> 96210 bytes report/paper.md | 22 +++++++++++----------- 20 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 report/fig/long_cgan_ex.png create mode 100644 report/fig/long_dcgan_ex.png create mode 100644 report/fig/med_cgan_ex.png create mode 100644 report/fig/med_dcgan_ex.png create mode 100644 report/fig/short_cgan_ex.png create mode 100644 report/fig/short_dcgan_ex.png create mode 100644 report/fig/smoothing_ex.png (limited to 'report/fig') diff --git a/report/fig/cgan_dropout01.png b/report/fig/cgan_dropout01.png index 450deaf..4c97618 100644 Binary files a/report/fig/cgan_dropout01.png and b/report/fig/cgan_dropout01.png differ diff --git a/report/fig/cgan_dropout05.png b/report/fig/cgan_dropout05.png index 0fe282f..a0baff0 100644 Binary files a/report/fig/cgan_dropout05.png and b/report/fig/cgan_dropout05.png differ diff --git a/report/fig/dcgan_dropout01_gd.png b/report/fig/dcgan_dropout01_gd.png index 37914ff..d20f9bf 100644 Binary files a/report/fig/dcgan_dropout01_gd.png and b/report/fig/dcgan_dropout01_gd.png differ diff --git a/report/fig/dcgan_dropout05_gd.png b/report/fig/dcgan_dropout05_gd.png index d15ced2..29137b8 100644 Binary files a/report/fig/dcgan_dropout05_gd.png and b/report/fig/dcgan_dropout05_gd.png differ diff --git a/report/fig/generic_gan_loss.png b/report/fig/generic_gan_loss.png index 701b191..42716dd 100644 Binary files a/report/fig/generic_gan_loss.png and b/report/fig/generic_gan_loss.png differ diff --git a/report/fig/long_cgan.png b/report/fig/long_cgan.png index 6b80387..55ce4f8 100644 Binary files a/report/fig/long_cgan.png and b/report/fig/long_cgan.png differ diff --git a/report/fig/long_cgan_ex.png b/report/fig/long_cgan_ex.png new file mode 100644 index 0000000..053d06c Binary files /dev/null and b/report/fig/long_cgan_ex.png differ diff --git a/report/fig/long_dcgan.png b/report/fig/long_dcgan.png index 4e12495..c0cbdf9 100644 Binary files a/report/fig/long_dcgan.png and b/report/fig/long_dcgan.png differ diff --git a/report/fig/long_dcgan_ex.png b/report/fig/long_dcgan_ex.png new file mode 100644 index 0000000..2bac124 Binary files /dev/null and b/report/fig/long_dcgan_ex.png differ diff --git a/report/fig/med_cgan.png b/report/fig/med_cgan.png index b42bf7b..f7981be 100644 Binary files a/report/fig/med_cgan.png and b/report/fig/med_cgan.png differ diff --git a/report/fig/med_cgan_ex.png b/report/fig/med_cgan_ex.png new file mode 100644 index 0000000..120ad57 Binary files /dev/null and b/report/fig/med_cgan_ex.png differ diff --git a/report/fig/med_dcgan.png b/report/fig/med_dcgan.png index 9a809c9..790608b 100644 Binary files a/report/fig/med_dcgan.png and b/report/fig/med_dcgan.png differ diff --git a/report/fig/med_dcgan_ex.png b/report/fig/med_dcgan_ex.png new file mode 100644 index 0000000..9d7af5d Binary files /dev/null and b/report/fig/med_dcgan_ex.png differ diff --git a/report/fig/short_cgan.png b/report/fig/short_cgan.png index 2ddb5cd..4ff9c90 100644 Binary files a/report/fig/short_cgan.png and b/report/fig/short_cgan.png differ diff --git a/report/fig/short_cgan_ex.png b/report/fig/short_cgan_ex.png new file mode 100644 index 0000000..5097d80 Binary files /dev/null and b/report/fig/short_cgan_ex.png differ diff --git a/report/fig/short_dcgan.png b/report/fig/short_dcgan.png index ea8199b..d7c3326 100644 Binary files a/report/fig/short_dcgan.png and b/report/fig/short_dcgan.png differ diff --git a/report/fig/short_dcgan_ex.png b/report/fig/short_dcgan_ex.png new file mode 100644 index 0000000..56a2462 Binary files /dev/null and b/report/fig/short_dcgan_ex.png differ diff --git a/report/fig/smoothing.png b/report/fig/smoothing.png index 86de8e8..3e09cf6 100644 Binary files a/report/fig/smoothing.png and b/report/fig/smoothing.png differ diff --git a/report/fig/smoothing_ex.png b/report/fig/smoothing_ex.png new file mode 100644 index 0000000..6bddcbc Binary files /dev/null and b/report/fig/smoothing_ex.png differ diff --git a/report/paper.md b/report/paper.md index 1989472..364e6a5 100644 --- a/report/paper.md +++ b/report/paper.md @@ -19,7 +19,7 @@ Training a shallow GAN with no convolutional layers poses problems such as mode \end{figure} -Mode collapse is achieved with our naive *vanilla GAN* (Appendix-\ref{fig:vanilla_gan}) implementation after 200,000 epochs. The generated images observed during a mode collapse can be seen on figure \ref{fig:mode_collapse}. The output of the generator only represents few of the labels originally fed. When mode collapse is reached loss function of the generator stops improving as shown in figure \ref{fig:vanilla_loss}. We observe, the discriminator loss tends to zero as the discriminator learns to assume and classify the fake 1's, while the generator is stuck producing 1 and hence not able to improve. +Mode collapse is achieved with our naive *vanilla GAN* (Appendix-\ref{fig:vanilla_gan}) implementation after 200,000 batches. The generated images observed during a mode collapse can be seen on figure \ref{fig:mode_collapse}. The output of the generator only represents few of the labels originally fed. When mode collapse is reached loss function of the generator stops improving as shown in figure \ref{fig:vanilla_loss}. We observe, the discriminator loss tends to zero as the discriminator learns to assume and classify the fake 1's, while the generator is stuck producing 1 and hence not able to improve. A significant improvement to this vanilla architecture is Deep Convolutional Generative Adversarial Networks (DCGAN). @@ -54,7 +54,7 @@ We evaluate three different GAN architectures, varying the size of convolutional \begin{figure} \begin{center} -\includegraphics[width=24em]{fig/med_dcgan_ex.pdf} +\includegraphics[width=24em]{fig/med_dcgan_ex.png} \includegraphics[width=24em]{fig/med_dcgan.png} \caption{Medium DCGAN} \label{fig:dcmed} @@ -62,9 +62,9 @@ We evaluate three different GAN architectures, varying the size of convolutional \end{figure} We observed that the deep architectures result in a more easily achievable equilibria of G-D losses. -Our medium depth DCGAN achieves very good performance, balancing both binary cross entropy losses at approximately 0.9 after 5.000 epochs, reaching equilibrium quicker and with less oscillation that the Deepest DCGAN tested. +Our medium depth DCGAN achieves very good performance, balancing both binary cross entropy losses at approximately 0.9 after 5.000 batches, reaching equilibrium quicker and with less oscillation that the Deepest DCGAN tested. -As DCGAN is trained with no labels, the generator primary objective is to output images that fool the discriminator, but does not intrinsically separate the classes form one another. Therefore we sometimes observe oddly shape fused digits which may temporarily full be labeled real by the discriminator. This issue is solved by training the network for more epochs or introducing a deeper architecture, as it can be deducted from a qualitative comparison +As DCGAN is trained with no labels, the generator primary objective is to output images that fool the discriminator, but does not intrinsically separate the classes form one another. Therefore we sometimes observe oddly shape fused digits which may temporarily full be labeled real by the discriminator. This issue is solved by training the network for more batches or introducing a deeper architecture, as it can be deducted from a qualitative comparison between figures \ref{fig:dcmed}, \ref{fig:dcshort} and \ref{fig:dclong}. Applying Virtual Batch Normalization our Medium DCGAN does not provide observable changes in G-D balancing, but reduces within-batch correlation. Although it is difficult to qualitatively assess the improvements, figure \ref{fig:vbn_dc} shows results of the introduction of this technique. @@ -78,7 +78,7 @@ Applying Virtual Batch Normalization our Medium DCGAN does not provide observabl \end{figure} We evaluated the effect of different dropout rates (results in appendix figures \ref{fig:dcdrop1_1}, \ref{fig:dcdrop1_2}, \ref{fig:dcdrop2_1}, \ref{fig:dcdrop2_2}) and concluded that the optimisation -of the droupout hyper-parameter is essential for maximising performance. A high dropout rate results in DCGAN producing only artifacts that do not match any specific class due to the generator performing better than the discriminator. Conversely a low dropout rate leads to an initial stabilisation of G-D losses, but ultimately results in instability under the form of oscillation when training for a large number of epochs. +of the droupout hyper-parameter is essential for maximising performance. A high dropout rate results in DCGAN producing only artifacts that do not match any specific class due to the generator performing better than the discriminator. Conversely a low dropout rate leads to an initial stabilisation of G-D losses, but ultimately results in instability under the form of oscillation when training for a large number of batches. While training the different proposed DCGAN architectures, we did not observe mode collapse, indicating the DCGAN is less prone to a collapse compared to our *vanilla GAN*. @@ -117,7 +117,7 @@ We evaluate permutations of the architecture involving: \begin{figure} \begin{center} -\includegraphics[width=24em]{fig/med_cgan_ex.pdf} +\includegraphics[width=24em]{fig/med_cgan_ex.png} \includegraphics[width=24em]{fig/med_cgan.png} \caption{Medium CGAN} \label{fig:cmed} @@ -162,7 +162,7 @@ We observe increased accruacy as we increase the depth of the arhitecture at the \begin{figure} \begin{center} -\includegraphics[width=24em]{fig/smoothing_ex.pdf} +\includegraphics[width=24em]{fig/smoothing_ex.png} \includegraphics[width=24em]{fig/smoothing.png} \caption{One sided label smoothing} \label{fig:smooth} @@ -329,7 +329,7 @@ $$ L_{\textrm{total}} = \alpha L_{\textrm{LeNet}} + \beta L_{\textrm{generator}} \begin{figure} \begin{center} -\includegraphics[width=24em]{fig/short_dcgan_ex.pdf} +\includegraphics[width=24em]{fig/short_dcgan_ex.png} \includegraphics[width=24em]{fig/short_dcgan.png} \caption{Shallow DCGAN} \label{fig:dcshort} @@ -338,7 +338,7 @@ $$ L_{\textrm{total}} = \alpha L_{\textrm{LeNet}} + \beta L_{\textrm{generator}} \begin{figure} \begin{center} -\includegraphics[width=24em]{fig/long_dcgan_ex.pdf} +\includegraphics[width=24em]{fig/long_dcgan_ex.png} \includegraphics[width=24em]{fig/long_dcgan.png} \caption{Deep DCGAN} \label{fig:dclong} @@ -379,7 +379,7 @@ $$ L_{\textrm{total}} = \alpha L_{\textrm{LeNet}} + \beta L_{\textrm{generator}} \begin{figure} \begin{center} -\includegraphics[width=24em]{fig/short_cgan_ex.pdf} +\includegraphics[width=24em]{fig/short_cgan_ex.png} \includegraphics[width=24em]{fig/short_cgan.png} \caption{Shallow CGAN} \label{fig:cshort} @@ -388,7 +388,7 @@ $$ L_{\textrm{total}} = \alpha L_{\textrm{LeNet}} + \beta L_{\textrm{generator}} \begin{figure} \begin{center} -\includegraphics[width=24em]{fig/long_cgan_ex.pdf} +\includegraphics[width=24em]{fig/long_cgan_ex.png} \includegraphics[width=24em]{fig/long_cgan.png} \caption{Deep CGAN} \label{fig:clong} -- cgit v1.2.3-54-g00ecf From eaa279aa9a2732e967f503ecca6008a4e12329cf Mon Sep 17 00:00:00 2001 From: nunzip Date: Wed, 13 Mar 2019 15:14:12 +0000 Subject: Write more about CGAN and add figures --- report/fig/bad_ex.png | Bin 0 -> 15772 bytes report/fig/cdcgan.png | Bin 0 -> 26406 bytes report/fig/good_ex.png | Bin 0 -> 14206 bytes report/paper.md | 90 ++++++++++++++++++++++++++----------------------- 4 files changed, 48 insertions(+), 42 deletions(-) create mode 100644 report/fig/bad_ex.png create mode 100644 report/fig/cdcgan.png create mode 100644 report/fig/good_ex.png (limited to 'report/fig') diff --git a/report/fig/bad_ex.png b/report/fig/bad_ex.png new file mode 100644 index 0000000..bdc899e Binary files /dev/null and b/report/fig/bad_ex.png differ diff --git a/report/fig/cdcgan.png b/report/fig/cdcgan.png new file mode 100644 index 0000000..179e9a4 Binary files /dev/null and b/report/fig/cdcgan.png differ diff --git a/report/fig/good_ex.png b/report/fig/good_ex.png new file mode 100644 index 0000000..43bb567 Binary files /dev/null and b/report/fig/good_ex.png differ diff --git a/report/paper.md b/report/paper.md index 03fad67..2a14059 100644 --- a/report/paper.md +++ b/report/paper.md @@ -86,18 +86,19 @@ While training the different proposed DCGAN architectures, we did not observe mo ## CGAN Architecture description -CGAN is a conditional version of a GAN which utilises labeled data. Unlike DCGAN, CGAN is trained with explicitly provided labels which allow CGAN to associate features with specific labels. This has the intrinsic advantage of allowing us to specify the label of generated data. The baseline CGAN which we evaluate is visible in figure \ref{fig:cganrc}. The baseline CGAN arhitecture presents a series blocks each contained a dense layer, LeakyReLu layer and a Batch Normalisation layer. The baseline discriminator uses Dense layers, followed by LeakyReLu and a Droupout layer. +CGAN is a conditional version of a GAN which utilises labeled data. Unlike DCGAN, CGAN is trained with explicitly provided labels which allow CGAN to associate features with specific labels. This has the intrinsic advantage of allowing us to specify the label of generated data. The baseline CGAN which we evaluate is visible in figure \ref{fig:cganarc}. The baseline CGAN arhitecture presents a series blocks each contained a dense layer, LeakyReLu layer (slope=0.2) and a Batch Normalisation layer. The baseline discriminator uses Dense layers, followed by LeakyReLu (slope=0.2) and a Droupout layer. +The optimizer used for training is `Adam`(`learning_rate=0.002`, `beta=0.5`). -The Convolutional CGAN analysed follows a structure similar to DCGAN and is presented in figure \ref{}. +The Convolutional CGAN analysed follows a structure similar to DCGAN and is presented in figure \ref{fig:cdcganarc}. We evaluate permutations of the architecture involving: -* Shallow CGAN - 1 Dense-ReLu-BN block -* Deep CGAN - 5 Dense-ReLu-BN +* Shallow CGAN - 1 Dense-LeakyReLu-BN block +* Deep CGAN - 5 Dense-LeakyReLu-BN * Deep Convolutional GAN - DCGAN + conditional label input -* Label Smoothing (One Sided) - Truth labels to 0 and $1-\alpha$ (0.9) -* Various Dropout - Use 0.1 and 0.5 Dropout parameters -* Virtual Batch Normalisation - Normalisation based on one batch [@improved] +* One-Sided Label Smoothing (LS) +* Various Dropout (DO)- Use 0.1 and 0.5 Dropout parameters +* Virtual Batch Normalisation (VBN)- Normalisation based on one batch [@improved] \begin{figure} \begin{center} @@ -107,31 +108,33 @@ We evaluate permutations of the architecture involving: \end{center} \end{figure} -\begin{figure} -\begin{center} -\includegraphics[width=24em]{fig/CDCGAN_arch.pdf} -\caption{Deep Convolutional CGAN Architecture} -\label{fig:cdcganarc} -\end{center} -\end{figure} - ## Tests on MNIST When comparing the three levels of depth for the architectures it is possible to notice significant differences for the G-D losses balancing. In -a shallow architecture we notice a high oscillation of the generator loss \ref{fig:}, which is being overpowered by the discriminator. Despite this we don't +a shallow architecture we notice a high oscillation of the generator loss (figure \ref{fig:cshort}), which is being overpowered by the discriminator. Despite this we don't experience any issues with vanishing gradient, hence no mode collapse is reached. -Similarly, with a deep architecture the discriminator still overpowers the generator, and an equilibrium between the two losses is not acheived. The image quality in both cases is not really high: we can see that even after 20000 batches the some pictures appear to be slightly blurry \ref{fig:}. +Similarly, with a deep architecture the discriminator still overpowers the generator, and an equilibrium between the two losses is not acheived. The image quality in both cases is not really high: we can see that even after 20000 batches the some pictures appear to be slightly blurry \ref{fig:clong}. +The best compromise is reached for 3 Dense-LeakyReLu-BN blocks as shown in figure \ref{fig:cmed}. It is possible to observe that G-D losses are perfectly balanced, +and their value goes below 1, meaning the GAN is approaching the theoretical Nash Equilibrium of 0.5. +The image quality is better than the two examples reported earlier, proving that this Medium-depth architecture is the best compromise. -The three levels of dropout rates attempted do not affect the performance significantly, and as we can see in figures \ref{}, \ref{} and \ref{}, both +The three levels of dropout rates attempted do not affect the performance significantly, and as we can see in figures \ref{fig:cg_drop1_1} (0.1), \ref{fig:cmed}(0.3) and \ref{fig:cg_drop2_1}(0.5), both image quality and G-D losses are comparable. The biggest improvement in performance is obtained through one-sided label smoothing, shifting the true labels form 1 to 0.9 to incentivize the discriminator. Using 0.1 instead of zero for the fake labels does not improve performance, as the discriminator loses incentive to do better. Performance results for -one-sided labels smoothing with true labels = 0.9 are shown in figure \ref{}. +one-sided labels smoothing with true labels = 0.9 are shown in figure \ref{fig:smooth}. + +Virtual Batch normalization does not affect performance significantly. Applying this technique to both the CGAN architectures used keeps G-D losses +mostly unchanged. The biggest change we expect to see is a lower correlation between images in the same batch. This aspect will mostly affect +performance when training a classifier with the generated images from CGAN, as we will obtain more diverse images. Training with a larger batch size +would show more significant results, but since we set this parameter to 128 the issue of within-batch correlation is limited. -ADD FORMULA? +Convolutional CGAN did not achieve better results than our baseline approach for the architecture analyzed, although we believe that +it is possible to achieve a better performance by finer tuning of the Convolutional CGAN parameters. Figure \ref{fig:cdcloss} shows a very high oscillation +of the generator loss, hence the image quality varies a lot at each training step. Attempting LS on this architecture achieved a similar outcome +when compared to the non-convolutional counterpart. -ADD VBN TALKING ABOUT TIME AND RESULTS \begin{figure} \begin{center} @@ -155,7 +158,7 @@ We further report the classification accuracy as found with LeNet. \begin{table}[] \begin{tabular}{llll} - & Accuracy & Inception Sc. & GAN Tr. Time \\ \hline + & Accuracy & IS & GAN Tr. Time \\ \hline Shallow CGAN & 0.645 & 3.57 & 8:14 \\ Medium CGAN & 0.715 & 3.79 & 10:23 \\ Deep CGAN & 0.739 & 3.85 & 16:27 \\ @@ -164,8 +167,8 @@ Medium CGAN+LS & 0.749 & 3.643 & 10:42 \\ Convolutional CGAN+LS & 0.601 & 2.494 & 27:36 \\ Medium CGAN DO=0.1 & 0.761 & 3.836 & 10:36 \\ Medium CGAN DO=0.5 & 0.725 & 3.677 & 10:36 \\ -Medium CGAN+VBN & 0.745 & 4.02 & 19:38 \\ -Medium CGAN+VBN+LS & 0.783 & 4.31 & 19:43 \\ +Medium CGAN+VBN & 0.735 & 3.82 & 19:38 \\ +Medium CGAN+VBN+LS & 0.763 & 3.91 & 19:43 \\ *MNIST original & 0.9846 & 9.685 & N/A \\ \hline \end{tabular} \end{table} @@ -174,7 +177,7 @@ Medium CGAN+VBN+LS & 0.783 & 4.31 & 19:43 \\ ### Architecture -We observe increased accruacy as we increase the depth of the arhitecture at the cost of the training time. There appears to be diminishing returns with the deeper networks, and larger improvements are achievable with specific optimisation techniques. +We observe increased accruacy as we increase the depth of the GAN arhitecture at the cost of the training time. There appears to be diminishing returns with the deeper networks, and larger improvements are achievable with specific optimisation techniques. ### One Side Label Smoothing @@ -275,24 +278,9 @@ as most of the testing images that got misclassified (mainly nines and fours) sh Similarly to GAN's, PCA can be used to formulate **generative** models of a system. While GAN's are trained neural networks, PCA is a definite statistical procedure which perform orthogonal transformations of the data. Both attempt to identify the most important or *variant* features of the data (which we may then use to generate new data), but PCA by itself is only able to extract linearly related features. In a purely linear system, a GAN would be converging to PCA. In a more complicated system, we would indeed to identify relevant kernels in order to extract relevant features with PCA, while a GAN is able to leverage dense and convolutional neural network layers which may be trained to perform relevant transformations. -* This is an open question. Do you have any other ideas to improve GANs or -have more insightful and comparative evaluations of GANs? Ideas are not limited. For instance, - -\begin{itemize} +## Data representation -\item How do you compare GAN with PCA? We leant PCA as another generative model in the -Pattern Recognition module (EE468/EE9SO29/EE9CS729). Strengths/weaknesses? - -\item Take the pre-trained classification network using 100% real training examples and use it -to extract the penultimate layer’s activations (embeddings) of 100 randomly sampled real -test examples and 100 randomly sampled synthetic examples from all the digits i.e. 0-9. -Use an embedding method e.g. t-sne [1] or PCA, to project them to a 2D subspace and -plot them. Explain what kind of patterns do you observe between the digits on real and -synthetic data. Also plot the distribution of confidence scores on these real and synthetic -sub-sampled examples by the classification network trained on 100% real data on two -separate graphs. Explain the trends in the graphs. - -\end{itemize} +TODO EXPLAIN WHAT WE HAVE DONE HERE \begin{figure} \centering @@ -395,6 +383,14 @@ $$ L_{\textrm{total}} = \alpha L_{\textrm{LeNet}} + \beta L_{\textrm{generator}} \end{center} \end{figure} +\begin{figure} +\begin{center} +\includegraphics[width=24em]{fig/CDCGAN_arch.pdf} +\caption{Deep Convolutional CGAN Architecture} +\label{fig:cdcganarc} +\end{center} +\end{figure} + \begin{figure} \begin{center} \includegraphics[width=24em]{fig/short_cgan_ex.png} @@ -445,6 +441,16 @@ $$ L_{\textrm{total}} = \alpha L_{\textrm{LeNet}} + \beta L_{\textrm{generator}} \end{center} \end{figure} +\begin{figure} +\begin{center} +\includegraphics[width=12em]{fig/good_ex.png} +\includegraphics[width=12em]{fig/bad_ex.png} +\includegraphics[width=24em]{fig/cdcgan.png} +\caption{Convolutional CGAN+LS} +\label{fig:cdcloss} +\end{center} +\end{figure} + \begin{figure} \begin{center} \includegraphics[width=24em]{fig/fake_only.png} -- cgit v1.2.3-54-g00ecf