Moved DEBUG option to config files
This commit is contained in:
140
python/projet.py
140
python/projet.py
@ -12,9 +12,9 @@ from time import perf_counter_ns
|
||||
from os import makedirs
|
||||
import numpy as np
|
||||
|
||||
#np.seterr(all = 'raise')
|
||||
|
||||
from config import FORCE_REDO, COMPILE_WITH_C, GPU_BOOSTED, TS, SAVE_STATE
|
||||
from config import FORCE_REDO, COMPILE_WITH_C, GPU_BOOSTED, TS, SAVE_STATE, MODEL_DIR, __DEBUG
|
||||
if __DEBUG:
|
||||
from config import IDX_INSPECT, IDX_INSPECT_OFFSET
|
||||
|
||||
if GPU_BOOSTED:
|
||||
from ViolaJonesGPU import apply_features, set_integral_image, argsort
|
||||
@ -26,12 +26,6 @@ else:
|
||||
from ViolaJonesCPU import apply_features, set_integral_image, argsort
|
||||
label = 'CPU' if COMPILE_WITH_C else 'PY'
|
||||
|
||||
# FIXME Debug code
|
||||
# IDX_INSPECT = 0
|
||||
# IDX_INSPECT = 2
|
||||
IDX_INSPECT = 4548
|
||||
IDX_INSPECT_OFFSET = 100
|
||||
|
||||
def bench_train(X_train: np.ndarray, X_test: np.ndarray, y_train: np.ndarray) -> Tuple[np.ndarray, np.ndarray]:
|
||||
"""Train the weak classifiers.
|
||||
|
||||
@ -45,25 +39,23 @@ def bench_train(X_train: np.ndarray, X_test: np.ndarray, y_train: np.ndarray) ->
|
||||
"""
|
||||
feats = state_saver("Building features", "feats", lambda: build_features(X_train.shape[1], X_train.shape[2]), FORCE_REDO, SAVE_STATE)
|
||||
|
||||
# FIXME Debug code
|
||||
# print("feats")
|
||||
# print(feats.shape)
|
||||
# print(feats[IDX_INSPECT].ravel())
|
||||
# return 0, 0
|
||||
if __DEBUG:
|
||||
print("feats")
|
||||
print(feats.shape)
|
||||
print(feats[IDX_INSPECT].ravel())
|
||||
|
||||
X_train_ii = state_saver(f"Converting training set to integral images ({label})", f"X_train_ii_{label}",
|
||||
lambda: set_integral_image(X_train), FORCE_REDO, SAVE_STATE)
|
||||
X_test_ii = state_saver(f"Converting testing set to integral images ({label})", f"X_test_ii_{label}",
|
||||
lambda: set_integral_image(X_test), FORCE_REDO, SAVE_STATE)
|
||||
|
||||
# FIXME Debug code
|
||||
# print("X_train_ii")
|
||||
# print(X_train_ii.shape)
|
||||
# print(X_train_ii[IDX_INSPECT])
|
||||
# print("X_test_ii")
|
||||
# print(X_test_ii.shape)
|
||||
# print(X_test_ii[IDX_INSPECT])
|
||||
# return 0, 0
|
||||
if __DEBUG:
|
||||
print("X_train_ii")
|
||||
print(X_train_ii.shape)
|
||||
print(X_train_ii[IDX_INSPECT])
|
||||
print("X_test_ii")
|
||||
print(X_test_ii.shape)
|
||||
print(X_test_ii[IDX_INSPECT])
|
||||
|
||||
X_train_feat = state_saver(f"Applying features to training set ({label})", f"X_train_feat_{label}",
|
||||
lambda: apply_features(feats, X_train_ii), FORCE_REDO, SAVE_STATE)
|
||||
@ -71,14 +63,13 @@ def bench_train(X_train: np.ndarray, X_test: np.ndarray, y_train: np.ndarray) ->
|
||||
lambda: apply_features(feats, X_test_ii), FORCE_REDO, SAVE_STATE)
|
||||
del X_train_ii, X_test_ii, feats
|
||||
|
||||
# FIXME Debug code
|
||||
# print("X_train_feat")
|
||||
# print(X_train_feat.shape)
|
||||
# print(X_train_feat[IDX_INSPECT, : IDX_INSPECT_OFFSET])
|
||||
# print("X_test_feat")
|
||||
# print(X_test_feat.shape)
|
||||
# print(X_test_feat[IDX_INSPECT, : IDX_INSPECT_OFFSET])
|
||||
# return 0, 0
|
||||
if __DEBUG:
|
||||
print("X_train_feat")
|
||||
print(X_train_feat.shape)
|
||||
print(X_train_feat[IDX_INSPECT, : IDX_INSPECT_OFFSET])
|
||||
print("X_test_feat")
|
||||
print(X_test_feat.shape)
|
||||
print(X_test_feat[IDX_INSPECT, : IDX_INSPECT_OFFSET])
|
||||
|
||||
#indices = state_saver("Selecting best features training set", "indices", force_redo = True, save_state = SAVE_STATE,
|
||||
# fnc = lambda: SelectPercentile(f_classif, percentile = 10).fit(X_train_feat.T, y_train).get_support(indices = True))
|
||||
@ -96,40 +87,35 @@ def bench_train(X_train: np.ndarray, X_test: np.ndarray, y_train: np.ndarray) ->
|
||||
|
||||
# X_train_feat, X_test_feat = X_train_feat[indices], X_test_feat[indices]
|
||||
|
||||
#return 0, 0
|
||||
|
||||
X_train_feat_argsort = state_saver(f"Precalculating training set argsort ({label})", f"X_train_feat_argsort_{label}",
|
||||
lambda: argsort(X_train_feat), FORCE_REDO, SAVE_STATE)
|
||||
|
||||
# FIXME Debug code
|
||||
# print("X_train_feat_argsort")
|
||||
# print(X_train_feat_argsort.shape)
|
||||
# print(X_train_feat_argsort[IDX_INSPECT, : IDX_INSPECT_OFFSET])
|
||||
# benchmark_function("Arg unit test", lambda: unit_test_argsort_2d(X_train_feat, X_train_feat_argsort))
|
||||
# return 0, 0
|
||||
if __DEBUG:
|
||||
print("X_train_feat_argsort")
|
||||
print(X_train_feat_argsort.shape)
|
||||
print(X_train_feat_argsort[IDX_INSPECT, : IDX_INSPECT_OFFSET])
|
||||
benchmark_function("Arg unit test", lambda: unit_test_argsort_2d(X_train_feat, X_train_feat_argsort))
|
||||
|
||||
# X_test_feat_argsort = state_saver(f"Precalculating testing set argsort ({label})", f"X_test_feat_argsort_{label}",
|
||||
# lambda: argsort(X_test_feat), True, False)
|
||||
X_test_feat_argsort = state_saver(f"Precalculating testing set argsort ({label})", f"X_test_feat_argsort_{label}",
|
||||
lambda: argsort(X_test_feat), FORCE_REDO, SAVE_STATE)
|
||||
|
||||
# FIXME Debug code
|
||||
# print("X_test_feat_argsort")
|
||||
# print(X_test_feat_argsort.shape)
|
||||
# print(X_test_feat_argsort[IDX_INSPECT, : IDX_INSPECT_OFFSET])
|
||||
# benchmark_function("Arg unit test", lambda: unit_test_argsort_2d(X_test_feat, X_test_feat_argsort))
|
||||
# return 0, 0
|
||||
# del X_test_feat_argsort
|
||||
if __DEBUG:
|
||||
print("X_test_feat_argsort")
|
||||
print(X_test_feat_argsort.shape)
|
||||
print(X_test_feat_argsort[IDX_INSPECT, : IDX_INSPECT_OFFSET])
|
||||
benchmark_function("Arg unit test", lambda: unit_test_argsort_2d(X_test_feat, X_test_feat_argsort))
|
||||
del X_test_feat_argsort
|
||||
|
||||
print(f"\n| {'Training':<49} | {'Time spent (ns)':<17} | {'Formatted time spent':<29} |\n|{'-'*51}|{'-'*19}|{'-'*31}|")
|
||||
print(f"\n| {'Training':<49} | {'Time spent (ns)':<18} | {'Formatted time spent':<29} |\n|{'-'*51}|{'-'*20}|{'-'*31}|")
|
||||
|
||||
for T in TS:
|
||||
# alphas, final_classifiers = state_saver(f"ViolaJones T = {T:<3} ({label})", [f"alphas_{T}_{label}", f"final_classifiers_{T}_{label}"],
|
||||
state_saver(f"ViolaJones T = {T:<4} ({label})", [f"alphas_{T}_{label}", f"final_classifiers_{T}_{label}"],
|
||||
lambda: train_viola_jones(T, X_train_feat, X_train_feat_argsort, y_train), FORCE_REDO, SAVE_STATE, "./models")
|
||||
# FIXME Debug code
|
||||
# print("alphas")
|
||||
# print(alphas)
|
||||
# print("final_classifiers")
|
||||
# print(final_classifiers)
|
||||
alphas, final_classifiers = state_saver(f"ViolaJones T = {T:<3} ({label})", [f"alphas_{T}_{label}", f"final_classifiers_{T}_{label}"],
|
||||
lambda: train_viola_jones(T, X_train_feat, X_train_feat_argsort, y_train), FORCE_REDO, SAVE_STATE, MODEL_DIR)
|
||||
if __DEBUG:
|
||||
print("alphas")
|
||||
print(alphas)
|
||||
print("final_classifiers")
|
||||
print(final_classifiers)
|
||||
|
||||
return X_train_feat, X_test_feat
|
||||
|
||||
@ -183,43 +169,37 @@ def _main_() -> None:
|
||||
for folder_name in ["models", "out"]:
|
||||
makedirs(folder_name, exist_ok = True)
|
||||
|
||||
print(f"| {'Preprocessing':<49} | {'Time spent (ns)':<17} | {'Formatted time spent':<29} |\n|{'-'*51}|{'-'*19}|{'-'*31}|")
|
||||
print(f"| {'Preprocessing':<49} | {'Time spent (ns)':<18} | {'Formatted time spent':<29} |\n|{'-'*51}|{'-'*20}|{'-'*31}|")
|
||||
|
||||
X_train, y_train, X_test, y_test = state_saver("Loading sets", ["X_train", "y_train", "X_test", "y_test"],
|
||||
load_datasets, FORCE_REDO, SAVE_STATE)
|
||||
|
||||
# FIXME Debug option (image width * log_10(length) + extra characters)
|
||||
# np.set_printoptions(linewidth = 19 * 6 + 3)
|
||||
|
||||
# FIXME Debug code
|
||||
# print("X_train")
|
||||
# print(X_train.shape)
|
||||
# print(X_train[IDX_INSPECT])
|
||||
# print("X_test")
|
||||
# print(X_test.shape)
|
||||
# print(X_test[IDX_INSPECT])
|
||||
# print("y_train")
|
||||
# print(y_train.shape)
|
||||
# print(y_train[IDX_INSPECT: IDX_INSPECT + IDX_INSPECT_OFFSET])
|
||||
# print("y_test")
|
||||
# print(y_test.shape)
|
||||
# print(y_test[IDX_INSPECT: IDX_INSPECT + IDX_INSPECT_OFFSET])
|
||||
# return
|
||||
if __DEBUG:
|
||||
print("X_train")
|
||||
print(X_train.shape)
|
||||
print(X_train[IDX_INSPECT])
|
||||
print("X_test")
|
||||
print(X_test.shape)
|
||||
print(X_test[IDX_INSPECT])
|
||||
print("y_train")
|
||||
print(y_train.shape)
|
||||
print(y_train[IDX_INSPECT: IDX_INSPECT + IDX_INSPECT_OFFSET])
|
||||
print("y_test")
|
||||
print(y_test.shape)
|
||||
print(y_test[IDX_INSPECT: IDX_INSPECT + IDX_INSPECT_OFFSET])
|
||||
|
||||
X_train_feat, X_test_feat = bench_train(X_train, X_test, y_train)
|
||||
|
||||
# FIXME Debug code
|
||||
# return
|
||||
|
||||
# X_train_feat, X_test_feat = picke_multi_loader([f"X_train_feat_{label}", f"X_test_feat_{label}"], "./out")
|
||||
# indices = picke_multi_loader(["indices"], "./out")[0]
|
||||
# X_train_feat, X_test_feat = picke_multi_loader([f"X_train_feat_{label}", f"X_test_feat_{label}"], OUT_DIR)
|
||||
# indices = picke_multi_loader(["indices"], OUT_DIR)[0]
|
||||
# X_train_feat, X_test_feat = X_train_feat[indices], X_test_feat[indices]
|
||||
|
||||
bench_accuracy(label, X_train_feat, X_test_feat, y_train, y_test)
|
||||
|
||||
if __name__ == "__main__":
|
||||
#toolbox_unit_test()
|
||||
_main_()
|
||||
if __DEBUG:
|
||||
toolbox_unit_test()
|
||||
|
||||
# Only execute unit test after having trained the specified labels
|
||||
unit_test(TS, ["GPU", "CPU", "PY", "PGPU"])
|
||||
|
Reference in New Issue
Block a user