-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f7e06dd
commit ffd4bde
Showing
7 changed files
with
630 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
# Makefile for LaTeX documents | ||
# | ||
# Intended for use in Linux and Git Bash | ||
# TeXstudio (MiKTeX) compatibility through TeX directives | ||
# | ||
# by Dominik Mueller (@MuellerDominik) | ||
# | ||
# Targets: | ||
# | ||
# all Build document if necessary | ||
# build Always (re)build document | ||
# pdflatex Run pdfLaTeX | ||
# debug Run pdfLaTeX in verbose mode | ||
# bibliography, bib Run biber | ||
# glossary, makeglossaries Run makeglossaries | ||
# snapshot Create snapshot | ||
# remove-snapshots Remove all snapshots | ||
# directives Add proper TeX directives | ||
# remove-directives Remove all TeX directives | ||
# clean Remove auxiliary files | ||
# purge Remove all generated files | ||
|
||
# Document name | ||
DOCUMENT = fact-sheet | ||
OUTPUT = p5_aionfpga_fact-sheet_canzani_mueller | ||
|
||
# Directories and auxiliary files | ||
TEMP_DIR = temp | ||
BUILD_DIR = build | ||
SECTIONS_DIR = sections | ||
SNAPSHOTS_DIR = snapshots | ||
PDF_FILE = $(BUILD_DIR)/$(OUTPUT).pdf | ||
BIB_FILE = $(BUILD_DIR)/$(OUTPUT).bcf | ||
GLOSS_FILE = $(BUILD_DIR)/$(OUTPUT).glo | ||
|
||
# Source files (omit whitespaces) and timestamp | ||
TEX_FILES := $(shell find . -name "*.tex") | ||
TIMESTAMP := $(shell date +%Y-%m-%d_%H-%M-%S) | ||
|
||
# Document ID (sliced for TeX directive 'document-id') | ||
DOC_ID := $(shell echo -n $(TIMESTAMP) | sha256sum | cut -c1-32) | ||
DOC_ID1 := $(shell echo -n $(DOC_ID) | cut -c1-8) | ||
DOC_ID2 := $(shell echo -n $(DOC_ID) | cut -c9-12) | ||
DOC_ID3 := $(shell echo -n $(DOC_ID) | cut -c13-16) | ||
DOC_ID4 := $(shell echo -n $(DOC_ID) | cut -c17-20) | ||
DOC_ID5 := $(shell echo -n $(DOC_ID) | cut -c21-32) | ||
|
||
# Commands (with their respective arguments) | ||
PDFLATEX_ARGS = -output-directory=$(BUILD_DIR) -jobname=$(OUTPUT) $(DOCUMENT) | ||
PDFLATEX = pdflatex -interaction=batchmode $(PDFLATEX_ARGS) > /dev/null 2>&1 | ||
PDFLATEX_DEBUG = pdflatex -interaction=nonstopmode -halt-on-error $(PDFLATEX_ARGS) | ||
BIBLIOGRAPHY = biber --onlylog --output-directory $(BUILD_DIR) $(OUTPUT) | ||
GLOSSARY = makeglossaries -q -d $(BUILD_DIR) $(OUTPUT) | ||
|
||
# TeX directives for TeXstudio with MiKTeX on Windows (Perl installed) | ||
DIR_ID = % !TeX document-id = {$(DOC_ID1)-$(DOC_ID2)-$(DOC_ID3)-$(DOC_ID4)-$(DOC_ID5)} | ||
DIR_COMPILE = % !TeX TXS-program:compile = pdflatex -synctex=1 -interaction=nonstopmode $(PDFLATEX_ARGS).tex | ||
DIR_BIB = % !TeX TXS-program:bibliography = biber --output-directory $(BUILD_DIR) $(OUTPUT) | ||
DIR_GLOSS = % !TeX TXS-program:glossary = makeglossaries -d $(BUILD_DIR) $(OUTPUT) | ||
DIR_VIEW = % !TeX TXS-program:view = txs:///view-pdf ./$(BUILD_DIR)/$(OUTPUT).pdf | ||
DIRECTIVES = $(DIR_ID)\n$(DIR_COMPILE)\n$(DIR_BIB)\n$(DIR_GLOSS)\n$(DIR_VIEW)\n\n | ||
|
||
# Rebuilds document if source files (*.tex only) have been changed | ||
.PHONY: all | ||
all: $(PDF_FILE) | ||
|
||
.PHONY: build | ||
build $(PDF_FILE): $(TEX_FILES) | ||
@mkdir -p $(BUILD_DIR)/$(SECTIONS_DIR)/ | ||
@$(PDFLATEX) | ||
@$(BIBLIOGRAPHY) | ||
@$(GLOSSARY) | ||
@$(PDFLATEX) | ||
@$(PDFLATEX) | ||
|
||
.PHONY: pdflatex | ||
pdflatex $(BIB_FILE) $(GLOSS_FILE): | ||
@$(PDFLATEX) | ||
|
||
.PHONY: debug | ||
debug: | ||
@$(PDFLATEX_DEBUG) | ||
|
||
.PHONY: bibliography bib | ||
bibliography bib: $(BIB_FILE) | ||
@$(BIBLIOGRAPHY) | ||
|
||
.PHONY: glossary makeglossaries | ||
glossary makeglossaries: $(GLOSS_FILE) | ||
@$(GLOSSARY) | ||
|
||
.PHONY: snapshot | ||
snapshot: | ||
@mkdir -p $(SNAPSHOTS_DIR)/ | ||
@cp -f $(PDF_FILE) $(SNAPSHOTS_DIR)/$(OUTPUT)_$(TIMESTAMP).pdf | ||
|
||
.PHONY: remove-snapshots | ||
remove-snapshots: | ||
@rm -rf $(SNAPSHOTS_DIR)/ | ||
|
||
# Removes all TeX directives and prepends the ones specified in this Makefile | ||
.PHONY: directives | ||
directives: | ||
@sed -i '/^% !TeX/d' $(DOCUMENT).tex | ||
@sed -i '/./,$$!d' $(DOCUMENT).tex | ||
@sed -i '1s;^;$(DIRECTIVES);' $(DOCUMENT).tex | ||
|
||
# Removes all TeX directives and leading blank lines | ||
.PHONY: remove-directives | ||
remove-directives: | ||
@sed -i '/^% !TeX/d' $(DOCUMENT).tex | ||
@sed -i '/./,$$!d' $(DOCUMENT).tex | ||
|
||
.PHONY: clean | ||
clean: | ||
@mkdir -p $(TEMP_DIR)/ | ||
@cp -f $(PDF_FILE) $(TEMP_DIR)/$(OUTPUT).pdf > /dev/null 2>&1 || : | ||
@rm -rf $(BUILD_DIR)/* > /dev/null 2>&1 || : | ||
@cp -f $(TEMP_DIR)/$(OUTPUT).pdf $(PDF_FILE) > /dev/null 2>&1 || : | ||
@rm -rf $(TEMP_DIR)/ | ||
|
||
.PHONY: purge | ||
purge: | ||
@rm -rf $(BUILD_DIR)/ $(TEMP_DIR)/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
\title{AI High-Performance Solution on FPGA} | ||
|
||
\team{Nico Canzani, Dominik M\"uller} | ||
|
||
% \client{FHNW Institute for Sensors and Electronics} | ||
\client{Inst. for Sensors and Electronics} | ||
% \client{FHNW / ISE} | ||
|
||
\coaches{% | ||
Prof. Michael Pichler,\\ | ||
Prof. Dr. Hanspeter Schmid | ||
} | ||
|
||
\repo{https://git.io/p5-aionfpga} | ||
% curl -i https://git.io -F "url=https://github.com/MuellerDominik/P5-AIonFPGA/" -F "code=p5-aionfpga" | ||
|
||
\fssummary{ | ||
In a world of self-driving cars and automated quality control in manufacturing, real-time image classification is becoming increasingly important. | ||
% Artificial intelligence, and deep learning in particular, are achieving excellent classification accuracies, but there are some challenges. | ||
Artificial intelligence (AI), and deep learning in particular, are achieving excellent classification accuracies. | ||
% However, a large labeled dataset of training data is required to train deep convolutional neural networks. | ||
% However, a large labeled dataset of training data is required to train a convolutional neural networks (CNN). | ||
However, the training of a convolutional neural network (CNN) requires a sufficiently large labeled dataset. | ||
% However, the training of a deep convolutional neural network (CNN) required a sufficiently large labeled dataset. | ||
} | ||
|
||
\fsgraphics{ | ||
\begin{minipage}[t]{0.5\textwidth} | ||
\begin{minipage}[t]{0.98\textwidth} | ||
\includegraphics[width=\textwidth]{graphics/1574952009_278_10_stuffed-bunny.png} | ||
\graphicscaption{Image of the \textit{Stuffed Bunny}} % Example / Sample | ||
\end{minipage} | ||
\end{minipage}% | ||
\begin{minipage}[t]{0.5\textwidth} | ||
\begin{flushright} | ||
\begin{minipage}[t]{0.98\textwidth} | ||
\includegraphics[width=\textwidth]{graphics/1574943825_125_8_hand-featherball.png} | ||
\graphicscaption{Image of the \textit{Hand Featherball}} % Example / Sample | ||
\end{minipage} | ||
\end{flushright} | ||
\end{minipage} | ||
} | ||
|
||
\fscontent{ | ||
% \section{Problem Statement} | ||
\section{Difficulty} | ||
Collecting a sufficiently large dataset of pictures is not trivial. | ||
When done manually, the camera has to be started and stopped for each throw. | ||
This likely creates many empty frames at the beginning and at the end of the capture. | ||
Those empty and therefore invalid frames must be removed to avoid errors during the training of the CNN later on. | ||
Furthermore, each valid frame must be labeled. | ||
This procedure is very error-prone if it is performed manually for each individual frame. | ||
|
||
\newcol | ||
\section{Software} | ||
% To reliably detect a throw, a simple image change detection algorithm is implemented. | ||
% It requires a repeated difference computation and therefore a circular buffer is used. | ||
% To simplify this task, a camera throw detection mechanism is implemented and various Python scripts are used. | ||
To simplify the image collection, a camera throw detection mechanism is implemented and various Python scripts are used. | ||
The goal of the throw detection is to extract valid frames of a throw --- with objects on them --- from the continuous data stream of the camera. | ||
Therefore, the throw detection needs to work in real time. | ||
% At a frame rate of \SI{200}{fps}, there is $<\SI{5}{ms}$ to process a single frame (without the use of parallel computing). | ||
At a frame rate of \SI{200}{fps}, there is less than \SI{5}{ms} to process a single frame. | ||
% Due to this time constraint, a simple image change detection algorithm is employed. | ||
Due to this time constraint, a simple image change detection algorithm is implemented. | ||
|
||
\newcol | ||
% \section{Labeled Dataset} | ||
\section{Dataset} | ||
% The dataset contains images of 22 different throwing objects. | ||
The dataset contains images of 22 different throwing objects, ranging from sports equipment to toys. | ||
It is fully labeled and consists of more than \num{15000} usable images with at least 480 images of each object. | ||
% All images were collected over the course of two days. | ||
% The employed software allowed to collected all images over the course of two days. | ||
The employed software made it possible to collect all images over the course of only two days. | ||
% The above images show an example image of the \textit{Stuffed Bunny} and of the \textit{Hand Featherball}. | ||
The above images are two examples from the labeled dataset. | ||
The first one shows the \textit{Stuffed Bunny} and the second one shows the \textit{Hand Featherball}. | ||
} | ||
|
||
\infobox{Throwing Booth}{ | ||
% \begin{minipage}[t][][b]{0.45\textwidth} | ||
% \includegraphics[height=50mm]{graphics/top_assembly.png} | ||
% \end{minipage}\hfill% | ||
\begin{minipage}{0.65\textwidth} | ||
The throwing booth is constructed from general-purpose aluminium profiles. | ||
% The rear panel is made of a white ABS plastic sheet for its robust impact strength and has a target hole. % features a target hole | ||
Due to its robust impact strength, the rear panel is made of a white ABS plastic sheet and has a target hole. | ||
% The side panel is made of a foamed PVC sheet to reduce light reflections. | ||
The white side panel serves as a consistent background for the images. | ||
It is made of a foamed PVC sheet with a fine-textured surface to reduce light reflections. | ||
% The image acquisition system consists of a Baumer industrial camera and a suitable lens. | ||
The image acquisition system consists of a Baumer industrial camera combined with a suitable lens. % imaging environment | ||
% Strong diffuse lighting is used to minimize the required exposure time and to evenly illuminate the side panel. | ||
Strong diffuse lighting is used to minimize the required exposure time and to illuminate the side panel as evenly as possible. | ||
% A monitor is used to display the detected object. % display the result | ||
Finally, a monitor is used to display the detected object. | ||
\end{minipage}\hfill% | ||
\begin{minipage}{0.32\textwidth} | ||
\includegraphics[width=\textwidth]{graphics/top_assembly.png} | ||
\end{minipage} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
% !TeX document-id = {f144be9f-d20a-6673-972c-41c90886e461} | ||
% !TeX TXS-program:compile = pdflatex -synctex=1 -interaction=nonstopmode -output-directory=build -jobname=p5_aionfpga_fact-sheet_canzani_mueller fact-sheet.tex | ||
% !TeX TXS-program:bibliography = biber --output-directory build p5_aionfpga_fact-sheet_canzani_mueller | ||
% !TeX TXS-program:glossary = makeglossaries -d build p5_aionfpga_fact-sheet_canzani_mueller | ||
% !TeX TXS-program:view = txs:///view-pdf ./build/p5_aionfpga_fact-sheet_canzani_mueller.pdf | ||
|
||
\documentclass[english]{fhnwfactsheet} | ||
% \usepackage{tikz} | ||
% \usepackage{lipsum} | ||
|
||
\begin{document} | ||
\includefactsheet{content.tex} | ||
\end{document} |
Oops, something went wrong.