Deep Learning Coursework
Dr Chris G. Willcocks
Last Modified: January 23, 2020
Introduction
This coursework uses the CIFAR-10 dataset, where your task is to design and train a deep generative model
that creates new images of winged horses that look like a Pegasus. There are no such images of winged horses
in the CIFAR-10 dataset, and this is intentionally an ill-defined learning problem.
You are to write a scientific report with a maximum of 1,000 words, detailing the architectural designs considered,
which experiments were conducted, and how models were evaluated and improved. Also you are required to
submit working code (NCC/local .py or Colab .ipynb) for your final solution.
Generating a Pegasus
Training on data only from CIFAR-10 (not CIFAR-100), you should generate a single colour image of a Pegasus.
You are also required to submit a batch of 64 samples from your generative model, to show the sample diversity.
Make a diagram of your final model architecture, and discuss its design in your report. You can use any
architecture that you like, and you can use any sampling strategy. You may submit images of multiple generated
winged horses, but please highlight your best one that you wish to be marked on.
You will be marked as follows:
• Diagram of the final generative model architecture, and scientific discussions on its design [40 marks].
• Recognisability of the best output (can I tell this is an image of a Pegasus?) [20 marks]
• Realism of the best output (is the generated image blurry, or does it look like a real image?) [20 marks].
• Uniqueness of the outputs (how different are the images from their nearest neighbours in the dataset, and
how diverse are the samples in the batch of 64 provided?) [20 marks].
Base code for generating the pegasus is available here [Pegasus Google Colab Link]. Note: you are expected
to significantly deviate from this base code, e.g.: interpolating from different labels, using different sampling
strategies, and/or using completely different types of generative architecture.
Exemplars
It is not expected that you will be able to generate a realistic recognisable image of a Pegasus, as this is very
difficult task within the dataset constraints (high marks will be awarded to excellent attempts even if the output
is not good). These are some model answers (awarded very high marks) to show what is possible:
Constraints
In this assignment:
• You can reimplement techniques from academic papers, although it would be preferred if you build your
own creative solutions using knowledge learnt from the lectures, and discuss your ideas in the report.
1
• If you do base your work on an existing architecture or someone elses code/tutorial, this must be clearly
cited both in the report and in the code.
• Do not use any other data/images from the internet.
• Do not use pre-trained network weights (transfer learning) - this will score zero.
• Do not directly use other people’s code or attempt to refactor their code (existing architectures e.g. on
Github). All code is submitted to collusion and plagiarism detection services for programming.
• You may use all, or part of the dataset (you may even train on data in the test set).
• Do not paint manual image masks or do any manual image editing. However you are allowed to edit image
content automatically in code (e.g. dataset augmentation or image preprocessing).
PyTorch Training
This assignment can be completed entirely using Google Colab, or you may wish to register for an account and
train on NCC: http://ncc.clients.dur.ac.uk/ (only available on the internal university network). Users
without remote server experience or job queuing system experience (such as SLURM) are recommended to
continue to use Google Colab, which is just as fast for PyTorch training. If using NCC, please carefully read
the documentation and respect other users on the job queuing system.
Submission
Please submit a .zip file containing your report as a .pdf, and a file called ‘pegasus.py’ (or ‘pegasus.ipynb’).
I hope that you enjoy this coursework. If you are struggling, there will be coding workshops on 3rd and 6th
March in E216A-B, with the opportunity to discuss any programming or architectural design issues.
2
Q. Can I use X approach, not covered in the lectures?
A. Yes, this is allowed. If the idea is based on an existing paper, please cite it both in your code and in
your report. Please read the constraints section in the assignment details for more information.
Q. Can I use Keras, Theano, Tensorflow, Caffe, Chainer, or X to develop the coursework instead?
A. I will also accept Tensorflow submissions, but not the others. If you already know Tensorflow, I
encourage you to use PyTorch instead and add it to your skills repertoire. Increasingly, employers are
looking for PyTorch experience.