# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
-# Written by Francois Fleuret, (C) IDIAP #
+# Written by Francois Fleuret #
+# (C) Idiap Research Institute #
+# #
# Contact <francois.fleuret@idiap.ch> for comments & bug reports #
#########################################################################
MAIN_URL="http://www.idiap.ch/folded-ctf"
+#########################################################################
# Compiling
make -j -k
echo
+#########################################################################
# Generating the pool file
DATA_PATH=./rmk-data
else
- echo "Can not find the RateMyKitten images in ${DATA_PATH}. You can" >&2
- echo "download them from ${MAIN_URL}" >&2
+ echo "Can not find the RateMyKitten images in ${DATA_PATH}. You can download" >&2
+ echo "them from ${MAIN_URL}" >&2
exit 1
fi
-# Running the computation per se
-
RESULT_DIR=./results
-if [[ ! -d ${RESULT_DIR} ]]; then
- mkdir ${RESULT_DIR}
-fi
+case $1 in
-for SEED in {0..9}; do
+ #####################################################################
+ ## Generate illustrating pictures
- for MODE in hb h+b; do
+ pics)
- EXPERIMENT_RESULT_DIR="${RESULT_DIR}/${MODE}-${SEED}"
+ SEED=0
- mkdir ${EXPERIMENT_RESULT_DIR} 2> /dev/null
+ EXPERIMENT_RESULT_DIR="${RESULT_DIR}/hb-${SEED}"
- if [[ $? == 0 ]]; then
+ if [[ -d "${EXPERIMENT_RESULT_DIR}" ]]; then
+
+ # Value of -1 corresponds to saving the images with the
+ # ground-truth or the pi-referentials alone, while other
+ # values show registered pi-feature windows.
- OPTS="--random-seed=${SEED} --wanted-true-positive-rate=0.75"
-
- if [[ $MODE == "h+b" ]]; then
- OPTS="${OPTS} --force-head-belly-independence=yes"
- fi
-
- if [[ $1 == "light" ]]; then
- OPTS="${OPTS} --nb-classifiers-per-level=1 --nb-weak-learners-per-classifier=10"
- OPTS="${OPTS} --proportion-for-train=0.1 --proportion-for-validation=0.1 --proportion-for-test=0.1"
- fi
-
- ./folding \
- --niceness=15 \
- --pool-name=${POOL_NAME} \
- --nb-levels=2 \
- --nb-classifiers-per-level=25 --nb-weak-learners-per-classifier=100 \
- --result-path=${EXPERIMENT_RESULT_DIR} \
- --detector-name=${EXPERIMENT_RESULT_DIR}/default.det \
- ${OPTS} \
- open-pool \
- train-detector \
- compute-thresholds \
- write-detector \
- sequence-test-detector | tee -a ${EXPERIMENT_RESULT_DIR}/stdout
+ for npf in -1 0 2500; do
+
+ ./folding --random-seed=${SEED} \
+ --pool-name=${POOL_NAME} \
+ --result-path=/tmp/ \
+ --detector-name=${EXPERIMENT_RESULT_DIR}/default.det \
+ --nb-images=63 \
+ --material-feature-nb=${npf} \
+ open-pool \
+ read-detector \
+ write-pool-images
+
+ done
else
+ echo "You have to run at least the first round completely to be able" >&2
+ echo "to generate the pictures." >&2
+ exit 1
+ fi
+
+ ;;
+
+ #####################################################################
+ ## Run the full computation
- echo "${EXPERIMENT_RESULT_DIR} exists, aborting experiment."
+ valgrind|"")
+ if [[ ! -d ${RESULT_DIR} ]]; then
+ mkdir ${RESULT_DIR}
fi
- done
+ for SEED in {0..9}; do
+
+ for MODE in hb h+b; do
+
+ EXPERIMENT_RESULT_DIR="${RESULT_DIR}/${MODE}-${SEED}"
+
+ mkdir ${EXPERIMENT_RESULT_DIR} 2> /dev/null
+
+ if [[ $? == 0 ]]; then
+
+ if [[ $MODE == "h+b" ]]; then
+ OPTS="--force-head-belly-independence=yes"
+ else
+ OPTS=""
+ fi
+
+ if [[ $1 == "valgrind" ]]; then
+ # The valgrind operation runs a simpler computation in valgrind
+ OPTS="${OPTS} --nb-classifiers-per-level=1 --nb-weak-learners-per-classifier=10"
+ OPTS="${OPTS} --proportion-for-train=0.1 --proportion-for-validation=0.025 --proportion-for-test=0.01"
+ OPTS="${OPTS} --wanted-true-positive-rate=0.1"
+ DEBUGGER="valgrind --db-attach=yes --leak-check=full --show-reachable=yes"
+ fi
+
+ ${DEBUGGER} ./folding \
+ --random-seed=${SEED} \
+ --pool-name=${POOL_NAME} \
+ --result-path=${EXPERIMENT_RESULT_DIR} \
+ --detector-name=${EXPERIMENT_RESULT_DIR}/default.det \
+ ${OPTS} \
+ open-pool \
+ train-detector \
+ compute-thresholds \
+ write-detector \
+ sequence-test-detector | tee -a ${EXPERIMENT_RESULT_DIR}/stdout
+
+ else
+
+ echo "${EXPERIMENT_RESULT_DIR} exists, cancelling that run."
+
+ fi
+
+ done
+
+ done
-done
+esac