Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
HamadYA authored Apr 19, 2023
1 parent 960d112 commit 99a7b7d
Showing 1 changed file with 327 additions and 0 deletions.
327 changes: 327 additions & 0 deletions evaluation.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,327 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# !pip install keras_cv_attention_models"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import evals\n",
"from tensorflow import keras\n",
"import tensorflow as tf\n",
"import IJB_evals\n",
"import matplotlib.pyplot as plt\n",
"import keras_cv_attention_models\n",
"import GhostFaceNets, GhostFaceNets_with_Bias"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]\n"
]
}
],
"source": [
"gpus = tf.config.experimental.list_physical_devices(\"GPU\")\n",
"for gpu in gpus:\n",
" tf.config.experimental.set_memory_growth(gpu, True)\n",
"print(tf.config.list_physical_devices('GPU'))"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"2 ways to load the model"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Stride 2"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#Either\n",
"basic_model = keras.models.load_model('checkpoints/ghostnetv1_w1.3_s2.h5', compile=False)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#If the above did not work, then you need to build the model then load the weights. e.g.,\n",
"basic_model = GhostFaceNets_with_Bias.buildin_models(\"ghostnetv1\", dropout=0, emb_shape=512, output_layer='GDC', bn_momentum=0.9, bn_epsilon=1e-5)\n",
"basic_model = GhostFaceNets_with_Bias.add_l2_regularizer_2_model(basic_model, weight_decay=5e-4, apply_to_batch_normal=False)\n",
"basic_model = GhostFaceNets_with_Bias.replace_ReLU_with_PReLU(basic_model, target_activation='PReLU')\n",
"\n",
"basic_model.load_weights('checkpoints/ghostnetv1_w1.3_s2.h5')"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Stride 1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#Either\n",
"basic_model = keras.models.load_model('checkpoints/ghostnetv1_w1.3_s1.h5', compile=False)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#If the above did not work, then you need to build the model then load the weights. e.g.,\n",
"basic_model = GhostFaceNets_with_Bias.buildin_models(\"ghostnetv1\", dropout=0, emb_shape=512, output_layer='GDC', bn_momentum=0.9, bn_epsilon=1e-5, scale=True, use_bias=True, strides=1)\n",
"basic_model = GhostFaceNets_with_Bias.add_l2_regularizer_2_model(basic_model, weight_decay=5e-4, apply_to_batch_normal=False)\n",
"basic_model = GhostFaceNets_with_Bias.replace_ReLU_with_PReLU(basic_model, target_activation='PReLU')\n",
"\n",
"basic_model.load_weights('checkpoints/ghostnetv1_w1.3_s1.h5')"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Evaluating lfw: 100%|██████████| 47/47 [00:39<00:00, 1.18it/s]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
">>>> lfw evaluation max accuracy: 0.996833, thresh: 0.223459, previous max accuracy: 0.000000, PCA accuray = 0.996000 ± 0.002494\n",
">>>> Improved = 0.996833\n"
]
}
],
"source": [
"ee = evals.eval_callback(basic_model, 'datasets/faces_emore/lfw.bin', batch_size=256, flip=True, PCA_acc=True)\n",
"ee.on_epoch_end(0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ee = evals.eval_callback(basic_model, 'datasets/faces_emore/lfw.bin', batch_size=256, flip=True, PCA_acc=False)\n",
"ee.on_epoch_end(0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ee = evals.eval_callback(basic_model, 'datasets/faces_emore/vgg2_fp.bin', batch_size=256, flip=True, PCA_acc=False)\n",
"ee.on_epoch_end(0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ee = evals.eval_callback(basic_model, 'datasets/faces_emore/cfp_ff.bin', batch_size=256, flip=True, PCA_acc=False)\n",
"ee.on_epoch_end(0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ee = evals.eval_callback(basic_model, 'datasets/faces_emore/cfp_fp.bin', batch_size=256, flip=True, PCA_acc=False)\n",
"ee.on_epoch_end(0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ee = evals.eval_callback(basic_model, 'datasets/faces_emore/calfw.bin', batch_size=256, flip=True, PCA_acc=False)\n",
"ee.on_epoch_end(0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ee = evals.eval_callback(basic_model, 'datasets/faces_emore/cplfw.bin', batch_size=256, flip=True, PCA_acc=False)\n",
"ee.on_epoch_end(0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ee = evals.eval_callback(basic_model, 'datasets/faces_emore/agedb_30.bin', batch_size=256, flip=True, PCA_acc=False)\n",
"ee.on_epoch_end(0)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"tt = IJB_evals.IJB_test(lambda imgs: basic_model((tf.cast(imgs, \"float32\") - 127.5) * 0.0078125).numpy(), data_path='path_to_IJB_Dataset/ijb-testsuite/ijb', subset='IJBB', batch_size=16)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"score = tt.run_model_test_single()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"IJB_evals.plot_roc_and_calculate_tpr([score], names=[basic_model.name + \"_IJBB\"], label=tt.label)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"tt = IJB_evals.IJB_test(lambda imgs: basic_model((tf.cast(imgs, \"float32\") - 127.5) * 0.0078125).numpy(), data_path='C:/Users/mohda/Downloads/ijb-testsuite/ijb', subset='IJBC', batch_size=16)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"score = tt.run_model_test_single()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"IJB_evals.plot_roc_and_calculate_tpr([score], names=[basic_model.name + \"_IJBC\"], label=tt.label)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot face quality distribution using norm value of feature"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"cc = tf.norm(ee.embs, axis=1).numpy()\n",
"_ = plt.hist(cc, bins=512, alpha=0.5, label='agedb_30 quality')\n",
"cc = tf.norm(tt.embs, axis=1).numpy()\n",
"_ = plt.hist(cc, bins=512, alpha=0.5, label='IJBC quality')\n",
"plt.legend()\n",
"plt.tight_layout()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.9.12 64-bit",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.12"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "81794d4967e6c3204c66dcd87b604927b115b27c00565d3d43f05ba2f3a2cb0d"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}

0 comments on commit 99a7b7d

Please sign in to comment.