Commit 4dc9416defb5bf3cde50339040a408bce51b1b8b

Authored by Scott Klum
2 parents 67c937ce a039342e

Merge branch 'master' of https://github.com/biometrics/openbr

openbr/plugins/core/likely.cpp
@@ -11,7 +11,8 @@ namespace br @@ -11,7 +11,8 @@ namespace br
11 * \ingroup transforms 11 * \ingroup transforms
12 * \brief Generic interface to Likely JIT compiler 12 * \brief Generic interface to Likely JIT compiler
13 * 13 *
14 - * www.liblikely.org 14 + * - [Homepage](www.liblikely.org)
  15 + * - [API Documentation](https://s3.amazonaws.com/liblikely/doxygen/index.html)
15 * \author Josh Klontz \cite jklontz 16 * \author Josh Klontz \cite jklontz
16 */ 17 */
17 class LikelyTransform : public Transform 18 class LikelyTransform : public Transform
share/openbr/likely/face_recognition.tex
@@ -21,6 +21,7 @@ As Likely is a literate programming language, this document is both the source c @@ -21,6 +21,7 @@ As Likely is a literate programming language, this document is both the source c
21 \end{abstract} 21 \end{abstract}
22 22
23 \section{Compilation} 23 \section{Compilation}
  24 +\label{sec:compilation}
24 This document is a valid \LaTeX\ file that can be rendered for reading by humans. 25 This document is a valid \LaTeX\ file that can be rendered for reading by humans.
25 26
26 \begin{verbatim} 27 \begin{verbatim}
@@ -34,9 +35,10 @@ $ likely -p 'data := "path/to/training/data.lm".read-matrix' \ @@ -34,9 +35,10 @@ $ likely -p 'data := "path/to/training/data.lm".read-matrix' \
34 face_recognition.tex face_recognition.o 35 face_recognition.tex face_recognition.o
35 \end{verbatim} 36 \end{verbatim}
36 37
37 -Note that the outputted \emph{face\_recognition.o} native object file exposes its functionality through a C-compatible signature. 38 +Note that the outputted \texttt{face\_recognition.o} native object file exposes its functionality through a C-compatible signature.
38 39
39 \begin{verbatim} 40 \begin{verbatim}
  41 +#include <likely.h>
40 likely_mat face_recognition(likely_const_mat src); 42 likely_mat face_recognition(likely_const_mat src);
41 \end{verbatim} 43 \end{verbatim}
42 44
@@ -50,10 +52,12 @@ face-recognition := @@ -50,10 +52,12 @@ face-recognition :=
50 \end{likely} 52 \end{likely}
51 53
52 Throughout the remainder of this document we will append additional steps to this function, building up the entire algorithm one transformation at a time. 54 Throughout the remainder of this document we will append additional steps to this function, building up the entire algorithm one transformation at a time.
53 -It is the responsibility of each section in this document to update the \emph{face-recognition} function and the training data.  
54 -In this way the sections maintain independence, and the algorithm can be changed by inserting, removing, or editing sections of this document. 55 +It is the responsibility of each section in this document to update the \texttt{face-recognition} function and the training \texttt{data}.
  56 +It is in this way that the sections maintain independence, and the algorithm can be changed by inserting, removing, or editing sections of this document.
  57 +Remember that the \emph{Likely Language Reference}\footnote{https://s3.amazonaws.com/liblikely/latex/standard.pdf} is a good resource to consult if you are uncertain about the meaning of some code.
55 58
56 -Note that the remainder of this document assumes that the global variable \emph{data} is defined, and contains the appropriate training samples. 59 +Note that the remainder of this document assumes that the global variable
  60 +\texttt{data} is defined, and contains the appropriate training samples.
57 61
58 \begin{likely} 62 \begin{likely}
59 "Number of training samples:" 63 "Number of training samples:"
@@ -73,19 +77,18 @@ Such a normalization has been observed to improve accuracy when comparing featur @@ -73,19 +77,18 @@ Such a normalization has been observed to improve accuracy when comparing featur
73 normalize-l2 := 77 normalize-l2 :=
74 src :-> 78 src :->
75 { 79 {
76 - norm := (new f32T src.channels 1 src.rows src.frames null)  
77 - (norm src) :=> 80 + dst := src.imitate
  81 + len := src.columns
  82 + ((src.channels 1 src.rows src.frames)
  83 + dst src len) :=>
78 { 84 {
79 - add-squared-element :=  
80 - x :->  
81 - norm :<- (+ norm src.f32.sq)  
82 - (iter add-squared-element src.columns)  
83 - norm :<- (/ 1 (sqrt norm)) 85 + norm := 0.(cast src).$
  86 + (iter (-> x (<- norm (+ norm src.sq)))
  87 + len)
  88 + norm := (/ 1 (sqrt norm))
  89 + (iter (-> x (<- dst (* src norm)))
  90 + len)
84 } 91 }
85 -  
86 - dst := src.imitate  
87 - (dst src norm) :=>  
88 - dst :<- (* src norm)  
89 } 92 }
90 \end{likely} 93 \end{likely}
91 94
@@ -149,7 +152,7 @@ data.columns @@ -149,7 +152,7 @@ data.columns
149 \end{likely} 152 \end{likely}
150 153
151 \section{Entry Point} 154 \section{Entry Point}
152 -The entry point to the outside world is a single C function \texttt{face\_recognition} that takes as input a \texttt{likely\_mat} (the input image) and outputs a new \texttt{likely\_mat} (the feature vector). 155 +Recall from section \ref{sec:compilation} that the entry point to the outside world is a single C function \texttt{face\_recognition} that takes as input a \texttt{likely\_mat} (the input image) and outputs a new \texttt{likely\_mat} (the feature vector). Now that we have finished defining \texttt{face-recognition} we can finally export this symbol.
153 156
154 \begin{likely} 157 \begin{likely}
155 (extern u8X "face_recognition" f32X face-recognition) 158 (extern u8X "face_recognition" f32X face-recognition)