aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornunzip <np.scarh@gmail.com>2019-03-04 11:38:26 +0000
committernunzip <np.scarh@gmail.com>2019-03-04 11:38:26 +0000
commitbbffa52ed893bfca3edc016a05f5b293b171ccea (patch)
treefb077ce7ac71e6232faf25d13ac8051d6ef4ef8f
parent010848a0311988dbf317dc1ce857f2a3474b36c3 (diff)
downloade4-gan-bbffa52ed893bfca3edc016a05f5b293b171ccea.tar.gz
e4-gan-bbffa52ed893bfca3edc016a05f5b293b171ccea.tar.bz2
e4-gan-bbffa52ed893bfca3edc016a05f5b293b171ccea.zip
Report
-rw-r--r--report/.gitignore2
-rw-r--r--report/.travis.yml7
-rw-r--r--report/LICENSE21
-rw-r--r--report/bibliography.bib55
-rw-r--r--report/bibliography.csl339
-rw-r--r--report/build/cw1_vz215_np1915.pdfbin0 -> 233980 bytes
-rw-r--r--report/fig/error_depth_kmean100.pdfbin0 -> 14275 bytes
-rw-r--r--report/makefile19
-rw-r--r--report/metadata.yaml12
-rw-r--r--report/paper.md100
-rw-r--r--report/template.latex300
11 files changed, 855 insertions, 0 deletions
diff --git a/report/.gitignore b/report/.gitignore
new file mode 100644
index 0000000..5236e1e
--- /dev/null
+++ b/report/.gitignore
@@ -0,0 +1,2 @@
+*~
+
diff --git a/report/.travis.yml b/report/.travis.yml
new file mode 100644
index 0000000..49d89e9
--- /dev/null
+++ b/report/.travis.yml
@@ -0,0 +1,7 @@
+sudo: enabled
+dist: trusty
+install:
+ - sudo apt-get -qq update
+ - sudo apt-get install -y pandoc pandoc-citeproc texlive-full
+script:
+ - make
diff --git a/report/LICENSE b/report/LICENSE
new file mode 100644
index 0000000..6c59dbd
--- /dev/null
+++ b/report/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2016 Santos Gallegos
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/report/bibliography.bib b/report/bibliography.bib
new file mode 100644
index 0000000..8230369
--- /dev/null
+++ b/report/bibliography.bib
@@ -0,0 +1,55 @@
+@inproceedings{km-complexity,
+ author = {Inaba, Mary and Katoh, Naoki and Imai, Hiroshi},
+ title = {Applications of Weighted Voronoi Diagrams and Randomization to Variance-based K-clustering: (Extended Abstract)},
+ booktitle = {Proceedings of the Tenth Annual Symposium on Computational Geometry},
+ series = {SCG '94},
+ year = {1994},
+ isbn = {0-89791-648-4},
+ location = {Stony Brook, New York, USA},
+ pages = {332--339},
+ numpages = {8},
+ url = {http://doi.acm.org/10.1145/177424.178042},
+ doi = {10.1145/177424.178042},
+ acmid = {178042},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+}
+
+@article{rerank-paper,
+ author = {Zhun Zhong and
+ Liang Zheng and
+ Donglin Cao and
+ Shaozi Li},
+ title = {Re-ranking Person Re-identification with k-reciprocal Encoding},
+ journal = {CoRR},
+ volume = {abs/1701.08398},
+ year = {2017},
+ url = {http://arxiv.org/abs/1701.08398},
+ archivePrefix = {arXiv},
+ eprint = {1701.08398},
+ timestamp = {Mon, 13 Aug 2018 16:47:43 +0200},
+ biburl = {https://dblp.org/rec/bib/journals/corr/ZhongZCL17},
+ bibsource = {dblp computer science bibliography, https://dblp.org}
+}
+
+@book{kmean,
+added-at = {2016-05-28T21:24:35.000+0200},
+address = {New York},
+author = {Duda, Richard O. and Hart, Peter E. and Stork, David G.},
+biburl = {https://www.bibsonomy.org/bibtex/25ef4fe4778daaf4b4e56c0d66161e048/flint63},
+edition = 2,
+file = {eBook:2000-04/DudaHartStork01.pdf:PDF;Wiley Product page:http\://eu.wiley.com/WileyCDA/WileyTitle/productCd-0471056693.html:URL;Amazon Search inside:http\://www.amazon.de/gp/reader/0471056693/:URL},
+groups = {public},
+interhash = {5af620770e95f6b9ccffca6b3638a8ae},
+intrahash = {5ef4fe4778daaf4b4e56c0d66161e048},
+isbn = {978-0-471-05669-0},
+keywords = {01801 105 book shelf ai data pattern recognition analysis},
+publisher = {Wiley},
+timestamp = {2018-04-17T11:20:04.000+0200},
+title = {Pattern Classification},
+username = {flint63},
+ year = 2001
+}
+
+
+
diff --git a/report/bibliography.csl b/report/bibliography.csl
new file mode 100644
index 0000000..9d967b0
--- /dev/null
+++ b/report/bibliography.csl
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="sort-only">
+ <info>
+ <title>IEEE</title>
+ <id>http://www.zotero.org/styles/ieee</id>
+ <link href="http://www.zotero.org/styles/ieee" rel="self"/>
+ <link href="http://www.ieee.org/documents/style_manual.pdf" rel="documentation"/>
+ <link href="http://www.ieee.org/documents/auinfo07.pdf" rel="documentation"/>
+ <author>
+ <name>Michael Berkowitz</name>
+ <email>mberkowi@gmu.edu</email>
+ </author>
+ <contributor>
+ <name>Julian Onions</name>
+ <email>julian.onions@gmail.com</email>
+ </contributor>
+ <contributor>
+ <name>Rintze Zelle</name>
+ <uri>http://twitter.com/rintzezelle</uri>
+ </contributor>
+ <contributor>
+ <name>Stephen Frank</name>
+ <uri>http://www.zotero.org/sfrank</uri>
+ </contributor>
+ <contributor>
+ <name>Sebastian Karcher</name>
+ </contributor>
+ <category citation-format="numeric"/>
+ <category field="engineering"/>
+ <category field="generic-base"/>
+ <updated>2013-12-17T18:04:02+00:00</updated>
+ <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
+ </info>
+ <locale xml:lang="en">
+ <terms>
+ <term name="chapter" form="short">ch.</term>
+ <term name="presented at">presented at the</term>
+ <term name="available at">available</term>
+ </terms>
+ </locale>
+ <!-- Macros -->
+ <macro name="edition">
+ <choose>
+ <if type="bill book chapter graphic legal_case legislation motion_picture paper-conference report song" match="any">
+ <choose>
+ <if is-numeric="edition">
+ <group delimiter=" ">
+ <number variable="edition" form="ordinal"/>
+ <text term="edition" form="short"/>
+ </group>
+ </if>
+ <else>
+ <text variable="edition" text-case="capitalize-first" suffix="."/>
+ </else>
+ </choose>
+ </if>
+ </choose>
+ </macro>
+ <macro name="issued">
+ <choose>
+ <if type="article-journal report" match="any">
+ <date variable="issued">
+ <date-part name="month" form="short" suffix=" "/>
+ <date-part name="year" form="long"/>
+ </date>
+ </if>
+ <else-if type=" bill book chapter graphic legal_case legislation motion_picture paper-conference song thesis" match="any">
+ <date variable="issued">
+ <date-part name="year" form="long"/>
+ </date>
+ </else-if>
+ <else>
+ <date variable="issued">
+ <date-part name="day" form="numeric-leading-zeros" suffix="-"/>
+ <date-part name="month" form="short" suffix="-" strip-periods="true"/>
+ <date-part name="year" form="long"/>
+ </date>
+ </else>
+ </choose>
+ </macro>
+ <macro name="author">
+ <names variable="author">
+ <name initialize-with=". " delimiter=", " and="text"/>
+ <label form="short" prefix=", " text-case="capitalize-first"/>
+ <substitute>
+ <names variable="editor"/>
+ <names variable="translator"/>
+ </substitute>
+ </names>
+ </macro>
+ <macro name="editor">
+ <names variable="editor">
+ <name initialize-with=". " delimiter=", " and="text"/>
+ <label form="short" prefix=", " text-case="capitalize-first"/>
+ </names>
+ </macro>
+ <macro name="locators">
+ <group delimiter=", ">
+ <text macro="edition"/>
+ <group delimiter=" ">
+ <text term="volume" form="short"/>
+ <number variable="volume" form="numeric"/>
+ </group>
+ <group delimiter=" ">
+ <number variable="number-of-volumes" form="numeric"/>
+ <text term="volume" form="short" plural="true"/>
+ </group>
+ <group delimiter=" ">
+ <text term="issue" form="short"/>
+ <number variable="issue" form="numeric"/>
+ </group>
+ </group>
+ </macro>
+ <macro name="title">
+ <choose>
+ <if type="bill book graphic legal_case legislation motion_picture song" match="any">
+ <text variable="title" font-style="italic"/>
+ </if>
+ <else>
+ <text variable="title" quotes="true"/>
+ </else>
+ </choose>
+ </macro>
+ <macro name="publisher">
+ <choose>
+ <if type=" bill book chapter graphic legal_case legislation motion_picture paper-conference song" match="any">
+ <group delimiter=": ">
+ <text variable="publisher-place"/>
+ <text variable="publisher"/>
+ </group>
+ </if>
+ <else>
+ <group delimiter=", ">
+ <text variable="publisher"/>
+ <text variable="publisher-place"/>
+ </group>
+ </else>
+ </choose>
+ </macro>
+ <macro name="event">
+ <choose>
+ <if type="paper-conference speech" match="any">
+ <choose>
+ <!-- Published Conference Paper -->
+ <if variable="container-title">
+ <group delimiter=", ">
+ <group delimiter=" ">
+ <text term="in"/>
+ <text variable="container-title" font-style="italic"/>
+ </group>
+ <text variable="event-place"/>
+ </group>
+ </if>
+ <!-- Unpublished Conference Paper -->
+ <else>
+ <group delimiter=", ">
+ <group delimiter=" ">
+ <text term="presented at"/>
+ <text variable="event"/>
+ </group>
+ <text variable="event-place"/>
+ </group>
+ </else>
+ </choose>
+ </if>
+ </choose>
+ </macro>
+ <macro name="access">
+ <choose>
+ <if type="webpage">
+ <choose>
+ <if variable="URL">
+ <group delimiter=". ">
+ <text term="online" prefix="[" suffix="]" text-case="capitalize-first"/>
+ <group delimiter=": ">
+ <text term="available at" text-case="capitalize-first"/>
+ <text variable="URL"/>
+ </group>
+ <group prefix="[" suffix="]" delimiter=": ">
+ <text term="accessed" text-case="capitalize-first"/>
+ <date variable="accessed">
+ <date-part name="day" form="numeric-leading-zeros" suffix="-"/>
+ <date-part name="month" form="short" suffix="-" strip-periods="true"/>
+ <date-part name="year" form="long"/>
+ </date>
+ </group>
+ </group>
+ </if>
+ </choose>
+ </if>
+ </choose>
+ </macro>
+ <macro name="page">
+ <group>
+ <label variable="page" form="short" suffix=" "/>
+ <text variable="page"/>
+ </group>
+ </macro>
+ <macro name="citation-locator">
+ <group delimiter=" ">
+ <choose>
+ <if locator="page">
+ <label variable="locator" form="short"/>
+ </if>
+ <else>
+ <label variable="locator" form="short" text-case="capitalize-first"/>
+ </else>
+ </choose>
+ <text variable="locator"/>
+ </group>
+ </macro>
+ <!-- Citation -->
+ <citation collapse="citation-number">
+ <sort>
+ <key variable="citation-number"/>
+ </sort>
+ <layout delimiter=", ">
+ <group prefix="[" suffix="]" delimiter=", ">
+ <text variable="citation-number"/>
+ <text macro="citation-locator"/>
+ </group>
+ </layout>
+ </citation>
+ <!-- Bibliography -->
+ <bibliography entry-spacing="0" second-field-align="flush">
+ <layout suffix=".">
+ <!-- Citation Number -->
+ <text variable="citation-number" prefix="[" suffix="]"/>
+ <!-- Author(s) -->
+ <text macro="author" suffix=", "/>
+ <!-- Rest of Citation -->
+ <choose>
+ <!-- Specific Formats -->
+ <if type="article-journal">
+ <group delimiter=", ">
+ <text macro="title"/>
+ <text variable="container-title" font-style="italic" form="short"/>
+ <text macro="locators"/>
+ <text macro="page"/>
+ <text macro="issued"/>
+ </group>
+ </if>
+ <else-if type="paper-conference speech" match="any">
+ <group delimiter=", ">
+ <text macro="title"/>
+ <text macro="event"/>
+ <text macro="issued"/>
+ <text macro="locators"/>
+ <text macro="page"/>
+ </group>
+ </else-if>
+ <else-if type="report">
+ <group delimiter=", ">
+ <text macro="title"/>
+ <text macro="publisher"/>
+ <group delimiter=" ">
+ <text variable="genre"/>
+ <text variable="number"/>
+ </group>
+ <text macro="issued"/>
+ </group>
+ </else-if>
+ <else-if type="thesis">
+ <group delimiter=", ">
+ <text macro="title"/>
+ <text variable="genre"/>
+ <text macro="publisher"/>
+ <text macro="issued"/>
+ </group>
+ </else-if>
+ <else-if type="webpage post-weblog" match="any">
+ <group delimiter=", " suffix=". ">
+ <text macro="title"/>
+ <text variable="container-title" font-style="italic"/>
+ <text macro="issued"/>
+ </group>
+ <text macro="access"/>
+ </else-if>
+ <else-if type="patent">
+ <group delimiter=", ">
+ <text macro="title"/>
+ <text variable="number"/>
+ <text macro="issued"/>
+ </group>
+ </else-if>
+ <!-- Generic/Fallback Formats -->
+ <else-if type="bill book graphic legal_case legislation motion_picture report song" match="any">
+ <group delimiter=", " suffix=". ">
+ <text macro="title"/>
+ <text macro="locators"/>
+ </group>
+ <group delimiter=", ">
+ <text macro="publisher"/>
+ <text macro="issued"/>
+ <text macro="page"/>
+ </group>
+ </else-if>
+ <else-if type="article-magazine article-newspaper broadcast interview manuscript map patent personal_communication song speech thesis webpage" match="any">
+ <group delimiter=", ">
+ <text macro="title"/>
+ <text variable="container-title" font-style="italic"/>
+ <text macro="locators"/>
+ <text macro="publisher"/>
+ <text macro="page"/>
+ <text macro="issued"/>
+ </group>
+ </else-if>
+ <else-if type="chapter paper-conference" match="any">
+ <group delimiter=", " suffix=", ">
+ <text macro="title"/>
+ <group delimiter=" ">
+ <text term="in"/>
+ <text variable="container-title" font-style="italic"/>
+ </group>
+ <text macro="locators"/>
+ </group>
+ <text macro="editor" suffix=" "/>
+ <group delimiter=", ">
+ <text macro="publisher"/>
+ <text macro="issued"/>
+ <text macro="page"/>
+ </group>
+ </else-if>
+ <else>
+ <group delimiter=", " suffix=". ">
+ <text macro="title"/>
+ <text variable="container-title" font-style="italic"/>
+ <text macro="locators"/>
+ </group>
+ <group delimiter=", ">
+ <text macro="publisher"/>
+ <text macro="page"/>
+ <text macro="issued"/>
+ </group>
+ </else>
+ </choose>
+ </layout>
+ </bibliography>
+</style> \ No newline at end of file
diff --git a/report/build/cw1_vz215_np1915.pdf b/report/build/cw1_vz215_np1915.pdf
new file mode 100644
index 0000000..3a6e8a5
--- /dev/null
+++ b/report/build/cw1_vz215_np1915.pdf
Binary files differ
diff --git a/report/fig/error_depth_kmean100.pdf b/report/fig/error_depth_kmean100.pdf
new file mode 100644
index 0000000..85fffdc
--- /dev/null
+++ b/report/fig/error_depth_kmean100.pdf
Binary files differ
diff --git a/report/makefile b/report/makefile
new file mode 100644
index 0000000..636d2f8
--- /dev/null
+++ b/report/makefile
@@ -0,0 +1,19 @@
+FILES = paper.md \
+ metadata.yaml
+
+OUTPUT = build
+
+FLAGS = --bibliography=bibliography.bib \
+ --csl=bibliography.csl \
+ -s \
+ -f markdown
+
+FLAGS_PDF = --template=template.latex
+
+pdf:
+ mkdir -p $(OUTPUT)
+ pandoc -o $(OUTPUT)/cw1_vz215_np1915.pdf $(FLAGS) $(FLAGS_PDF) $(FILES)
+
+clean:
+ rm build/*
+
diff --git a/report/metadata.yaml b/report/metadata.yaml
new file mode 100644
index 0000000..d23f929
--- /dev/null
+++ b/report/metadata.yaml
@@ -0,0 +1,12 @@
+---
+title: 'EE4-62 Selected Topics in Computer Vision (2018-2019) CW2'
+author:
+ - name: Vasil Zlatanov (01120518), Nunzio Pucci (01113180)
+ email: vz215@ic.ac.uk, np1915@ic.ac.uk
+numbersections: yes
+lang: en
+babel-lang: english
+fontsize: 10pt
+
+...
+
diff --git a/report/paper.md b/report/paper.md
new file mode 100644
index 0000000..77d3db7
--- /dev/null
+++ b/report/paper.md
@@ -0,0 +1,100 @@
+# DCGAN
+
+## DCGAN Architecture description
+
+## Tests on MNIST
+
+Try some **different architectures, hyper-parameters**, and, if necessary, the aspects of **virtual batch
+normalization**, balancing G and D.
+Please discuss, with results, what challenge and how they are specifically addressing, including
+the quality of generated images and, also, the **mode collapse**.
+
+\begin{figure}
+\begin{center}
+\includegraphics[width=24em]{fig/error_depth_kmean100.pdf}
+\caption{K-means Classification error varying tree depth (left) and forest size (right)}
+\label{fig:km-tree-param}
+\end{center}
+\end{figure}
+
+# CGAN
+
+## CGAN Architecture description
+
+## Tests on MNIST
+
+Try **different architectures, hyper-parameters**, and, if necessary, the aspects of **one-sided label
+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?**
+
+# Inception Score
+
+## Classifier Architecture Used
+
+## Results
+
+Measure the inception scores i.e. we use the class labels to
+generate images in CGAN and compare them with the predicted labels of the generated images.
+
+Also report the recognition accuracies on the
+MNIST real testing set (10K), in comparison to the inception scores.
+
+**Please measure and discuss the inception scores for the different hyper-parameters/tricks and/or
+architectures in Q2.**
+
+# Re-training the handwritten digit classifier
+
+## Results
+
+Retrain with different portions and test BOTH fake and real queries. Please **vary** the portions
+of the real training and synthetic images, e.g. 10%, 20%, 50%, and 100%, of each.
+
+## 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.*
+
+# Bonus
+
+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}
+
+\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.
+
+\item Can we add a classification loss (using the pre-trained classifier) to CGAN, and see if this
+improve? The classification loss would help the generated images maintain the class
+labels, i.e. improving the inception score. What would be the respective network
+architecture and loss function?
+
+\end{itemize}
+
+# References
+
+<div id="refs"></div>
+
+\newpage
+
+# Appendix
+
+
diff --git a/report/template.latex b/report/template.latex
new file mode 100644
index 0000000..afc8358
--- /dev/null
+++ b/report/template.latex
@@ -0,0 +1,300 @@
+\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$babel-lang$,$endif$$if(papersize)$$papersize$paper,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{IEEEtran}
+$if(beamerarticle)$
+\usepackage{beamerarticle} % needs to be loaded first
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{textcomp}
+\usepackage{eurosym}
+$endif$
+$if(fontfamily)$
+\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
+$else$
+\usepackage{lmodern}
+$endif$
+\usepackage{float}
+$if(linestretch)$
+\usepackage{setspace}
+\setstretch{$linestretch$}
+$endif$
+\usepackage{float}
+\usepackage{amssymb,amsmath}
+\usepackage{ifxetex,ifluatex}
+\usepackage{fixltx2e} % provides \textsubscript
+\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
+ \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
+ \usepackage[utf8]{inputenc}
+$if(euro)$
+ \usepackage{eurosym}
+$endif$
+\else % if luatex or xelatex
+ \ifxetex
+ \usepackage{mathspec}
+ \else
+ \usepackage{fontspec}
+ \fi
+ \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
+$for(fontfamilies)$
+ \newfontfamily{$fontfamilies.name$}[$fontfamilies.options$]{$fontfamilies.font$}
+$endfor$
+$if(euro)$
+ \newcommand{\euro}{€}
+$endif$
+$if(mainfont)$
+ \setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
+$endif$
+$if(sansfont)$
+ \setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$}
+$endif$
+$if(monofont)$
+ \setmonofont[Mapping=tex-ansi$if(monofontoptions)$,$for(monofontoptions)$$monofontoptions$$sep$,$endfor$$endif$]{$monofont$}
+$endif$
+$if(mathfont)$
+ \setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
+$endif$
+$if(CJKmainfont)$
+ \usepackage{xeCJK}
+ \setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
+$endif$
+\fi
+% use upquote if available, for straight quotes in verbatim environments
+\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
+% use microtype if available
+\IfFileExists{microtype.sty}{%
+\usepackage{microtype}
+\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
+}{}
+$if(geometry)$
+\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
+$endif$
+\usepackage[unicode=true]{hyperref}
+$if(colorlinks)$
+\PassOptionsToPackage{usenames,dvipsnames}{color} % color is loaded by hyperref
+$endif$
+\hypersetup{
+$if(title-meta)$
+ pdftitle={$title-meta$},
+$endif$
+$if(author-meta)$
+ pdfauthor={$author-meta$},
+$endif$
+$if(keywords)$
+ pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$},
+$endif$
+$if(colorlinks)$
+ colorlinks=true,
+ linkcolor=$if(linkcolor)$$linkcolor$$else$Maroon$endif$,
+ citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$,
+ urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$,
+$else$
+ pdfborder={0 0 0},
+$endif$
+ breaklinks=true}
+\urlstyle{same} % don't use monospace font for urls
+$if(lang)$
+\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
+ \usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}
+$if(babel-newcommands)$
+ $babel-newcommands$
+$endif$
+\else
+ \usepackage{polyglossia}
+ \setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$}
+$for(polyglossia-otherlangs)$
+ \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$}
+$endfor$
+\fi
+$endif$
+$if(natbib)$
+\usepackage{natbib}
+\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
+$endif$
+$if(biblatex)$
+\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex}
+$for(bibliography)$
+\addbibresource{$bibliography$}
+$endfor$
+$endif$
+$if(listings)$
+\usepackage{listings}
+$endif$
+$if(lhs)$
+\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
+$endif$
+$if(highlighting-macros)$
+$highlighting-macros$
+$endif$
+$if(verbatim-in-note)$
+\usepackage{fancyvrb}
+\VerbatimFootnotes % allows verbatim text in footnotes
+$endif$
+$if(tables)$
+\usepackage{longtable,booktabs}
+% Fix footnotes in tables (requires footnote package)
+\IfFileExists{footnote.sty}{\usepackage{footnote}\makesavenoteenv{long table}}{}
+$endif$
+\usepackage{graphicx}
+$if(graphics)$
+\usepackage{graphicx,grffile}
+\makeatletter
+\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
+\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
+\makeatother
+% Scale images if necessary, so that they will not overflow the page
+% margins by default, and it is still possible to overwrite the defaults
+% using explicit options in \includegraphics[width, height, ...]{}
+\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
+$endif$
+$if(links-as-notes)$
+% Make links footnotes instead of hotlinks:
+\renewcommand{\href}[2]{#2\footnote{\url{#1}}}
+$endif$
+$if(strikeout)$
+\usepackage[normalem]{ulem}
+% avoid problems with \sout in headers with hyperref:
+\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
+$endif$
+$if(indent)$
+$else$
+\IfFileExists{parskip.sty}{%
+\usepackage{parskip}
+}{% else
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{6pt plus 2pt minus 1pt}
+}
+$endif$
+\setlength{\emergencystretch}{3em} % prevent overfull lines
+\providecommand{\tightlist}{%
+ \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
+$if(numbersections)$
+\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
+$else$
+\setcounter{secnumdepth}{0}
+$endif$
+$if(subparagraph)$
+$else$
+% Redefines (sub)paragraphs to behave more like sections
+\ifx\paragraph\undefined\else
+\let\oldparagraph\paragraph
+\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
+\fi
+\ifx\subparagraph\undefined\else
+\let\oldsubparagraph\subparagraph
+\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
+\fi
+$endif$
+$if(dir)$
+\ifxetex
+ % load bidi as late as possible as it modifies e.g. graphicx
+ $if(latex-dir-rtl)$
+ \usepackage[RTLdocument]{bidi}
+ $else$
+ \usepackage{bidi}
+ $endif$
+\fi
+\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
+ \TeXXeTstate=1
+ \newcommand{\RL}[1]{\beginR #1\endR}
+ \newcommand{\LR}[1]{\beginL #1\endL}
+ \newenvironment{RTL}{\beginR}{\endR}
+ \newenvironment{LTR}{\beginL}{\endL}
+\fi
+$endif$
+
+% set default figure placement to htbp
+\makeatletter
+\def\fps@figure{htbp}
+\makeatother
+
+$for(header-includes)$
+$header-includes$
+$endfor$
+
+$if(title)$
+\title{$title$$if(thanks)$\thanks{$thanks$}$endif$}
+$endif$
+$if(subtitle)$
+\providecommand{\subtitle}[1]{}
+\subtitle{$subtitle$}
+$endif$
+
+$if(author)$
+\author{
+ $for(author)$
+ \IEEEauthorblockN{$author.name$}
+ \IEEEauthorblockA{%
+ $author.affiliation$ \\
+ $author.email$ \\
+ $author.location$}
+ $sep$ \and
+ $endfor$
+}
+$endif$
+
+$if(institute)$
+\providecommand{\institute}[1]{}
+\institute{$for(institute)$$institute$$sep$ \and $endfor$}
+$endif$
+\date{$date$}
+
+\begin{document}
+$if(title)$
+\maketitle
+$endif$
+$if(abstract)$
+\begin{abstract}
+$abstract$
+\end{abstract}
+$endif$
+
+$if(keywords)$
+\begin{IEEEkeywords}
+$for(keywords)$
+ $keywords$$sep$;
+$endfor$
+\end{IEEEkeywords}
+$endif$
+
+$for(include-before)$
+$include-before$
+
+$endfor$
+$if(toc)$
+{
+$if(colorlinks)$
+\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$black$endif$}
+$endif$
+\setcounter{tocdepth}{$toc-depth$}
+\tableofcontents
+}
+$endif$
+$if(lot)$
+\listoftables
+$endif$
+$if(lof)$
+\listoffigures
+$endif$
+$body$
+
+$if(natbib)$
+$if(bibliography)$
+$if(biblio-title)$
+$if(book-class)$
+\renewcommand\bibname{$biblio-title$}
+$else$
+\renewcommand\refname{$biblio-title$}
+$endif$
+$endif$
+\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
+
+$endif$
+$endif$
+$if(biblatex)$
+\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
+
+$endif$
+$for(include-after)$
+$include-after$
+
+$endfor$
+\end{document}
+