%%% Preamble
\documentclass[11pt, a4paper]{article}

\usepackage[english]{babel} % English language/hyphenation
\usepackage{url}
\usepackage{tabularx}
\usepackage{pdfpages}
\usepackage{float}

\usepackage{graphicx}
\graphicspath{ {../images for report/} }
\usepackage[margin=2cm]{geometry}

\usepackage{hyperref}
\hypersetup{
    colorlinks,
    citecolor=black,
    filecolor=black,
    linkcolor=black,
    urlcolor=black
}

\usepackage{cleveref}

%%% Custom headers/footers (fancyhdr package)
\usepackage{fancyhdr}
\pagestyle{fancyplain}
\fancyhead{}							% No page header
\fancyfoot[L]{}							% Empty 
\fancyfoot[C]{\thepage}					% Pagenumbering		
\fancyfoot[R]{}						    % Empty
\renewcommand{\headrulewidth}{0pt}		% Remove header underlines
\renewcommand{\footrulewidth}{0pt}		% Remove footer underlines
\setlength{\headheight}{13.6pt}

% numeric
\usepackage[style=ieee,sorting=none,backend=biber]{biblatex}
\addbibresource{../main.bib}

% Write the approved title of your dissertation
\title{Automated image classification with expandable models}

% Write your full name, as in University records
\author{Andre Henriques, 6644818}

\date{}

%%% Begin document
\begin{document}

    \maketitle
    \newpage

    \tableofcontents
    \newpage


    \section{Introduction}
    % This section should contain an introduction to the problem aims and objectives (0.5 page)

    The aim of this project is to create a classification service that has 0
    requires zero user knowledge about machine learning, image
    classification or data analysis.
    The system should allow the user to create a reasonable accurate model
    that can satisfy the users' need.
    The system should also allow the user to create expandable models;
    models where classes can be added after the model has been created.

    \subsection{Aims}
    The project aims to create a platform where users can create different types of classification models without the users having any knowledge of image classification.

    \subsection{Objectives}
        This project's primary objectives are to: 
        \begin{itemize}
            \item Create platform where the users can create and manage their models.
            \item Create a system to automatically create and train.
            \item Create a system to automatically create and train models.
            \item Create a system to automatically expand and reduce models without fully retraining the models.
            \item Create an API so that users can interact programatically with the system.
        \end{itemize} 
        This project extended objectives are to:
        \begin{itemize}
            \item Create a system to automatically to merge modules to increase efficiency
            \item Create a system to distribute the load of training the model's among  multiple services.
        \end{itemize}
    \section{Literature and Techincal Review}
    % 1 page of background and literature review. Here you will need to references things. Gamal et al.~\cite{gamal} introduce the concept of \ldots

    \subsection{Alternatives to my Project}
    There currently exist systems that do image classification, like Google Vision AI\cite{google-vision-api}, and Amazon's Rekoginition\cite{amazon-rekognition}. 
    Their tools, while providing similar services to what my project is supposed to do, it mostly focusses on general image classification rather than specific image classification, i.e. Car vs Boat, vs, Car model X vs Car model Y.

    \subsection{Creation Models}
    The models that I will be creating will be Convolutional Neural Network(CNN)\cite{lecun1989handwritten,fukushima1980neocognitron}.
    The system will be creating two types of models that cannot be expanded and models that can be expanded. For the models that can be expanded, see the section about expandable models.
    The models that cannot be expanded will use a simple convolution blocks, with a similar structure as the AlexNet\cite{krizhevsky2012imagenet} ones, as the basis for the model. The size of the model will be controlled by the size of the input image, where bigger images will generate more deep and complex models.
    The models will be created using TensorFlow\cite{tensorflow2015-whitepaper} and Keras\cite{chollet2015keras}. These theologies are chosen since they are both robust and used in industry.

    \subsection{Expandable Models}
        The current most used approach for expanding a CNN model is to retrain the model. This is done by, recreating an entire new model that does the new task, using the older model as a base for the new model, or using a pretrained model as a base and training the last few layers.


    \section{Technical overview}
        \subsection{Interface}
            The user will interact with the platform form via a web portal.
            The web platform will be designed using HTML and a JavaScript library called HTMX\cite{htmx} for the reactivity that the pagers requires.
            The web server that will act as controller will be implemented using go\cite{go}, due to its ease of use.
            The web server will also interact with python to create models. Then to run the models, it will use the libraries that are available to run TensorFlow\cite{tensorflow2015-whitepaper} models for that in go.

        \subsection{Expandable Models}
            The approach would be based on multiple models. The first model is a large model that will work as a feature traction model, the results of this model are then given to other smaller models. These model's purpose is to classify the results of the feature extraction model into classes.
            The first model would either be an already existent pretrained model or a model that is automatically created by the platform.
            The smaller models would all be all generated by the platform, this model's purpose would be actually classification.
            This approach would offer a lot of expandability, as it makes the addition of a new class as easy as creating a new small model.
    % 1 page of overview. My approach is shown in Figure~\ref{fig:sample}. You can draw the diagram in powerpoint and save the picture

    \section{Workplan}
    \subsection{Timeline}
    % The following work plan is what I will be using for the project is shown in Figure~\ref{fig:sample2}.
    \begin{tabular}{ |m{0.5\textwidth}|m{0.5\textwidth}| }
		\hline
        Month & Goals \\ 
        September & \begin{itemize}
                        \item Experimenting with web development frameworks.
                        \item Started working on code development.
                     \end{itemize} \\
        October & \begin{itemize} 
                        \item Starting working on Project Synopsis.
                        \item Continue working on project development.
                        \item Finish user management system and basic ui decisions.
                        \item Finish data upload section of the website.
                   \end{itemize} \\  
        November & \begin{itemize} 
                        \item Finish writing on Project Synopsis.
                        \item Finish coding the basic model generation and training.
                   \end{itemize} \\  
        December & \begin{itemize} 
                        \item Improve basic model generation.
                   \end{itemize} \\  
        January & \begin{itemize} 
                        \item Add api support.
                        \item Started working on the final report
                   \end{itemize} \\  
        Feburary & \begin{itemize} 
                        \item Start working on expandable models generation
                   \end{itemize} \\  
        March & \begin{itemize} 
                        \item Create systems to expand the expandable models and contract models
                        \item Review draft submissions
                   \end{itemize} \\  
        April  & \begin{itemize} 
                        \item Basic final report finish
                        \item Create systems to expand and reduce expandable models
                   \end{itemize} \\  
        May  & \begin{itemize} 
                        \item Finish and submit final report
                \end{itemize} \\  
		\hline
    \end{tabular}

    \subsection{Risks}
    \begin{tabular}{ |c| }
		\hline
        Risk \\ 
        Automatic model generation is not feasable\\
        Easy model expancion is not feasble\\
        Not enough compute power to train models fast enough to develop the program\\
		\hline
    \end{tabular}

    \appendix
    \newpage

    \section{References}
    \printbibliography[heading=none]

    % TODO add my job title
\end{document}


