From 532b024ec8c4a452fe8457ed1cfad2463cfafa18 Mon Sep 17 00:00:00 2001 From: "Jip J. Dekker" Date: Thu, 24 May 2018 16:52:39 +1000 Subject: [PATCH 1/8] New title and restructuring --- mini_proj/report/waldo.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mini_proj/report/waldo.tex b/mini_proj/report/waldo.tex index da620bb..1dbad7c 100644 --- a/mini_proj/report/waldo.tex +++ b/mini_proj/report/waldo.tex @@ -20,7 +20,7 @@ \usepackage{natbib} \begin{document} - \title{Waldo discovery using Neural Networks} + \title{What is waldo} \author{Kelvin Davis \and Jip J. Dekker\and Anthony Silvestere} \maketitle @@ -34,9 +34,9 @@ \section{Methods} - \section{Results} + \section{Results and Discussion} - \section{Discussion and Conclusion} + \section{Conclusion} \bibliographystyle{humannat} \bibliography{references} From 3ebdfb7de7324d4cf5fb22ad5378b2c2a9b29fb1 Mon Sep 17 00:00:00 2001 From: Silver-T Date: Thu, 24 May 2018 20:36:35 +1000 Subject: [PATCH 2/8] Cleaned a little bit of code --- mini_proj/waldo_model.py | 77 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 73 insertions(+), 4 deletions(-) diff --git a/mini_proj/waldo_model.py b/mini_proj/waldo_model.py index ed09794..f62e5c9 100644 --- a/mini_proj/waldo_model.py +++ b/mini_proj/waldo_model.py @@ -25,7 +25,7 @@ from keras.utils import to_categorical ''' Model definition define the network structure ''' -def FCN(): +def CNN(): ## List of model layers inputs = Input((3, 64, 64)) @@ -33,7 +33,6 @@ def FCN(): m_pool1 = MaxPooling2D(pool_size=(2, 2))(conv1) conv2 = Conv2D(32, (3, 3), activation='relu', padding='same')(m_pool1) - #drop1 = Dropout(0.2)(conv2) # Drop some portion of features to prevent overfitting m_pool2 = MaxPooling2D(pool_size=(2, 2))(conv2) conv3 = Conv2D(32, (3, 3), activation='relu', padding='same')(m_pool2) @@ -47,13 +46,81 @@ def FCN(): drop3 = Dropout(0.2)(dense) classif = Dense(2, activation='sigmoid')(drop3) # Final layer to classify - ## Define the model structure + ## Define the model start and end model = Model(inputs=inputs, outputs=classif) # Optimizer recommended Adadelta values (lr=0.01) model.compile(optimizer=Adam(), loss='binary_crossentropy', metrics=['accuracy', f1]) return model +''' +Model definition for a fully convolutional (no dense layers) network structure +''' +def FCN(): + ## List of model layers + inputs = Input((3, 64, 64)) + + conv1 = Conv2D(16, (3, 3), activation='relu', padding='same', input_shape=(64, 64, 3))(inputs) + m_pool1 = MaxPooling2D(pool_size=(2, 2))(conv1) + + conv2 = Conv2D(32, (3, 3), activation='relu', padding='same')(m_pool1) + m_pool2 = MaxPooling2D(pool_size=(2, 2))(conv2) + + conv3 = Conv2D(32, (3, 3), activation='relu', padding='same')(m_pool2) + drop2 = Dropout(0.2)(conv3) # Drop some portion of features to prevent overfitting + m_pool2 = MaxPooling2D(pool_size=(2, 2))(drop2) + + conv4 = Conv2D(64, (2, 2), activation='relu', padding='same')(m_pool2) + + flat = Flatten()(conv4) # Makes data 1D + drop3 = Dropout(0.2)(flat) + classif = Dense(2, activation='sigmoid')(drop3) # Final layer to classify + + ## Define the model start and end + model = Model(inputs=inputs, outputs=classif) + # Optimizer recommended Adadelta values (lr=0.01) + model.compile(optimizer=Adam(), loss='binary_crossentropy', metrics=['accuracy', f1]) + + return model + + +''' +Model definition for the network structure of LeNet +Note: LeNet was designed to classify into 10 classes, but we are only performing binary classification +''' +def LeNet(): + ## List of model layers + inputs = Input((3, 64, 64)) + + conv1 = Conv2D(6, (5, 5), activation='relu', padding='valid', input_shape=(64, 64, 3))(inputs) + m_pool1 = MaxPooling2D(pool_size=(2, 2))(conv1) + + conv2 = Conv2D(16, (5, 5), activation='relu', padding='valid')(m_pool1) + m_pool2 = MaxPooling2D(pool_size=(2, 2))(conv2) + + flat = Flatten()(m_pool2) # Makes data 1D + + dense1 = Dense(120, activation='relu')(flat) # Fully connected layer + dense2 = Dense(84, activation='relu')(dense1) # Fully connected layer + drop3 = Dropout(0.2)(dense2) + classif = Dense(2, activation='sigmoid')(drop3) # Final layer to classify + + ## Define the model start and end + model = Model(inputs=inputs, outputs=classif) + model.compile(optimizer=Adam(), loss='binary_crossentropy', metrics=['accuracy', f1]) + + return model + +''' +AlexNet architecture +''' +def AlexNet(): + inputs = Input(shape=(3, 64, 64)) + + + return model + + def f1(y_true, y_pred): def recall(y_true, y_pred): """Recall metric. @@ -110,14 +177,16 @@ lbl_train = to_categorical(lbl_train) # One hot encoding the labels lbl_test = to_categorical(lbl_test) ## Define model +#model = CNN() model = FCN() +#model = LeNet() # svm_iclf = ImageClassifier(svm.SVC) # tree_iclf = ImageClassifier(tree.DecisionTreeClassifier) # naive_bayes_iclf = ImageClassifier(naive_bayes.GaussianNBd) # ensemble_iclf = ImageClassifier(ensemble.RandomForestClassifier) ## Define training parameters -epochs = 10 # an epoch is one forward pass and back propogation of all training data +epochs = 25 # an epoch is one forward pass and back propogation of all training data batch_size = 150 # batch size - number of training example used in one forward/backward pass # (higher batch size uses more memory, smaller batch size takes more time) #lrate = 0.01 # Learning rate of the model - controls magnitude of weight changes in training the NN From b8596e9575ebf8f9de006f27a3ae140563e17804 Mon Sep 17 00:00:00 2001 From: "Jip J. Dekker" Date: Fri, 25 May 2018 10:35:53 +1000 Subject: [PATCH 3/8] Add initial version of the introduction --- mini_proj/report/waldo.png | Bin 0 -> 87922 bytes mini_proj/report/waldo.tex | 52 +++++++++++++++++++++++++++++++++---- 2 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 mini_proj/report/waldo.png diff --git a/mini_proj/report/waldo.png b/mini_proj/report/waldo.png new file mode 100644 index 0000000000000000000000000000000000000000..cdb7dc6f31dfe0b2317692ecc3354f19546dd54f GIT binary patch literal 87922 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 literal 0 HcmV?d00001 diff --git a/mini_proj/report/waldo.tex b/mini_proj/report/waldo.tex index 1dbad7c..08e2e1d 100644 --- a/mini_proj/report/waldo.tex +++ b/mini_proj/report/waldo.tex @@ -20,7 +20,7 @@ \usepackage{natbib} \begin{document} - \title{What is waldo} + \title{What is Waldo?} \author{Kelvin Davis \and Jip J. Dekker\and Anthony Silvestere} \maketitle @@ -30,13 +30,55 @@ \section{Introduction} - \section{Background} + Almost every child around the world knows about ``Where's Waldo?'', also + known as ``Where's Wally?'' in some countries. This famous puzzle book has + spread its way across the world and is published in more than 25 different + languages. The idea behind the books is to find the character ``Waldo'', + shown in \Cref{fig:waldo}, in the different pictures in the book. This is, + however, not as easy as it sounds. Every picture in the book is full of tiny + details and Waldo is only one out of many. The puzzle is made even harder by + the fact that Waldo is not always fully depicted, sometimes it is just his + head or his torso popping out from behind something else. Lastly, the reason + that even adults will have trouble spotting Waldo is the fact that the + pictures are full of ``Red Herrings'': things that look like (or are colored + as) Waldo, but are not actually Waldo. - \section{Methods} + \begin{figure}[ht] + \includegraphics[scale=0.35]{waldo} + \centering + \caption{A headshot of the character ``Waldo'', or ``Wally''. Pictures of + Waldo copyrighted by Martin Handford used under the fair-use policy.} + \label{fig:waldo} + \end{figure} - \section{Results and Discussion} + The task of finding Waldo is something that relates to a lot of real life + image recognition tasks. Fields like mining, astronomy, surveillance, + radiology, and microbiology often have to analyse images (or scans) to find + the tiniest details, sometimes undetectable by the human eye. These tasks + are especially hard when the thing(s) you are looking for are similar to the + rest of the images. These tasks are thus generally performed using computers + to identify possible matches. - \section{Conclusion} + ``Where's Waldo?'' offers us a great tool to study this kind of problem in a + setting that is humanly tangible. In this report we will try to identify + Waldo in the puzzle images using different classification methods. Every + image will be split into different segments and every segment will have to + be classified as either being ``Waldo'' or ``not Waldo''. We will compare + various different classification methods from more classical machine + learning, like naive Bayes classifiers, to the currently state of the art, + Neural Networks. In \Cref{sec:background} we will introduce the different + classification methods, \Cref{sec:methods} will explain the way in which + these methods are trained and how they will be evaluated, in + \Cref{sec:results} will discuss the results, and \Cref{sec:conclusion} will + offer our final conclusions. + + \section{Background} \label{sec:background} + + \section{Methods} \label{sec:methods} + + \section{Results and Discussion} \label{sec:results} + + \section{Conclusion} \label{sec:conclusion} \bibliographystyle{humannat} \bibliography{references} From ca966cb12e56012a83eae8962441635bc548f71f Mon Sep 17 00:00:00 2001 From: "Jip J. Dekker" Date: Fri, 25 May 2018 11:31:55 +1000 Subject: [PATCH 4/8] Add intro and references to the background section --- mini_proj/report/references.bib | 35 ++++++++++++++++++++++++ mini_proj/report/waldo.tex | 47 ++++++++++++++++++++++++++++++--- 2 files changed, 79 insertions(+), 3 deletions(-) diff --git a/mini_proj/report/references.bib b/mini_proj/report/references.bib index e69de29..69700f7 100644 --- a/mini_proj/report/references.bib +++ b/mini_proj/report/references.bib @@ -0,0 +1,35 @@ +@techreport{knn, + title={Discriminatory analysis-nonparametric discrimination: consistency properties}, + author={Fix, Evelyn and Hodges Jr, Joseph L}, + year={1951}, + institution={California Univ Berkeley} +} +@article{svm, + title={Support-vector networks}, + author={Cortes, Corinna and Vapnik, Vladimir}, + journal={Machine learning}, + volume={20}, + number={3}, + pages={273--297}, + year={1995}, + publisher={Springer} +} +@article{naivebayes, + title={Idiot's Bayes—not so stupid after all?}, + author={Hand, David J and Yu, Keming}, + journal={International statistical review}, + volume={69}, + number={3}, + pages={385--398}, + year={2001}, + publisher={Wiley Online Library} +} +@article{randomforest, + title={Classification and regression by randomForest}, + author={Liaw, Andy and Wiener, Matthew and others}, + journal={R news}, + volume={2}, + number={3}, + pages={18--22}, + year={2002} +} diff --git a/mini_proj/report/waldo.tex b/mini_proj/report/waldo.tex index 08e2e1d..0cc2217 100644 --- a/mini_proj/report/waldo.tex +++ b/mini_proj/report/waldo.tex @@ -19,6 +19,9 @@ \usepackage{bookmark} \usepackage{natbib} + \usepackage{xcolor} + \newcommand{\todo}[1]{\marginpar{{\textsf{TODO}}}{\textbf{\color{red}[#1]}}} + \begin{document} \title{What is Waldo?} \author{Kelvin Davis \and Jip J. Dekker\and Anthony Silvestere} @@ -46,8 +49,10 @@ \begin{figure}[ht] \includegraphics[scale=0.35]{waldo} \centering - \caption{A headshot of the character ``Waldo'', or ``Wally''. Pictures of - Waldo copyrighted by Martin Handford used under the fair-use policy.} + \caption{ + A headshot of the character ``Waldo'', or ``Wally''. Pictures of Waldo + copyrighted by Martin Handford and are used under the fair-use policy. + } \label{fig:waldo} \end{figure} @@ -74,13 +79,49 @@ \section{Background} \label{sec:background} + The classification methods used can separated into two separate groups: + classical machine learning methods and neural network architectures. Many of + the classical machine learning algorithms have variations and improvements + for various purposes; however, for this report we will be using their only + their basic versions. In contrast, we will use different neural network + architectures, as this method is currently the most used for image + classification. + + \subsection{Classical Machine Learning Methods} + + \paragraph{Naive Bayes Classifier} + + \cite{naivebayes} + + \paragraph{$k$-Nearest Neighbors} + + ($k$-NN) \cite{knn} + + \paragraph{Support Vector Machine} + + \cite{svm} + + \paragraph{Random Forest} + + \cite{randomforest} + + \subsection{Neural Network Architectures} + \todo{Did we only do the three in the end? (Alexnet?)} + + \paragraph{Convolutional Neural Networks} + + \paragraph{LeNet} + + \paragraph{Fully Convolutional Neural Networks} + + \section{Methods} \label{sec:methods} \section{Results and Discussion} \label{sec:results} \section{Conclusion} \label{sec:conclusion} - \bibliographystyle{humannat} + \bibliographystyle{alpha} \bibliography{references} \end{document} From afb5b1d971af1f7c7b84ccd7db92b10a6b73c2fd Mon Sep 17 00:00:00 2001 From: "Jip J. Dekker" Date: Fri, 25 May 2018 11:36:49 +1000 Subject: [PATCH 5/8] Small fixes --- mini_proj/report/waldo.tex | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mini_proj/report/waldo.tex b/mini_proj/report/waldo.tex index 25703ef..27416de 100644 --- a/mini_proj/report/waldo.tex +++ b/mini_proj/report/waldo.tex @@ -72,7 +72,7 @@ various different classification methods from more classical machine learning, like naive Bayes classifiers, to the currently state of the art, Neural Networks. In \Cref{sec:background} we will introduce the different - classification methods, \Cref{sec:methods} will explain the way in which + classification methods, \Cref{sec:method} will explain the way in which these methods are trained and how they will be evaluated, in \Cref{sec:results} will discuss the results, and \Cref{sec:conclusion} will offer our final conclusions. @@ -117,7 +117,7 @@ \todo{This paper is mad \cite{Kotsiantis2007}.} - \section{Methods} + \section{Method} \label{sec:method} % Kelvin Start \subsection{Benchmarking}\label{benchmarking} @@ -135,7 +135,6 @@ statistics include: \begin{itemize} - \tightlist \item \textbf{Accuracy:} \[a = \dfrac{|correct\ predictions|}{|predictions|} = \dfrac{tp + tn}{tp + tn + fp + fn}\] From 73ac8cc3505ebd3fa446aa174eb69f1fc7f3cb8b Mon Sep 17 00:00:00 2001 From: "Jip J. Dekker" Date: Fri, 25 May 2018 11:41:52 +1000 Subject: [PATCH 6/8] Added the recommended paper in the classical ML intro --- mini_proj/report/waldo.tex | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mini_proj/report/waldo.tex b/mini_proj/report/waldo.tex index 27416de..ae18c3e 100644 --- a/mini_proj/report/waldo.tex +++ b/mini_proj/report/waldo.tex @@ -89,6 +89,11 @@ \subsection{Classical Machine Learning Methods} + The following paragraphs will give only brief descriptions of the different + classical machine learning methods used in this reports. For further reading + we recommend reading ``Supervised machine learning: A review of + classification techniques'' \cite{Kotsiantis2007}. + \paragraph{Naive Bayes Classifier} \cite{naivebayes} @@ -115,8 +120,6 @@ \paragraph{Fully Convolutional Neural Networks} - \todo{This paper is mad \cite{Kotsiantis2007}.} - \section{Method} \label{sec:method} % Kelvin Start From 1e0631c84dbccf77da73a657e0c1f6bbe9fe7f20 Mon Sep 17 00:00:00 2001 From: Silver-T Date: Fri, 25 May 2018 11:44:59 +1000 Subject: [PATCH 7/8] Added image preprocessing information --- mini_proj/report/references.bib | 1 + mini_proj/report/waldo.tex | 51 +++++++++++++++++++++++++++++---- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/mini_proj/report/references.bib b/mini_proj/report/references.bib index e69de29..fefbbe7 100644 --- a/mini_proj/report/references.bib +++ b/mini_proj/report/references.bib @@ -0,0 +1 @@ +@misc{openData, title={Open Database License (ODbL) v1.0}, url={https://opendatacommons.org/licenses/odbl/1.0/}, journal={Open Data Commons}, year={2018}, month={Feb}} \ No newline at end of file diff --git a/mini_proj/report/waldo.tex b/mini_proj/report/waldo.tex index da620bb..0c6dd95 100644 --- a/mini_proj/report/waldo.tex +++ b/mini_proj/report/waldo.tex @@ -6,8 +6,8 @@ \usepackage[justification=centering]{caption} % Used for captions \captionsetup[figure]{font=small} % Makes captions small \newcommand\tab[1][0.5cm]{\hspace*{#1}} % Defines a new command to use 'tab' in text - % Math package - \usepackage{amsmath} + \usepackage[comma, numbers]{natbib} % Used for the bibliography + \usepackage{amsmath} % Math package % Enable that parameters of \cref{}, \ref{}, \cite{}, ... are linked so that a reader can click on the number an jump to the target in the document \usepackage{hyperref} %enable \cref{...} and \Cref{...} instead of \ref: Type of reference included in the link @@ -18,6 +18,7 @@ % Easier compilation \usepackage{bookmark} \usepackage{natbib} + \bibliographystyle{ieeetr} \begin{document} \title{Waldo discovery using Neural Networks} @@ -32,13 +33,53 @@ \section{Background} - \section{Methods} + A couple of papers that may be useful: + - LeNet: http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf + - AlexNet: http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks + - General comparison of LeNet and AlexNet: + "On the Performance of GoogLeNet and AlexNet Applied to Sketches", Pedro Ballester and Ricardo Matsumura Araujo + - Deep NN Architecture: + https://www-sciencedirect-com.ezproxy.lib.monash.edu.au/science/article/pii/S0925231216315533 + \section{Methods} + \tab + In order to effectively utilize the aforementioned modelling and classification techniques, a key consideration is the data they are acting on. + A dataset containing Waldo and non-Waldo images was obtained from an Open Database\footnote{``The Open Database License (ODbL) is a license agreement intended to allow users to freely share, modify, and use [a] Database while maintaining [the] same freedom for others"\cite{openData}}hosted on the predictive modelling and analytics competition framework, Kaggle. + The distinction between images containing Waldo, and those that do not, was providied by the separation of the images in different sub-directories. + It was therefore necessary to preprocess these images before they could be utilised by the proposed machine learning algorithms. + + \subsection{Image Processing} + \tab + The Waldo image database consists of images of size 64$\times$64, 128$\times$128, and 256$\times$256 pixels obtained by dividing complete Where's Waldo? puzzles. + Within each set of images, those containing Waldo are located in a folder called `waldo', and those not containing Waldo, in a folder called `not\_waldo'. + Since Where's Waldo? puzzles are usually densely populated and contain fine details, the 64$\times$64 pixel set of images were selected to train and evaluate the machine learning models. + These images provide the added benefit of containing the most individual images of the three size groups. + \\ + \par + Each of the 64$\times$64 pixel images were inserted into a Numpy + \footnote{Numpy is a popular Python programming library for scientific computing} + array of images, and a binary value was inserted into a seperate list at the same index. + These binary values form the labels for each image (waldo or not waldo). + Colour normalisation was performed on each so that artefacts in an image's colour profile correspond to meaningful features of the image (rather than photographic method). + \\ + \par + Each original puzzle is broken down into many images, and only contains one Waldo. Although Waldo might span multiple 64$\times$64 pixel squares, this means that the non-Waldo data far outnumbers the Waldo data. + To combat the bias introduced by the skewed data, all Waldo images were artificially augmented by performing random rotations, reflections, and introducing random noise in the image to produce news images. + In this way, each original Waldo image was used to produce an additional 10 variations of the image, inserted into the image array. + This provided more variation in the true positives of the data set and assists in the development of more robust methods by exposing each technique to variations of the image during the training phase. + \\ + \par + Despite the additional data, there were still over ten times as many non-Waldo images than Waldo images. + Therefore, it was necessary to cull the no-Waldo data, so that there was an even split of Waldo and non-Waldo images, improving the representation of true positives in the image data set. + \\ \section{Results} \section{Discussion and Conclusion} - \bibliographystyle{humannat} + \clearpage % Ensures that the references are on a seperate page + \pagebreak + % References + \section{References} + \renewcommand{\refname}{} \bibliography{references} - \end{document} From bb1b40ab2e9fd754c90e2a1b411c50ef3d695589 Mon Sep 17 00:00:00 2001 From: "Jip J. Dekker" Date: Fri, 25 May 2018 11:55:17 +1000 Subject: [PATCH 8/8] Add description of kNN --- mini_proj/report/waldo.tex | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mini_proj/report/waldo.tex b/mini_proj/report/waldo.tex index ae18c3e..2b101de 100644 --- a/mini_proj/report/waldo.tex +++ b/mini_proj/report/waldo.tex @@ -100,7 +100,13 @@ \paragraph{$k$-Nearest Neighbors} - ($k$-NN) \cite{knn} + ($k$-NN) \cite{knn} is one of the simplest machine learning algorithms. It + classifies a new instance based on its ``distance'' to the known instances. + It will find the $k$ closest instances to the new instance and assign the + new instance the class that the majority of the $k$ closest instances has. + The method has to be configured in several ways: the number of $k$, the + distance measure, and (depending on $k$) a tie breaking measure all have to + be chosen. \paragraph{Support Vector Machine}