starting adding images
All checks were successful
continuous-integration/drone/push Build is passing
BIN
images for report/base_model_page.png
Normal file
After Width: | Height: | Size: 155 KiB |
BIN
images for report/code_demo.png
Normal file
After Width: | Height: | Size: 174 KiB |
BIN
images for report/create_model.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
images for report/expand_class_part.png
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
images for report/model_data_tab.png
Normal file
After Width: | Height: | Size: 158 KiB |
BIN
images for report/model_task_tab.png
Normal file
After Width: | Height: | Size: 263 KiB |
BIN
images for report/runner_page.png
Normal file
After Width: | Height: | Size: 65 KiB |
BIN
images for report/token_page.png
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
images for report/upload_data_page.png
Normal file
After Width: | Height: | Size: 85 KiB |
@ -93,9 +93,14 @@
|
|||||||
On the web app, the user can manage existing tokens.
|
On the web app, the user can manage existing tokens.
|
||||||
Guaranteeing that only the clients that should be accessing the information are.
|
Guaranteeing that only the clients that should be accessing the information are.
|
||||||
|
|
||||||
In the management screen, the user can remove, and create tokens.
|
In the management screen, which can be seen in Fig. \ref{fig:token_page}, the user can remove, and create tokens.
|
||||||
|
|
||||||
\textbf{TODO add image}
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.5\textwidth]{token_page}
|
||||||
|
\caption{Screenshot of web application on the token control section.}
|
||||||
|
\label{fig:token_page}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
\subsubsection*{Model Management}
|
\subsubsection*{Model Management}
|
||||||
|
|
||||||
@ -111,16 +116,29 @@
|
|||||||
First, the user creates the model.
|
First, the user creates the model.
|
||||||
In this step, the user uploads a sample image of what the model will be handling.
|
In this step, the user uploads a sample image of what the model will be handling.
|
||||||
This image is used to define what the kinds of images the model will be able to intake.
|
This image is used to define what the kinds of images the model will be able to intake.
|
||||||
|
This is done in the page shown in Fig. \ref{fig:create_model}, the user provides a name for the model and an image and then presses the button create.
|
||||||
|
|
||||||
\textbf{TODO add image}
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.9\textwidth]{create_model}
|
||||||
|
\caption{Screenshot of web application on the page that allows the creation of a new model.}
|
||||||
|
\label{fig:create_model}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
The user is then shown the model page, which contains all the information about a model.
|
The user is then shown the model page, which contains all the information about a model, which can be seen in Fig. \ref{fig:model_page}.
|
||||||
This page will contain some tabs, each page gives different insight about the model.
|
|
||||||
The main page is designed to contain only actions relevant to the task it is trying to achieve.
|
|
||||||
For example, if there are no images added to the model, the user will be prompted to add an image.
|
|
||||||
Or if the model has been trained and the user can submit images, then the user will have an option to submit and image.
|
|
||||||
|
|
||||||
\textbf{TODO add image}
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.9\textwidth]{base_model_page}
|
||||||
|
\caption{Screenshot of web application on the page shows basic information about the model.}
|
||||||
|
\label{fig:model_page}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
This page contains a set of tabs a the top.
|
||||||
|
Each tab gives different insight abou the model.
|
||||||
|
The ``Model'' tab, contains only relevent actions ot the most pressing action that the user take.
|
||||||
|
In Fig. \ref{fig:model_page}, the user has created a model but has not added training data so the page shows a section where the user can input training data.
|
||||||
|
The ``Model Data'' tab contains a more detailed view about data that has been updated.
|
||||||
|
|
||||||
Currently, the system does not support resizing of images that are different from the one uploaded at the creation step.
|
Currently, the system does not support resizing of images that are different from the one uploaded at the creation step.
|
||||||
This was done to guarantee that the image that the user wants to classify is unmodified.
|
This was done to guarantee that the image that the user wants to classify is unmodified.
|
||||||
@ -128,21 +146,34 @@
|
|||||||
In the future, systems could be implemented that allow the user to select how an image can be cropped.
|
In the future, systems could be implemented that allow the user to select how an image can be cropped.
|
||||||
|
|
||||||
The second step is uploading the rest of the dataset.
|
The second step is uploading the rest of the dataset.
|
||||||
This can be done via the main page or via the dataset tab that becomes available when the data of the model is first uploaded.
|
This can be done via the ``Model'' tab or via the ``Model Data'' tab that becomes available when the data of the model is first uploaded.
|
||||||
In this tab, the user can add and remove images, as well as create new classes for the model.
|
In this tab, the user can add and remove images, as well as create new classes for the model.
|
||||||
The page also shows some useful information, such as the distribution of the dataset.
|
The page also shows some useful information, such as the distribution of the dataset, which can be seen in \ref{fig:model_data_tab}.
|
||||||
|
|
||||||
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.9\textwidth]{model_data_tab}
|
||||||
|
\caption{Screenshot of web application part of the ``Model Data'' tab}
|
||||||
|
\label{fig:model_data_tab}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
This information can be useful to more advanced users that might decide to gather more data to balance the dataset.
|
This information can be useful to more advanced users that might decide to gather more data to balance the dataset.
|
||||||
|
|
||||||
To upload the reset oof the data set, the user can upload a zip file that contains a set of classes and images corresponding to that class.
|
To upload the reset of the data set, the user can upload a zip file that contains a set of classes and images corresponding to that class.
|
||||||
That zip file is processed and images and classes are created.
|
That zip file is processed and images and classes are created.
|
||||||
|
The user is given instruction on how create the zip file so that the system can esaly process the data, the upload set can be seen in \ref{fig:upload_data_section}.
|
||||||
|
|
||||||
This process was original slow as the system did not have the capabilities to parallelize the process of importing the images, but this was implemented, and the import process was improved.
|
This process was original slow as the system did not have the capabilities to parallelize the process of importing the images, but this was implemented, and the import process was improved.
|
||||||
The improved process now takes a few seconds to process and verify the entirety of the dataset, making the experience for the end user better.
|
The improved process now takes a few seconds to process and verify the entirety of the dataset, making the experience for the end user better.
|
||||||
|
|
||||||
Alternatively, the user can use the API to create new classes and upload images.
|
Alternatively, the user can use the API to create new classes and upload images.
|
||||||
|
|
||||||
\textbf{TODO add image}
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.9\textwidth]{upload_data_page}
|
||||||
|
\caption{Screenshot of web application upload zip step of the model page.}
|
||||||
|
\label{fig:upload_data_section}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
After all the images that are required for training are uploaded, the user can go to the training step.
|
After all the images that are required for training are uploaded, the user can go to the training step.
|
||||||
This step will appear both in the main tab of the model page and in the dataset tab. Once the user instructs the system to start training, the model page will become the training page, and it will show the progress of the training of the model.
|
This step will appear both in the main tab of the model page and in the dataset tab. Once the user instructs the system to start training, the model page will become the training page, and it will show the progress of the training of the model.
|
||||||
@ -152,14 +183,19 @@
|
|||||||
When the model is finished training, the user can use the model to run inference tasks on images.
|
When the model is finished training, the user can use the model to run inference tasks on images.
|
||||||
To achieve this, the user can either use the API to submit a classification task or use the tasks tab in the web platform.
|
To achieve this, the user can either use the API to submit a classification task or use the tasks tab in the web platform.
|
||||||
|
|
||||||
In the tasks tab, the user can see current and previous tasks.
|
In the tasks tab, which can be seen in Fig. \ref{fig:update_data_section}, the user can see current and previous tasks.
|
||||||
The users can see what tasks were performed and their results.
|
The users can see what tasks were performed and their results.
|
||||||
The user can also inform the service if the task that was performed did return the correct results.
|
The user can also inform the service if the task that was performed did return the correct results.
|
||||||
This information can be used to keep track of the real accuracy of the model.
|
This information can be used to keep track of the real accuracy of the model.
|
||||||
The information can be used to see if the model needs refinement.
|
The information can be used to see if the model needs refinement.
|
||||||
The system can add the classes that failed to return the correct result to a list of the original data, to be used in case of retraining the model.
|
The system can add the classes that failed to return the correct result to a list of the original data, to be used in case of retraining the model.
|
||||||
|
|
||||||
\textbf{TODO add image}
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.6\textwidth]{model_task_tab}
|
||||||
|
\caption{Screenshot of web application on the tasks tab.}
|
||||||
|
\label{fig:upload_data_section}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
\subsubsection*{Advanced Model Management}
|
\subsubsection*{Advanced Model Management}
|
||||||
|
|
||||||
@ -176,11 +212,16 @@
|
|||||||
The user would follow all the steps that are required for normal model creation and training.
|
The user would follow all the steps that are required for normal model creation and training.
|
||||||
|
|
||||||
At the end of the process, the user will be able to add new data to the model and retrain it.
|
At the end of the process, the user will be able to add new data to the model and retrain it.
|
||||||
To achieve that, the user would simply go to the data tab and create a new class.
|
To achieve that, the user would simply go to the data tab and create a new class, which the Fig. \ref{expand_class_part} shows.
|
||||||
Once a new class is added, the webpage will inform the user that the model can be retrained.
|
Once a new class is added, the webpage will inform the user that the model can be retrained.
|
||||||
The user might choose to retrain the model now or more new classes and retrain later.
|
The user might choose to retrain the model now or more new classes and retrain later.
|
||||||
|
|
||||||
\textbf{TODO add image}
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.6\textwidth]{expand_class_part}
|
||||||
|
\caption{Screenshot of web application on the expand part of the ``Model Data'' tab.}
|
||||||
|
\label{fig:expand_class_part}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
During the entire process of creating new classes in the model and retraining the model, the user can still perform all the classifications tasks they desire.
|
During the entire process of creating new classes in the model and retraining the model, the user can still perform all the classifications tasks they desire.
|
||||||
|
|
||||||
@ -190,13 +231,17 @@
|
|||||||
|
|
||||||
Users in this tab can see what is the progress, and results of their tasks.
|
Users in this tab can see what is the progress, and results of their tasks.
|
||||||
The webpage also provides nice, easy to see statistics on the task results, allowing the user to see how the model is performing.
|
The webpage also provides nice, easy to see statistics on the task results, allowing the user to see how the model is performing.
|
||||||
|
Which is shown on Fig. \ref{fig:upload_data_section}
|
||||||
\textbf{TODO add image}
|
|
||||||
|
|
||||||
On the administrator, users should be able to change the status of tasks as well as see a more comprehensive view on how the tasks are being performed.
|
On the administrator, users should be able to change the status of tasks as well as see a more comprehensive view on how the tasks are being performed.
|
||||||
Administrator users can see the current status of runners, as well as which task the runners are doing.
|
Administrator users can see the current status of runners, as well as which task the runners are doing.
|
||||||
|
|
||||||
\textbf{TODO add image}
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.6\textwidth]{runner_page}
|
||||||
|
\caption{Screenshot of web application on the runners administrator Page.}
|
||||||
|
\label{fig:runner_page}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
\subsection{API}
|
\subsection{API}
|
||||||
@ -207,9 +252,14 @@
|
|||||||
Once the checks are done, the application creates workers, which will be explained in section \ref{impl:runner}, which when completed the API server is finally started up.
|
Once the checks are done, the application creates workers, which will be explained in section \ref{impl:runner}, which when completed the API server is finally started up.
|
||||||
|
|
||||||
Information about the API is shown around the web page so that the user can see information about the API right next to where the user would normally do the action, providing a good user interface.
|
Information about the API is shown around the web page so that the user can see information about the API right next to where the user would normally do the action, providing a good user interface.
|
||||||
As the user can get information about right where they would normally do the action.
|
As the user can get information about right where they would normally do the action, as it can be seen in Fig. \ref{fig:code_demo}.
|
||||||
|
|
||||||
\textbf{TODO add image}
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.6\textwidth]{code_demo}
|
||||||
|
\caption{Screenshot of web application that shows the explanation of the API call}
|
||||||
|
\label{fig:code_demo}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
This server will take JSON and multipart form data requests, the requests are processed, and answered with a JSON response.
|
This server will take JSON and multipart form data requests, the requests are processed, and answered with a JSON response.
|
||||||
|
|
||||||
@ -461,6 +511,14 @@
|
|||||||
|
|
||||||
The MNIST \cite{mnist} dataset was selected due to its size. It's a small dataset that can be trained quickly and can be used to verify other internal systems of the service.
|
The MNIST \cite{mnist} dataset was selected due to its size. It's a small dataset that can be trained quickly and can be used to verify other internal systems of the service.
|
||||||
|
|
||||||
|
During testing only the 9 out 10 classes are trainged and the 10th is added during the retraining process.
|
||||||
|
|
||||||
|
\subsubsection{CIFAR-10}
|
||||||
|
|
||||||
|
The MNIST \cite{mnist} dataset was selected due to its size. It's a small dataset that can be trained quickly and can be used to verify other internal systems of the service.
|
||||||
|
|
||||||
|
During testing only the 9 out 10 classes are trainged and the 10th is added during the retraining process.
|
||||||
|
|
||||||
\textbf{TODO add image}
|
\textbf{TODO add image}
|
||||||
|
|
||||||
\textbf{TODO add more datasets}
|
\textbf{TODO add more datasets}
|
||||||
@ -474,7 +532,8 @@
|
|||||||
\begin{longtable}{ | c | c | c | c | c | c |}
|
\begin{longtable}{ | c | c | c | c | c | c |}
|
||||||
\hline
|
\hline
|
||||||
Dataset & Import Time & Train Time & Classification Time & Extend Time & Accuracy \\ \hline
|
Dataset & Import Time & Train Time & Classification Time & Extend Time & Accuracy \\ \hline
|
||||||
MNIST & 0ms & 0ms & 0ms & 0ms & $98\%$ \\ \hline
|
MNIST & $8s$ & $2m$ & $1s$ & $50s$ & $98\%$ \\ \hline
|
||||||
|
CIFAR-10 & $6s$ & $41m 38s$ & $1s$ & $1m 11s$ & $95.2\%$ \\ \hline
|
||||||
\caption{Evaluation Results}
|
\caption{Evaluation Results}
|
||||||
\label{tab:eval-results}
|
\label{tab:eval-results}
|
||||||
\end{longtable}
|
\end{longtable}
|
||||||
|