Commit b2d4ec4b authored by Guillaume HEUSCH's avatar Guillaume HEUSCH

typos, removing unecessary stuff

parent 60e21230
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Face verification with PAD\n",
"\n",
"![](data/fr-pad/system-overview.png)\n",
"\n",
"### How do we combine these two systems ?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Let's look at a face verification system without PAD"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# code to plot scores distribution without PAs (with threshold)\n",
"from plot import get_scores_complete\n",
"scores_vgg_dev = get_scores_complete('data/fr-pad/scores-amir-2/vgg-replay/scores-dev')\n",
"\n",
"from plot_fr_pad import split_scores_genuine_zei_attacks\n",
"pos, neg, attacks = split_scores_genuine_zei_attacks(scores_vgg_dev)\n",
"\n",
"from plot_fr_pad import plot_scores_distributions_zei_genuine\n",
"plot_scores_distributions_zei_genuine(neg, pos, n_bins=(50, 10), threshold_height=18)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Now let's add presentation attacks"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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7ZqDfvEy+QadfvrprFmzhvXr19O1a1dGjx5Neno6Gzdu5LPPPqNPnz6kp6dz+eWXF5R2HDt2LKmpqXTv3p277roLcEaOl112Gb169aJXr158/fXXADzwwAPccMMN9OvXjw4dOvDss88W7GPt2rWkpaVx9913s2/fPvr37096ejrdunXj/fffD9tv/fr1nHDCCYBTG/r666+nW7du9OjRg5kzZwLOkoSXXnop5557Lp07d+aee+4p9v1nZGTw5JNPkpWVRXZ2dsFr/vLLL6SlpTF8+HDXsQL861//onv37px44olce+21R73e+PHjGTlyJPn5+WE/R2MqivIk36Qqa9mzsyG5uVWiFk9pzxEnmsCltJ8Cb+EcCb5CVc9R1blu9xHpUPM1qvoGkBJuppaqFrdkYFwoy2Gc0P6lkZubyyeffMK5554LwMqVK3nttdd44YUX2L59Ow8//DBffPFFQUnJv/3tb9x66628++67rFixAhFh165dgDPp4o477uC0005jw4YNDBo0iOXLlwOwYsUKZs6cyd69e+nSpQu//e1vefzxx1m6dCmZgW/subm5vPvuu9SrV4/t27dzyimnMGTIkKP6rV+/viD+559/HoAlS5awYsUKBg4cyKpVqwDIzMxk0aJF1KhRgy5dunDbbbfRpk3h80cbN27k559/pnfv3lxxxRVMnTqVO++8k8cff5znnnuu0Gu6iXXZsmU88sgjfP311zRp0oQdO3YUer177rmH3bt389prr7Fz586wn6MxFUlp/14Fk+MHr30MegW7tjelSfPordbapmMb1hC5clUCewVYAmzAOTI8UEQKHlTVISXtINKh5mAZrnCztlzN3PJbeUa+bgRHc8EViW688UYA2rVrxymnnALA3LlzWbZsGaeeeippaWlMmjSJn376iXr16pGcnMxvfvMb3nnnnYJzw1988QW33noraWlpDBkyhD179rB3714Azj//fGrUqEGTJk1o1qxZwbKAoVSV++67j+7duzNgwACys7PD9gs1Z86cglHlcccdR7t27QoSb//+/alfvz7Jycmkpqby008/HfX8KVOmcMUVVwBw1VVXlViVp6RYv/zyS4YOHUqTJk0AaNSoUcFzHnroIXbt2sU//vEPRKTYz9GYiqYsI98zhzj/R1Z9Xz3W4ZlfnQX8DudU7AR+PQ0bbCWKtB7vPwK3rmZpxauyjnzdCJ7jLap27V9Lh6oq55xzTthkNG/ePGbMmMGUKVN47rnn+PLLL8nPz+ebb76hZs2aR/UvbknBUJMnT2bbtm0sWLCAatWqkZKSEnGZwWCMxXHzmhkZGWzZsoXJkycDzsSt1atX07lz54ivW1ysqkroN8hQvXr1YsGCBezYsYNGjRpRtWrVsJ+jMa4de6zfERQo7d+r49KFGdPyWPjVYdp02liq2cwb15auv3Go6lfhtotIG+AqnEpWERU74hWRZyO1softvbKMfKPllFNO4euvv2bNGuewzYEDB1i1ahX79u1j9+7dDB48mKeffroggQ8cOJDnnnuu4PnhEnuounXrFoyIAXbv3k2zZs2oVq0aM2fOLBihFu0X6owzzihImqtWrWLDhg106dLF1ftbuXIl+/fvJzs7m/Xr17N+/XrGjRvHlClTAKhWrVrB8ohuY+3fvz///ve/ycnJASh0qPncc89l7NixnH/++ezdu7fYz9EY115+2WlxojR/r6pWzaNh0200bXVWqS8FskuHyk9EmojIb0VkNjALOMbN8yItkrAgGoF5xc3lPw899JAHkRTWtGlTJk6cyLBhwzh0yFlY+uGHH6Zu3bpcdNFFBSO8p55yVhJ59tlnueWWW+jevTu5ubmcccYZR82WDtW4cWNOPfVUTjjhBM477zzuvfdeLrzwQnr27ElaWhrHHXdc2H633HJLwT5Gjx7NzTffTLdu3ahatSoTJ04sNNKNJCMjg0suuaTQtssuu4yrrrqK8ePHM2rUKLp37056ejqTJ092Fevxxx/PH/7wB84880yqVKlCjx49mDhxYsH+L7/8cvbu3cuQIUN48803w36OxlRkpRn5Nm7+M1uz25d6oYSyLKxgQETqApcAVwPHAu8CHVTVdfmzEpcFjAe2LKCJJvvdMYWMGuXcejjqHT9+fJnqDIQuCxj07efn8M3n53LLw+P4eePagmQ67cXwlwsGlwXslN2JjWs3Fpt8bVnAYl/zF2Ae8EdgjqqqiKxT1Q5u9xHpUPPTgdsPReSDoq3c0RtjTDxYtcppHormpY6Nm/8MmkTOlmOsVrM37gOScZbMHSciHUu7g0izml8P3IabteVq5pYxxpijRaNWc1Dj5psByPm5BWC1mmNNVZ9S1ZOBITjX8b4HtBSRe0XE1Uy9SAU0FgRuv8KpzbwT2AF8U9ysLmOMMSWLRq3moPqNc6hS9TA5Pzcv2Ga1mmNPVdep6iOq2g3oBTQAPnHzXDfLAp4PrAWeBZ4D1ojIeeWI1xhjEl5Zkm+45JiUpDQ+ZgvbAyPesrLkW3aqukRVx6mqq8POblYnehI4S1X7qeqZOBcP29RRY0zlkJbmNB+Ut1ZzUOPmmwsONZeH1WoumYjsFZE9YdpeEdnjZh9uEu9WVQ2d3raOUhSDNsaYuPb0056vTBQqGsm3SfPN7N9Tn1/2l79ym9VqjkxV66pqvTCtrqrWc7OPSLWaLw38+IOITAf+DShwOfBduaOvBILLAgZdddVVjB07ln79+rF58+aC6lOdOnVi2rRpPPDAA/zzn/+kadOmHD58mPHjxx91/fEjjzzCW2+9BTi1k4P7v+GGG1i4cGFMlsXr168fEyZMoGfPnq76z5o1iwkTJvDRRx8d9VhKSgrz588vKPdojClZ0et299XfF7F/0SX8GgfqNOdsaU7rDuuAXy8bKgur1RxbkQpohP6rbQHODPy8DWhY0o5F5FXgApwR8wmBbY2AqUAKsB5nVYedpY46ThRXMhKccojhEtkdd9zBXXfdxerVqznppJMYOnQo1apVK3j8D3/4A3/4wx8AqFOnTqH9jxw5ssSY8vLyqFIleiuVGFPpXXONc/vGG76GEZp8Bw4fWOIEqdDk2+8Sp555zs8tChKviV+RZjVfH6Hd4GLfE4Fzi2wbC8xQ1c7AjMD9hNS5c2dq1arFzp2l+94xe/Zs+vbtS4cOHQrW0501axZnnXUWV199dcEI+Y033qB3796kpaVx0003kZeXR15eHiNHjuSEE06gW7duhao8vfXWW/Tu3Ztjjz2W//73v0DxywWGysnJYeDAgfTo0YObbropYt1nY+JSVpbT4kCk2cvhBJPvzHfeoFr1/Wzf7P48r02g8k+kES8AIpIM3Agcj3PRMAAlJV9VnS0iKUU2XwT0C/w8Cae25b1ug42oX7+jt11xBYweDQcOwOAw5yxGjnTa9u1Q9PDtrFklvmRwdaKgcePGceWVVwIwfPjwgkPN55xzDk888USh5y5cuJDOnTvTrFnpFrHevHkzc+bMYcWKFQwZMqTgsPO8efNYunQp7du3Z/ny5UydOpWvv/6aatWqMXr0aCZPnszxxx9PdnY2S5cuBSi0hF5ubi7z5s1j+vTp/PnPf+aLL76IuFxg0J///GdOO+00/vSnP/Hxxx/zchzVvDWmIgqdveymnGObjm04/7rBvPtyJpvWN4rYN1SilIsUkSrAfCBbVS8QkfbAFKARsBC4VlUPexlTiYkXp5DGCpx1Bx8EhgPLy/h6x6jqZgBV3SwixWYdERkFjAKoXj0+l7wqy6Hmp556in/+85+sW7eOTz/9tNSvefHFF5OUlERqamqh5f569+5N+/btAZgxYwYLFiygV69egPMFoVmzZlx44YWsW7eO2267jfPPP5+BAwcWPP/SS51T+ieddFLBWr1z5szhtttuA45eLjBo9uzZvPPOO4CzbGHDhiWehTDGlKDoOVw3ybfdcfv4cVkqG9ZspG0nq9UcYgxOzgpOfPoL8JSqThGRl3AGli96GZCbxNtJVS8XkYtUdZKIvAn8J9aBqerLwMvg1Gou8QmRRqi1akV+vEkTVyPcaAie433nnXe47rrrWLt2LcnJySU/MSB08YLQw7pFlyIcMWIEjz322FHP//777/nPf/7D888/z7///W9effXVQvsNXfrP7WHj4pbwM8aEt2zZMteL3btNjinH7uXHZQ2Z/q9Mzh8BtIocQ2n3XxGJSGvgfOAR4E5x/lidjbPAAThHXh/A48Tr5nKiI4HbXSJyAlAfZ3JUWWwRkRYAgduEvSzp0ksvpWfPnkyaNCnq++7fvz/Tpk1j61bn492xYwc//fQT27dvJz8/n8suu4yHHnqIhQsXRtyPm+UCQ/t88sknpT5nbYzv+vRxmofKe91uOMGZzSedPYLpr0+nxuwadMruVGwr7f4rqKeBe4D8wP3GwC5VDS4snkWJX1Giz03ifVlEGgLjgQ+AZThD9bL4ABgR+HkE8H4Z9xMXgud4g23s2F/nig0fPrxg+4ABA8I+/09/+hN/+9vfyM/PD/t4WaWmpvLwww8zcOBAunfvzjnnnMPmzZvJzs6mX79+pKWlMXLkyLAj4lCjR48mLy+Pbt26ceWVV4ZdLvD+++9n9uzZpKen89lnn9G2bduovhdjYu6xx5zmoWgUzSgqWLM5ie6lSqYVPPlWFZH5IW1U8AERCV5VE7rEbbjDc57PCI3ZsoAikoEzkaoJzuVI9+MUk/430BbYAFyuqjuK20eQLQtoosl+d4zfMjIyjlryL1S45f8iLeEX9M+HHqBt55UMuirDVf9I+6/oywKKyGPAtUAuzsTgejhr5w4Cmqtqroj0AR5Q1UFexQzuajU3FpG/i8hCEVkgIk+LSOOSnqeqw1S1hapWU9XWqvqKquaoan9V7Ry4LTHpGmNMTF12mdM8Fq1ykaEaH/Mz2ze3dN2/tPuvSAK1k1uragpwFfClqg4HZgLBy1h8OfLq5lDzFJxzsZfhBLsdpwiGMcZUfDk5TvNBtJNv645r2LapNXt3NXDVP9L+K7F7cSZarcE55/uK1wG4SbyNVPUhVf0x0B7GWf7Id1aswZSW/c6YeBPN5Hvsic7ljasy01z1j7T/ykRVZ6nqBYGf16lqb1XtpKqXq+ohr+Nxk3hnishVIpIUaFcAH8c6sJIkJyeTk5Njf0iNa6pKTk5OqS7fMsYL0Uq+DZps55jWG1j5fbqr/pH2b2In0iIJe3FmewlwJxAsZJoE7MOZLOWb1q1bk5WVxbZt2/wMw1QwycnJtG7d2u8wjDlKeWo1h06g6pK2kNkfXczObU1o2HR7if2N94pNvKpa18tASqtatWoFlZqMMabM+vf3O4ICweT75FNPuq5YVTSZdj4xk9kfXcyqzB6cfM7nJfY33nNzqBkRGSIiEwLtglgHZYwxnhk/3mlxIrRWc1lmI9dtsJtW7deyMjOdcGfiKtvs5YrIzeVEj+PUulwWaGMC24wxxsRAeS8FOjZtITu2Ni92tSJLvv5yM+IdDJyjqq+q6qs4S/1VrilvxpjEdd55TvNQtMtFFu1fu94nSFIeq77vEbX9m+hxdaiZwpcP1Y9FIMYY44tffnGah2JRqzm0/4xpU2jWanGxh5vLun8THW4S72PAIhGZKCKTgAXAo7ENyxhjKq9Y1Gou2n/HlhfZs6MxP2+MXD/dkq/3IibewBJKc4BTgHcCrY+qTvEgNmOMqZRiUS6yaP/zhh8EDrHwq45R378pn4iJV53qFO+p6mZV/UBV31fVnz2KzRhjKq1YJ98OqY1p1noFa5Z0TshazfHMzaHmuSLSK+aRGGOMHy64wGk+iHXyPS7tR1S78tGkxVarOY64Sbxn4STftSKyWESWiMjiWAdmjDGeuOsup/kklsm33XErADi+150JXas53rhJvOcBHYCzgQuBCwK3xhhjoiBWybdRsy3UbbCTPTv6WK3mOFJs4hWRZBG5Hbgb59rdbFX9Kdg8i9AYY2KpXz+n+Sw0+UbrnKwItOuygg1rjqVlSjs7hxsnIo14JwE9gSU4o94nPYnIGGMSVDD5RnPx+pQuyzl8sCY//5RiE6jiRKTEm6qq16jqP4ChwOkexWSMMQmrvLWaj3q802okKY/1K49z1d/EXqTEeyT4g6rmehCLMcYYyl+rOVSNmgdp0e4nflp1XJn3b6IrUuI9UUT2BNpeoHvwZxHZ41WAxhhT2cS6VnPR/ildlrM1qw0H9tUp8/5N9BSbeFW1iqrWC7S6qlo15Od6XgZpKrGXXy7cjPHaFVc4zUOxLhdZtH+7Ls5lRT+t7FKu/ZvocLtIgjHGVE6jRzvNQ17Uag7t36xlNjVr7+Wnlce56m9iyxKvqbxsNG3cOHDAaR7yolZzaH9JUtp1WclPq45D86Xc+zflY4nXGJPYBg92mse8Tr4pXZbzy/46bM1uHZX9m7KzxGuMMT7xMvlWqfYVAFlri1+tyGo1e8MSrzHG+Mir5Pvl229Sp0E2Wes6uepvYscSrzHG+Myr5PvLvk/YuDaF/LzIf/qtVnNsWeI1xpg4EItazUX7n9RvL7mHa7N0XtVohGzKyBKvMSaxjRzptDgQi1rNoU7sswuA2R8l2QQqH1niNcYktjhKvBD9Ws2hatfbQ8OmW2jSfKjNXvaRJV5jTGLbvt1pcSSa5SKLat1xLTu2pnLu8Ass+frEEq+pHIoWy7CCGcatoUOd5iGvazWHatVhDYcP1iQ5+RS7btcnlniNMcZjXtdqDtW6w1oAstZ1tKIZPrHEa4wxHvO6VnOoOvX30LDpVrLWdirT/k35WeI1xhiPeV0usqhWHdaQ/WMH8gN1my35essu5jImGsKdUx41qvR9TMIITb5jxowhNTU1Yv/Q5Dj42sElFrmI1L91xzUs/bYv2za14pjWWWH706r879GEZyNeY0xi++1vneYDv0a+Bed513Yqtr+JHRvxmsRho1ITzpVX+vryfox869TfQ4Mmznnek86cFbb/IQ6V962ZYtiI1xiT2DZudJqP/Bj5tu6wlk3r26Mavr+JHUu8xpjEdu21TvOZF7WaQ/s3av4zh36pxcEDtaMRvikFS7zGlMQKcxiPxLpWc2j/I4dWAbA7p3G54zalY4nXGGPiSCxrNYf2Xzh7GgC7dzQqd8ymdCzxmtiwEo7GlFksazUH+597dRcANqwOP8e2U3anQq3G7BrM+H8zqDG7Bp2yO5GRkVG6N2UKWOI1xhiP+VmrOaj9cU2pUXMXKxYejsn+/SYibURkpogsF5EfRGRMYHsjEflcRFYHbht6HZtdTmS8U1lGvX6/D7vkKbp+/3vPX9KPohnhNGy6i7y8nkx//ZZS779rk64R+8aBXOD3qrpQROoCC0Tkc2AkMENVHxeRscBY4F4vA7MRrzEmsV14odM85Ge5yFD1G+dw6EDLMu3/mWeeKbGvn1R1s6ouDPy8F1iOU4/rImBSoNsk4GKvY7PEa0ys2DnuimHlSqd5yO9azUH1G+Wwd3cDWqa0K/X+x4wZU2I/D1QVkfkhLeyhHxFJAXoA3wLHqOpmcJIz0MyrYIMs8RpjEttNNznNY/GQfOs3ykHzq7BvV8NS77+kw+QeyVXVniHtqG+4IlIHeBu4XVX3eB/i0Xw5xysi64G9QB6BD86POEwcKmtZR2MqID8XSgCo1zgHcK7lrd84p9T7j3ciUg0n6U5W1XcCm7eISAtV3SwiLYCtXsfl54j3LFVNs6RrjElkfo586zcKJN4djV31r0hERIBXgOWq+reQhz4ARgR+HgG873VsdqjZGGN85lfyrVN/N0lVcgsl3rLsP06dClwLnC0imYE2GHgcOEdEVgPnBO57yq/Eq8BnIrIgwsnwUcET5rm5uR6HZ4wx3vK6VjNAUpJSr+GOsNWrKnryVdU5qiqq2j1wdDVNVaerao6q9lfVzoHbHV7H5td1vKeq6iYRaQZ8LiIrVHV2aIfASfKXAWrXrh1m/QwTVyrqedeKGreJnj/+0e8ICgST75NPPRmT63bD9a/XaAd7iqnXXNnO+cYLX0a8qropcLsVeBfo7UccxhjDgAFOixNe1WoO9q/fKOeoQ83l2b8pmeeJV0RqB6qIICK1gYHAUq/jMMYYADIznRZHvKjVHOyvrOXggdoc/CU5avs3kflxqPkY4F1nwhlVgTdV9VMf4jDGGLj9dud21qyo7bK4BQSWLVsWN+Uig/0/fO0T4Dr27GhMcqts1/vv3coOVJaV5yNeVV2nqicG2vGq+ojXMRhjjB/ioWhG0f6nX9gagHXLSp5KE7p/N/Gb8OxyIhP/Eqn0oi2nWOnFW/I9trtz4HP+rB2VqlZzPLPEa4wxHoun5Fuj5kFq1NxP205nVsRazRWSJV5j/GSj20rJTTKNp+Rbv/EO8nJLt1BCnNRqrpAs8RpjEtujjzotitwm03hJvsFLimz2sjf8KqBhjDHxoW/fqO+y6MIH87LnFd+5PgwcPtDTohlHhdA4h7U/nEB+vrje/7zsebyZ8WahbR8O+zBiLMZhI15jTGL73/+cFkXxMpJ1279+oxzy86qyf0/9Mu3flI4lXlN6NvPWVCb33ee0KPOj9nJZ+xesUpRT+VYpikeWeI0xJkaCydevkazb/vXCLA9Ylv0bdyzxGhPv7OhCheZ17eWy9K/bcCci+YVGvGXdvymZJV5jjIkxv8/hltS/SpV86jbcyc5tzaKyfxOZJV5jjPFAvCfflu1+JHtdR7SYypGWfKPHEq8xJrE9/bTTPBDPybd2/bkc2FeXnJ9bRG3/JjxLvKYwm7FsEk1amtM8Eq/Jd+m3Tu3lDauPdb1/UzaWeI0xie2LL5zmoXhMvheMOBGRVaz6PnJBjtD9m7KxxGuMSWwPP+y0KKoIRTPC9W+fuo6fNxzLT6s2uepvysYSrymZHXqumOzfzTcVpWJVUaknbQLq8vHr2+wcbgxZ4jXGmCirSOUiQ7XuuAYkn44n3GQTqGLIEq8xxkRZRavVHJRc6xeOaZXF7pxeNns5hmx1ImOMKYV69eoVrDoUSWjyHTh8oC+rDpWlf5vOq1j41Vkc07pjqfZv3BMt7mrpOFK7dm3dv3+/32FULOHO6Y0aVbbnmcrBzb9/Ilq50rnt0sVV9/Hjxxda8q8ky5Ytc73kH8DGtRtLleyi3X/D6s688/JoLrrhZdp3XR6x/5pWawrd93pZQBE5oKq1PX3RKLBDzcaYxNali+ukC6U/jFwRajWHapmynipVjxRcz2tFM6LPEm8iseIYxhztww+dVgoV9Ryum/5Vqx2hZcqPbFzTucz7N5FZ4jXGJLYnn3RaKVXm5Nu28yq2b27F/r11yrx/UzxLvMYkCjviEXWVNfm27bwKgDVLTizX/k14lniNMaYcKmPybdZ6Iy1T1vHt54M4fLBGsf1N2VjiTXQ2AjKm3Cpb8hWBMy58nwP76vLdzP7F9jdlY4nXGGOioLIl3+ZtN9ClxwIWzj6TPTsbhO1vysYSrzEmsb3+utOioLIl31PP+wiA/31yfonPNe5Z4jXGJLY2bZwWkJGRcVQbP3489erVY/z48SXurjIl3907lpB+xlesWNSTnze0LfG5xh1LvMaYxDZ1qtMiKEvRjMqSfFukTKJWnb3M/ugiKkChwwrBEq8xJrG9+KLTSlCe5BtvybQ0/T+f+g5d0iez6ccOrFnSvcTnmZJZ4jXGGJfKmnzjLZmWtv/y+XdTr9FPzPn4QnJzq5T4PBOZJV5jjCmFyl6rOVz/868bxMH9t7J7RxMWf31aic8xkVniNcaYEIl2Dtdt/wuvr0FSlf/wzWcD+GV/rRKfY4pnidcYY0Ik4gQqt/37X/YJRw7X5ItpfUvsb4pnidcYk9imTXNaQKLOXnbT//heQvvUL1i7dCDLFuSV2N9vInKuiKwUkTUiMtbveIJEK8D88Nq1a+v+/fv9DiM2ipZpjNZi5Vb+0ZRFWX//wv2+Ret32WMZGRksW7as1IvdR+o/L3teoft+L3Zfnv4H9tXh1UfHkZe7gRN/+xEtT5lDUlUnCX84rHTLK5aXiBxQ1drFPFYFWAWcA2QB3wHDVLXkb0gxZiNeY0xim8u9q4sAAAoXSURBVDjRaSES+brdkvrXqrOP8699gzr165D5wl18efv/seb9ofy8oDcffICr9sMPJYYUDb2BNaq6TlUPA1OAizx55RLYiNdvZRnxuhld2IjXlEUijnj79XNuZ80CnBFvULRGvkVHvEHxNJItbX/NF77Jqce66RexfWmPEvcd6ve/hwkTSvWUsETkMLAkZNPLqvpy4LGhwLmq+pvA/WuBk1X11vK/cvlU9TsAY4yJV6EjWTfJt7T9Q0eabpJdPPWXJKVZ2gKapS3gwNZjOLK/Dk+f+3TE/Qc1a+aqmxu5qtqzuBDDbIuLkaYdao4VW3TcmErBDjuXrFazLdRvv5b0dFy11q1d7ba8soDQbw6tgU2evHIJLPEaY0wJLPlWSN8BnUWkvYhUB64CPvA5JsAONXurrKNeGy0br7j5Xaso526jrDyHnQcOH1ihDiOXpX+8UdVcEbkV+A9QBXhVVb2Z1lUCG/EaYxLb9OlOcyFRazVX1JGvqk5X1WNVtaOqPuJ3PEE2qzlWyjpKDTeasBGvqYjKMDLOePzxoze2a1eq2cXDhg2L/Bohs5aDon3dblFvz347bmYjR7P/mlZrCvWLp+t445mNeI0xca+0I83S6PT55wzJzrZzuFHsbyKzxGuMqRBilXzbzp1L27lzbQJVlPub4vmSeOO1fmZcsMuQTGUVhd/tWI58y7J/S76mLDxPvIH6mc8D5wGpwDARKfkkiTEJLGPHjoitsli2bl2JfUpKdhkZGUe18ePHU69ePcaPH1/u/Ze3f7wlx/L0N2Xj+eQqEekDPKCqgwL3xwGo6mPFPcfTyVU2wjRxqKTkOqxRI48iKYUylDGtd+edjLn6alI7dPh1Y7t2YftGa0LU2Q89BMCXRZJyNCdchSsZWVEmUEXqf+iMQ4W22eQqd/w41NwKCP1alRXYZowphpuRYGUw5uqreebNN6My8o33/vE8knXb35SNHyPey4FBRQpX91bV24r0GwUEvzKnA7+U8qWqArnlDLcys88nMvt8IrPPJzL7fCKL1udTU1Ur3CRhPypXuaqfGVhhoszHfUVkfoTi2QnPPp/I7POJzD6fyOzziSzRPx8/vinEbf1MY4wxJtY8H/HGc/1MY4wxJtZ8WSRBVacDsZ6LbtOTI7PPJzL7fCKzzycy+3wiS+jPp0LUajbGGGMqiwo3G8wYY4ypyCzxGmOMMR6qNIlXRBqJyOcisjpw27CYfnkikhloCTOb2u3nE+hbT0SyReQ5L2P0k5vPR0TaiciCwO/ODyJysx+x+sHl55MmIt8EPpvFInKlH7H6oRR/fz4VkV0i8pHXMfqhpLr8IlJDRKYGHv9WRFK8j9J7lSbxAmOBGaraGZgRuB/OL6qaFmhDvAvPd24/H4CHgK88iSp+uPl8NgN9VTUNOBkYKyItPYzRT24+nwPAdap6PHAu8LSINPAwRj+5/f/1BHCtZ1H5yGVd/huBnaraCXgK+Iu3UfqjMiXei4BJgZ8nARf7GEs8cvX5iMhJwDHAZx7FFS9K/HxU9bCqBovT1qBy/f8piZvPZ5Wqrg78vAnYCjT1LEJ/ufr/paozgL1eBeWz3sAaVV2nqoeBKTifU6jQz20a0F9ExMMYfVGZ/nAco6qbAQK3zYrplywi80VkrogkUnIu8fMRkSTgSeBuj2OLB65+f0SkjYgsxqk3/pdAgkkEbv9/ASAivYHqwFoPYosHpfp8EoSbuvwFfVQ1F9gNNPYkOh/5ch1vWYnIF0DzMA/9oRS7aauqm0SkA/CliCxR1UrxxyEKn89oYLqqbqyMXzqj8fujqhuB7oFDzO+JyDRV3RKtGP0Upf9fiEgL4HVghKrmRyO2eBCtzyeBhPsjUvT6VTd9Kp0KlXhVdUBxj4nIFhFpoaqbA//xtxazj02B23UiMgvoQSX5Vh6Fz6cPcLqIjAbqANVFZJ+qRjofXGFE4/cnZF+bROQH4HScQ2QVXjQ+HxGpB3wM/FFV58YoVF9E8/cnQbipyx/skyUiVYH6QOVZYLoYlelQ8wfAiMDPI4D3i3YQkYYiUiPwcxPgVP5/e/f2GlcVxXH8+1ORKA2iglAvpSi2QdAEY9GIeEP7IKX64KUSH0IL8UGsL/GpL1Uf/AOUQEXQ+mCNES0ooq2XYvHWYpuLlVoLVhBELCjFG1ZZPuwVmU5HZzrGM2P6+8AhZ/acc/Zmc2DNPjNZC5rX71oYms5PRAxHxJKIWAqMAc8tlKDbglbunwslnZH7Z1Pun88rG2FntTI/pwOvUO6byQrH1g2azs9JqJW8/LXzdifwTpwMWZ0iYkFslO8F3ga+yL/nZPtVwNO5fy0wC0zn33WdHnc3zU/d8SPAk50edzfND3ArMJP3zwww2ulxd9n83AccBaZqtoFOj71b5idf7wS+o5Q5/ZpSIrXj4/8P5+U24ADlqeKGbHsUWJ37PcAkcBDYBVzc6TFXsTllpJmZWYUW0qNmMzOzrufAa2ZmViEHXjMzswo58JqZmVXIgdfMzKxCDrxmbZK0oaYSz5Skqyvq91lJ99e13SHp9SbnHcr/XzezDnLgNWuDpCFgFXBlRFwB3MKxeWnbuWarmeS2UJIR1FqT7WbW5Rx4zdqzGDgcWa0oIg5HpiOVtELSB5KmJe2S1CupR9IzkmYl7ZV0Ux47ImlS0qtkRShJD0vanSvpRxr0/RbQl6kJkXQmJfBvzddbs27wPkmj9SdLWirp05rXY5I25v4lWTP2E0k7JfXN24yZGeDAa9aubcBFkg5IGpd0A/yVNnECeCgi+ikB8RfgAYCIuBy4F9gsqSevNUQpKHCzpJXApZSSagPAoKTrazuOiD+Al4G7s2k18G5EzJWbWxsRg5SsSeslnUi1l6eAB/P8MWD8BM41sxY48Jq1ISJ+BAaBUUoKwAlJI8By4JuI2J3HHYlS7uw6SsUeImI/8BWwLC+3PSLmEsOvzG0vsAfoowTierWPm+sfM6+XNA18RElA3+j840haREmrOilpCthEWdmb2Tz6X1UnMusmufLcAeyQNEtJ9r6HxmXN/qnO4k91xz0eEZuadP8+sFhSPyVYrgGQdCNllT0UET9nBa6eunN/59gP3XPvnwL8EBEDTfo2s3/BK16zNkhaLql2JTlAWcXuB86XtCKP680fTb0HDGfbMmAJjSsbvQmszdUnki6QdFxR9ShJ1l8ENlNqKP+ab50FfJ9Btw+4pkEf3wLnSTo3q3WtymseAb6UdFf2rQzsZjaPHHjN2rOI8j3tZ5JmgMuAjRHxG3AP8EQ+7t1OWVGOA6fmyngCGJn7YVatiNgGPA98mMe+BPT+zRi2AP3ACzVtbwCn5Zgeozxuru/jKKVCzMfAa5QPC3OGgXU59n3A7a1Mhpm1ztWJzMzMKuQVr5mZWYUceM3MzCrkwGtmZlYhB14zM7MKOfCamZlVyIHXzMysQg68ZmZmFfoTLXoWiSyORbUAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 504x360 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from plot_fr_pad import plot_scores_distributions_zei_attacks_genuine\n",
"fig = plot_scores_distributions_zei_attacks_genuine(neg, pos, attacks, n_bins=(50, 10, 20), threshold_height=18)\n"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ]\n",
"[0.5]\n",
"[[-0.12550996 -0.07791668 -0.07287739 -0.06847641 -0.06634311 -0.06468388\n",
" -0.06210078 -0.06176296 -0.06027544 -0.05844076 -0.05817013]]\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# ESPC\n",
"licit_dev = get_scores_complete('data/fr-pad/scores-amir-2/vgg-replay/scores-dev-licit')\n",
"licit_eval = get_scores_complete('data/fr-pad/scores-amir-2/vgg-replay/scores-eval-licit')\n",
"spoof_dev = get_scores_complete('data/fr-pad/scores-amir-2/vgg-replay/scores-dev-spoof')\n",
"spoof_eval = get_scores_complete('data/fr-pad/scores-amir-2/vgg-replay/scores-eval-spoof')\n",
"\n",
"def sort_spoof_scores(scores):\n",
" scores_attack = []\n",
" scores_genuine = []\n",
" for s in scores:\n",
" if s['real_id'] == 'attack':\n",
" scores_attack.append(s['score'])\n",
" else:\n",
" scores_genuine.append(s['score'])\n",
" return scores_attack, scores_genuine\n",
" \n",
"def sort_licit_scores(scores):\n",
" scores_zei = []\n",
" scores_genuine = []\n",
" for s in scores:\n",
" if s['claim_id'] == s['real_id']:\n",
" scores_genuine.append(s['score'])\n",
" else:\n",
" scores_zei.append(s['score'])\n",
" return scores_zei, scores_genuine\n",
" \n",
"licit_dev_neg, licit_dev_pos = sort_licit_scores(licit_dev)\n",
"licit_eval_neg, licit_eval_pos = sort_licit_scores(licit_eval)\n",
"spoof_dev_neg, spoof_dev_pos = sort_spoof_scores(spoof_dev)\n",
"spoof_eval_neg, spoof_eval_pos = sort_spoof_scores(spoof_eval)\n",
"\n",
"from error_utils import epsc_thresholds\n",
"points = 10\n",
"omega, beta, thrs = epsc_thresholds(\n",
" licit_dev_neg,\n",
" licit_dev_pos,\n",
" spoof_dev_neg,\n",
" spoof_dev_pos,\n",
" points=points,\n",
" criteria='eer',\n",
" beta=0.5)\n",
"\n",
"print(omega)\n",
"print(beta)\n",
"print(thrs)\n",
"\n",
"from error_utils import all_error_rates\n",
"errors = all_error_rates(\n",
" licit_eval_neg, licit_eval_pos, spoof_eval_neg,\n",
" spoof_eval_pos, thrs, omega, beta\n",
" ) \n",
"errors\n",
"\n",
"from matplotlib import pyplot\n",
"pyplot.plot(omega, 100. * errors[4].flatten())\n",
"pyplot.plot(omega, 100. * errors[2].flatten())\n",
"pyplot.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Now we fuse FV scores and PAD scores "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fr_scores_dev_licit = get_scores_complete('data/fr-pad/scores-amir-2/vgg-replay/scores-dev')\n",
"pad_scores_dev = get_scores_complete('data/fr-pad/scores-amir-2/iqm-replay/scores-dev')\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAdgAAAFACAYAAAAf7G23AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xl4FEX6wPHvmwPCFSDIaUBOhUgwREDxxINDRARBBNE1ri7eoq63y3orrhfgueyqoGJAUFxdj1UQRBR+CIKA4UaQAHIfQc4k9fujZ+Ikmcz0JNPTk8z7eZ56ZqanpvttEvJOVVdXiTEGpZRSSoVXnNsBKKWUUlWRJlillFLKAZpglVJKKQdoglVKKaUcoAlWKaWUcoAmWKWUUsoBmmCVUkopB2iCVUoppRygCVYppZRyQILbAfiKi4szNWrUcDsMpZRSUeLgwYPGGFMpG4NRlWBr1KjB77//7nYYSimlooSIHHI7hvKqlN8KlFJKqWinCVYppZRygCZYpZRSygFRdQ1WKaVizbFjx8jNzeXw4cNuh+KqpKQkUlNTSUxMdDuUsNEEq5RSLsrNzaVOnTq0bNkSEXE7HFcYY9i1axe5ubm0atXK7XDCRruIlVLKRYcPH6ZBgwYxm1wBRIQGDRpUuVa8JlillHJZLCdXr6r4b6AJVimlVKUlIm+KyHYRWe6zLUVEvhKRNZ7H+p7tIiLjRGStiCwVkUwnY3M0wYrIBhFZJiJLRGShk8dSSilVPrVr1y72+sUXXyQpKYl9+/YVbZs9ezYiwhtvvFG0bfHixYgIzz33HABZWVm0atWKjIwMMjMzmTdvXqntp5xyCjNnzgxn+BOAPiW23Q/MNMa0A2Z6XgNcBLTzlBHAa+EMpKRIDHI6zxizMwLH4eef4fvvI3EkZVdyMnTrBi1bQhXsAVKqSsrOzqZr165Mnz6drKysou3p6elMmTKF6667DoDJkydzyimnFPvss88+y+DBg/nyyy+54YYbWLp0abHts2bNYsSIEaxZsyYssRpj5ohIyxKbLwV6eJ5PBGYD93m2v22MMcB8EaknIk2NMVvDEkwJVWoU8axZcNttbkeh/GnSBLp3h9RUtyMprUsXuOIKqF7d7UiUct+6des4cOAAzz77LE899VSxBNuiRQv279/Ptm3baNSoEV988QV9+/b1u59zzjmHtWvXltrevXt3Nm/eHEpICSV6QMcbY8YH+Uxjb9I0xmwVkUae7ccDm3zq5Xq2VcoEa4AvRcQA//T3jyIiI7Ca6lSrVq1CB8vKgoEDK7QLFWbbtsH8+TBvnvU4e7bbERWXnw8vvQT33Qe33go33ggNGrgdVRXWo4f1GG2/CFHijjtgyZLw7jMjA8aMsV8/OzubYcOGcfbZZ7Nq1Sq2b99Oo0aNit4fPHgwU6dOpXPnzmRmZlK9jG+mn3zyCenp6aW2f/HFFwwYMCCUU8g3xnQJ5QMB+OtHM2HadylOJ9gzjTFbPN8evhKRlcaYOb4VPEl3PECtWrUqdKK1a1tFRY/jj4fMTLj5Zrcj8c8Y+OoreOEF+Nvf4IknrJa2b9GEq2LJ5MmTmT59OnFxcVx22WVMnTqVW265pej9IUOGcMUVV7By5UqGDRvG9yWuy91zzz088cQTNGzYsNj12nvuuYd7772X7du3M3/+fKdPY5u361dEmgLbPdtzgeY+9VKBLU4F4WiCNcZs8TxuF5HpQDdgTuBPKRU5ItCrl1WWL4d//xvmzoVnnoGCAqtOu3Z/JNs+fazryUo5IZSWphOWLl3KmjVr6NmzJwBHjx6ldevWxRJskyZNSExM5KuvvmLs2LGlEqz3WmtJzz77LJdddhnjxo3jmmuuYdGiRU6eysfANcBoz+N/fLbfKiKTgdOAfU5dfwUHRxGLSC0RqeN9DvQClgf+lFLu6djR+gO3cCHs3w/ffAOjR0NaGnzxBdx0E7RpA4MGwXffWa1fpaqS7OxsHnnkETZs2MCGDRvYsmULmzdvZuPGjcXqPfbYYzzzzDPEx8eHtP+4uDhGjhxJYWEh//vf/8ISs4hkA/OAk0QkV0Suw0qsPUVkDdDT8xrgM2A9sBb4F+Bo35qTLdjGwHTPzcMJwHvGmC8cPJ5SYVOzJpxzjlXASqbr1sGbb8Lrr8OHH1qjowcMgDPOsAZK1arlbsyVQr9+bkegApg8eTKff/55sW0DBw5k8uTJnHbaaUXbzjjjjHIfQ0T429/+xj/+8Q969+5d7v14GWOGlfHWBX7qGuAWP3UdISaKvobXqlXL6ILrKtr9/jtMnAivvmrdGgYQH28l3Oeft7qSlbJrxYoVdOjQwe0wooK/fwsROWiMqZRfX3UmJ6VCVKuWNWhr+XLYuRP++1+4/37YvBnOOgvuuQcOHXI7SqWU2zTBKlUBDRrAxRdbo4+XL4e//AWeew46d4YFC9yOLgr16PHHrTpKVXGaYJUKkzp1rOuzX30FBw/CRRfBnj1uR6Uqg2i6VOeWqvhvoAlWqTC78EL4+GMruT75pNvRqGiXlJTErl27qmSCscu7HmxSUpLboYRVlZoqUalokZEB114L48b9cXuPUv6kpqaSm5vLjh073A7FVUlJSaRG41yqFaCjiJVyyJYtcOKJ1uQU06a5HU2U0KkSVYh0FLFSqpRmzaw5jj/4AL791u1oosSQIVZRKgZoC1YpBx08aLVimzWzFjuI06+0SoVEW7BKKb9q1oSnnoIffoC333Y7mihw8KBVlIoB2oJVymGFhdaUi0uXwqJF1uIBMUuvwaoQaQtWKVWmuDh47z1ITLQuPx4+7HZESqlI0ASrVAS0aGHNX7xkCfz1r25Ho5SKBE2wSkVIv35Wcn31VXj/fbejUUo5TROsUhH09NNw+ulw/fXW4gBKqapLE6xSEZSYCBMmQF4evPuu29G4ICvLKkrFAB1FrJQLTjsNjh6FxYvdjkSp6KajiJVSIRk2zBrwtHKl25FE2M6dVlEqBmiCVcoFQ4aACEye7HYkETZ4sFWUigGaYJVyQbNmcO65VoKNoqs0Sqkw0gSrlEuGDoVVq6yuYqVU1aMJVimXDBoECQkx2E2sVIzQBKuUS447Dnr2tBJsYaHb0Silwk0TrFIuGjYMfv3VWsouJtx0k1WUigF6H6xSLtq/Hxo3tmZ2euklt6NRKvrofbBKqXJJToa+feGDD2JkNPGmTVZRKgZoglXKZT16wNatsGWL25FEwNVXW0WpGKAJVimXZWZajz/+6G4cSqnw0gSrlMtOOcWa1UkTrFJViyZYpVxWuzacdJImWKWqGk2wSkWBzExNsEpVNQluB6CUshLse+/B9u3QqJHb0Tjor391OwKlIkYTrFJRwDvQafFi6N3b3VgcdcklbkegVMRoF7FSUaBzZ+uxyncTr1plFaVigLZglYoC9epB69YxkGBvuMF6nD3b1TCUigRtwSoVJTIzrS5ipVTVoAlWqSiRmQnr1sHevW5HopQKB02wSkUJ70AnXYBdqapBE6xSUSJmBjopFSN0kJNSUaJRI0hNreIJ9m9/czsCpSJGE6xSUaTKz+h04YVuR6CqIBG5E7geMMAy4FqgKTAZSAF+BK42xhyNZFzaRaxUFMnMhJUr4fff3Y7EIUuW6EVmFVYicjxwO9DFGNMRiAeGAs8ALxpj2gF7gOsiHZsmWKWiSGamtfD6Tz+5HYlD7rjDKkqFVwJQQ0QSgJrAVuB8YJrn/YnAgEgH5XiCFZF4EVksIv91+lhKVXannmo9VuluYqXCyBizGXgO+BUrse4DFgF7jTH5nmq5wPGRji0SLdiRwIoIHEepSq9pU2uwk044oVSRBBFZ6FNG+L4pIvWBS4FWQDOgFnCRn/0Y50MtztFBTiKSClwMPAnc5eSxlKoKRKB9e1i71u1IlIoa+caYLgHevxD4xRizA0BEPgTOAOqJSIKnFZsKbHE+1OKcbsGOAe4FCh0+jlJVRps2mmCVCsGvwOkiUlNEBLgAyAFmAYM9da4B/hPpwBxLsCLSD9hujFkUpN4Ib9M/Pz8/UFWlYkLbtrBlSxUdSfzUU1ZRKkyMMf+HNZjpR6xbdOKA8cB9wF0ishZoALwR6djEGGe6pUXkaeBqIB9IApKBD40xV5X1mVq1apnfq+RfFaXse/99uOIKWLoU0tPdjkYpd4nIQWNMLbfjKA/HWrDGmAeMManGmJZY9yR9HSi5KqUsbdtaj1Wym/j7762iVAzQmZyUijJt2liPVTLBPvig9ajrwaoYEJEEa4yZDcyOxLGUquzq1oWGDatoglUqhuhMTkpFobZtNcEqVdlpglUqCmmCVary0wSrVBRq2xY2bYLDh92ORClVXjrISako1LatNen/L79Ahw5uRxNGY8a4HYFSEaMJVqko5DuSuEol2IwMtyNQKmK0i1ipKFRl74WdMcMqSsUAbcEqFYVSUiAp6RCff76JJk0CzjbKsGHDIhRVGDzxhPV44YXuxqFUBGgLVqkoJAJHj65g3TpxOxSlVDlpglUqSrVvn8AvvySQk5PjdihKqXLQBKtUlDrxxDjgBMaMeVWTrFKVkCZYpaJUkyYHMCaOP/3pb4wdO1aTrFKVjCZYpaJU48Z5ANSu3ZmRI0dWjST7z39aRakYoAlWqSjVpMkBALZtq01aWlrVSLInnWQVpWKAJlilolRy8mGSko7x2291AKpGkv3kE6soFQM0wSoVpUSgceMDbN9eu2hbpU+yzz9vFaVigCZYpaJY48Z5RS1Yr0qfZJWKEZpglYpiVgu2FoWFxSec8E2ySqnopAlWqSjWpEkeBQXx7NpVs9R73iSrlIpOmmCVilI5OTk0bmyNJC7ZTeyVlpYWyZCUUiHQBKtUlBo7dix5eQsB2LLFf4KtdN55xypKxYCgCVZE4iMRiFKquJEjR/LGG0+SlHSI3Ny6bocTHs2bW0WpGGCnBbtWRJ4VEe2LUiqC0tLSuOOOkRw7toTVqxPdDic8pkyxilIxwE6C7QSsBv4tIvNFZISIJDscl1IKK8l26pTApk3J/PxzFbgl57XXrKJUDAiaYI0xecaYfxljzgDuBR4GtorIRBFp63iESsW4jh3jgBTGjHlP73tVqhKxdQ1WRPqLyHRgLPA80Br4BPjM4fiUinmpqfsAGDDgIZ1cQqlKxE4X8RrgUuBZY0xnY8wLxphtxphpwBfOhqeUSk3dD0BCQiedwUmpSsROgv2TMeY6Y8z33g0iciaAMeZ2xyJTSgFQr94hatY8Sm5uXZ0mUalKxE6CHedn20vhDkQp5Z+I1U28ebN1q06lTrLTpllFqRiQUNYbItIdOANoKCJ3+byVDOi9sUpF0PHH7+OHH5pjjJVwfZPs448/7nZ49h13nNsRKBUxZSZYoBpQ21PHdxqZ/cBgJ4NSShWXmrqPWbPasn9/derWPQL8kWSTk5MZOXJk0GkThw0bFolQA5swwXrMynIzCqUioswEa4z5BvhGRCYYYzZGMCalFNZcxN6k6R3olJtbl7p1txfV8W3J2kmyrtMEq2JImddgRWSM5+nLIvJxyRKh+JSKWb7XWL236vibMrFSX5NVqgoLNMjJOyP3c1j3vpYsSikH+SZN70hi70CnkjTJKhV9ykywxphFnsdvvAVYCuzxPFdKOcg3aa5YkUNq6r6Ak/5rklUqugQa5ASAiMwG+nvqLgF2iMg3xpi7An4wTI4dO0Zubi6HDx+OxOFUFZCUlERqaiqJiZV/gnzfpNm2bX/Wrk23Xb9SXJNVqgoLmmCBusaY/SJyPfCWMeZhEVnqdGBeubm51KlTh5YtWyIikTqsqqSMMezatYvc3FxatWrldjhh4U2azz77AUeOdGXfvj9GEgeqH5VJ9jOdXVXFDjsTTSSISFNgCPBfh+Mp5fDhwzRo0ECTq7JFRGjQoEGV6/FIS0tj0KD2AHz33R5b9aOyu7hmTasoFQPsJNjHgP8Ba40xP4hIa6z5iSNGk6sKRVX9fTnzzHoATJ2aYytpRmWSffVVqygVA+wsVzfVGNPJGHOz5/V6Y8wg50NTSvnyjiTu2HGI7aTpm2SjwvvvW0WpMBKReiIyTURWisgKEekuIiki8pWIrPE81o90XHYGOTUE/gK09K1vjPmzc2EFMH58ePc3YkTAt6dPn86jjz5abNvSpUv59NNPueiii8IayuzZs7n00kuLXTt87rnnuPDCCxk3bhyvvfYamZmZvPnmm1x88cXs3LmTBx54gCuuuMLW/idMmECvXr1o1qxZqfeysrLo168fgwdHdpKuQDGp4rxzEh882DKka6zeJKtUFTYW+MIYM1hEqgE1gQeBmcaY0SJyP3A/cF8kg7IzyOk/wLfADKDA2XCiz8CBAxk4cGDR6/HjxzNp0iR69+5t6/PGGIwxxMXZ6Y2Hs88+m//+t/Sl7ldffZXPP/+cVq1aMX/+fI4dO8aSJUvsnQRQUFDAhAkT6NixY1Qls/LEVFBQQHx8bE6Hffzx+1i4MDXkgUxRNdBJqTASkWTgHCALwBhzFDgqIpcCPTzVJgKziXCCtfNXv6Yx5j5jzPvGmA+8xfHIotDq1at57LHHeOedd4oS5rPPPkvXrl3p1KkTDz/8MAAbNmygQ4cO3HzzzWRmZrJp0yays7NJT0+nY8eO3HdfaD/jG2+8kfXr19O/f3+eeeYZrrrqKpYsWUJGRgbr1q1j5syZdO7cmfT0dP785z9z5Ig1wrRly5Y89thjnHXWWWRnZ7Nw4UKGDx9ORkYGhw4dKvN4LVu25MEHH6R79+506dKFH3/8kd69e9OmTRtef/11wGptn3POOQwcOJC0tDRuvPFGCgsLAfyea0FBAVlZWXTs2JH09HRefPFFpk2bViomO+cydepUxo0bR1paGp06dWLo0KEh/XtWZk2b5pGXl8TBg4nReY1VqfBLEJGFPqVkt2NrYAfwlogsFpF/i0gtoLExZiuA57FRhOO2lWD/KyJ9HY8kyh07dowrr7yS5557jhYtWgDw5ZdfsmbNGhYsWMCSJUtYtGgRc+bMAWDVqlX86U9/YvHixSQmJnLffffx9ddfs2TJEn744Qc++ugjv8f59ttvycjIKCrr1q3j9ddfp1mzZsyaNYv77ruPf//735x99tksWbKE448/nqysLKZMmcKyZcvIz8/ntddeK9pfUlISc+fO5aqrrqJLly5MmjSJJUuWUKNGjYDn27x5c+bNm8fZZ59NVlYW06ZNY/78+fz9738vqrNgwQKef/55li1bxrp16/jwww/ZsmWL33NdsmQJmzdvZvny5Sxbtoxrr72WwYMHF4tJRGydy9ChQxk9ejSLFy9m6dKlRUm/qvGXNFNSDgKwe7f189Mkq2JAvjGmi08peZ0wAcgEXjPGdAZ+x+oOdp2dBDsSK8keFpH9IpInIvuDfUhEkkRkgYj8JCI/i8ijwT4TzUaNGsXJJ59crLX05Zdf8uWXX9K5c2cyMzNZuXIla9ZYA6xPOOEETj/9dAB++OEHevToQcOGDUlISGD48OFFibgkb+L0ljZt2gSMa9WqVbRq1YoTTzwRgGuuuabYvu1eny2pf//+AKSnp3PaaadRp04dGjZsSFJSEnv37gWgW7dutG7dmvj4eIYNG8bcuXPLPNfWrVuzfv16brvtNr744guSk5MrdC6dOnVi+PDhvPvuuyQk2LnSUfn4S5p/JNg/bnWpVEl29myrKBU+uUCuMeb/PK+nYSXcbZ5bTPE8bi/j846xM4q4jjEmzhiTZIxJ9rwu/dextCPA+caYU4AMoI+InF7RgN0we/ZsPvjgA15++eVi240xPPDAA0XJcO3atVx33XUA1KpVq1g9f6ZPn17UUl24cGG5Yitr316+cYSievXqAMTFxRU9977Oz88HSt8OIyJlxlO/fn1++uknevTowSuvvML1119fqk4o5/Lpp59yyy23sGjRIk499dSimKoSf0kzJcXq2ve2YL0qVZJVKoyMMb8Bm0TkJM+mC4Ac4GPgGs+2a7DGE0VU0AQrlqtEZJTndXMR6Rbsc8ZywPMy0VMC/wWNQnv27OHaa6/l7bffpk6dOsXe6927N2+++SYHDlinuXnzZrZvL/0l6bTTTuObb75h586dFBQUkJ2dzbnnnsvAgQOLknOXLl3KFV/79u3ZsGEDa9euBeCdd97h3HPP9Vu3Tp065OXlles4/ixYsIBffvmFwsJCpkyZwllnnVXmue7cuZPCwkIGDRrE448/zo8//lgqJrvnUlhYyKZNmzjvvPP4xz/+wd69e4t+BlWJv6RZv743wZaerKFSJNnnnrOKUuF1GzDJM8tgBvAUMBroKSJrgJ6e1xFlp2/tVaAQOB94HDgAvAJ0DfZBEYkHFgFtgVd8mvC+dUYAIwCqVasWPJogt9WE2+uvv8727du56aabim333h6zYsUKunfvDkDt2rV59913S41wbdq0KU8//TTnnXcexhj69u3LpZde6vd43muwXn/7298C3jqTlJTEW2+9xeWXX05+fj5du3blxhtv9Fs3KyuLG2+8kRo1ajBv3ryg12GD6d69O/fffz/Lli0rGvAUFxfn91x/+uknrr322qKBUE8//bTfmOycS0FBAVdddRX79u3DGMOdd95JvXr1KnQu0crfaOHk5MPs2eP/ZxfV0yQCeEfI3323u3GoKsUYswTw10q5INKx+JJg3XIi8qMxJlNEFnsuICMiP3m6fu0dRKQeMB24zRizvKx6tWrVMr///nuxbStWrKBDhw52D6UiZPbs2Tz33HN+bymKBlXh9yY7O7voeU5OTlHSfOedu0hJOcg99/i/jl+yvjfJDhs2zPGYg+rRw3rU67DKJhE5aIwp37Uul9kZ5HTM0xI1UDTxRGEoBzHG7MW6B6lPqAEqpYq3TBMTt/vtIi6rftR2FytVxdlJsOOwWp+NRORJYC5W/3ZAItLQ03JFRGoAFwIrKxCriiI9evSI2tZrVeVNmhs3zmXHjuBL8WmSVcpddkYRTwLuBZ4GtgIDjDFTbey7KTDLc9H5B+ArY4z+RVaqAtLS0jjjjJYcPFibpUtX2aofVXMR16hhFaVigJ1RxOlAOtY9RLONMSvs7NgYs9QY09mzUEBHY8xjFYxVKQWcdFJtAF566YOQJvyPCp9/bhWlYkCZCVZE6orIbOAj4EpgOPAfEZnlmftRKeUC72QTgwbdHtKqOkqpyArUgn0cWAi0M8YMNMYMAE7E6u59MhLBKaVK8ybYunUr4TXWxx+3ilKVlIj0FJGv7NQNdB/shUAnY0zRiGFjTIGIPAgsq2CM5XZJ9iVh3d8nwz4JWmfbtm3ceeedzJ8/n/r161OtWjXuvffeYqvsVNTHH39MTk4O998fFVNoqiiQk5Pjt+XpO9lE9+5Rft9rSTNnWo+jRrkbh1JBiMj5wOtAM6ye3KeAtwHBZiMzUAv2qDGm1Pxznm1HQo62kjLGMGDAAM455xzWr1/PokWLmDx5Mrm5uWE9Tv/+/TW5qmLKapnWrHmM6tWP6YT/SjnreaxJkBpgzW88H3jHGHOqMeZDOzsIlGCTRKSziGSWKKcC1QN8rkr5+uuvqVatWrEZhU444QRuu+02CgoKuOeee4qWq/vnP/8JWJMw9OjRg8GDB9O+fXuGDx9eNM9uy5Yt2blzJwALFy6kh+fG+wkTJnDrrbcC1uxGt99+O2eccQatW7dm2rRpRcf2tzyeqprKSpoi1pzElXbCf6UqB2OMmW2MOWKM+QjYYYwJaTh+oC7ircALZbz3WygHqcx+/vlnMjMz/b73xhtvULduXX744QeOHDnCmWeeSa9evQBYvHgxP//8M82aNePMM8/ku+++46yzzrJ93K1btzJ37lxWrlxJ//79GTx4cLHl8Ywx9O/fnzlz5nDOOeeE5VxVdAk07WH9+odKTZcY9dMkKlW51BORy3xei+9rO63YMhOsMea8CgZXJd1yyy3MnTuXatWqccIJJ7B06dKiFua+fftYs2YN1apVo1u3bqSmpgKQkZHBhg0bQkqwAwYMIC4ujrS0NLZt2wYUXx4P4MCBA6xZs0YTbBVWVtJMSTnIypUNbdePGg0auB2BUnZ9A1xSxmsDlD/BKsvJJ5/MBx98UPT6lVdeYefOnXTp0oUWLVrw0ksv0bt372KfmT17drEl3uLj44uWU0tISCia8P7w4cNlHtf3897uZe/yeDfccEPFT0xVGv6SZkrKIfbsqUlhIcTFBa8fNXz+LykVzYwx11Z0H3amSoxp559/PocPH+a1114r2nbwoHWbRO/evXnttdc4duwYAKtXr6bkYgUltWzZkkWLFgEUS9x22F0eT1U9Ja+xpqQcpKAgjry8JFv1lVKhEZHTROQnETkgIvNEJOTVQypdC9bObTXhJCJ89NFH3HnnnfzjH/+gYcOG1KpVi2eeeYbLL7+cDRs2kJmZiTGGhg0b8tFHHwXc38MPP8x1113HU089xWmnnRZSLL169fK7PF6jRo3KfX6q8vBNmn36dAC6sHt3DerW9d8TUrIlGxUeeMB69CxXqFQUewW4G5gD9AfGAL0DfqIEO8vVfQC8CXzue0+sE3S5OhUuVeH3xne5Ol85OTm88MK3HDw4m7/+dQ6nnro54H68S9ft37/fiTBDo8vVqRC5tVydd6nWsl7bYaeL+DWsqRLXiMhoEWkfYpxKqTBKS0vjL3+5CICcnL226kdNC1apyqOeiFzmLX5eBxW0i9gYMwOYISJ1gWHAVyKyCfgX8K4x5lhFzkApFbquXU9ApICZM1dx6qn7gw5kiqqBTkpVDpEZRSwiDYCrgKuBxcAk4CzgGqCH7XCVUmERF2eoX/8wqakXMHZsj+gbLaxUJReOUcRBE6yIfAi0B94BLjHGbPW8NUVEFlY0AKWUf2XNReyVknKIwsJm0XtLjj+ee8OVinYicleg940xZU3EVMTONdh/G2PSjDFPe5OriFT3HKCLrUiVUiELdotNSspBdu+uUbluyXn3XasoFf2ew+q5bQDUBuqUKEHZ6SJ+AvisxLZ5QEijqZRSoQnWMq1f/xDLljUFonxyCRV2FV1VLNK3O1ZSmcBQ4GJgEZANzDTBbr3xUWaCFZEmwPFADRHpjLVED0AyULOszzmtrFsXvLy3JNj9IzNs2LCus+XGAAAgAElEQVSgdeLj40lPTyc/P58OHTowceJEataM7D/B3r17ee+997j55ptDqrdlyxZuv/32YgsGVMSOHTto1qwZL7/8crEZpZ566ikefPDBkGItS1ZWFv369WPw4MFhibmyCpY0U1IOcuhQIgcPJlCzZn7lSLJ33GE9jhnjbhxKBWGMWQIsAe4XkTOwBvm+JCL3GWM+trOPQF3EvbGayKlYk/4/7yl3AQ9WJHAnOdFdVqNGDZYsWcLy5cupVq0ar7/+erH3jTFF0x86Ze/evbz66qsh12vWrFnYkivA1KlTOf3000t90XnqqadCjlUFF+j3OSXFWhd2z55KtKrOkiVWUaqSEJGGQGcgHcgFbE+fV2aCNcZM9Ez4n2WMOc+n9Le7Fp4T7PzRcPKPzNlnn83atWvZsGEDHTp04OabbyYzM5NNmzbx5Zdf0r17dzIzM7n88suLpjS8//77SUtLo1OnTtx9992A1RIcNGgQXbt2pWvXrnz33XcAPPLII/z5z3+mR48etG7dmnHjxhXtY926dWRkZHDPPfdw4MABLrjgAjIzM0lPT+c///mP33obNmygY8eOgDX38bXXXkt6ejqdO3dm1qxZgLVU3mWXXUafPn1o164d9957b5nnn52dzfPPP09ubi6bN28uOuahQ4fIyMhg+PDhtmMFePvtt+nUqROnnHIKV199danjjRo1iqysLAoLC/3+O8aCsn6fU1KsKTu968IGq6+Usk9ErhWRL4CpWD24Q4wxPY0x8+3uI1AX8VXGmHeBlv5GU9kZQeUEu91fTnSX5efn8/nnn9OnTx8AVq1axVtvvcWrr77Kzp07eeKJJ5gxY0bRVIovvPACt956K9OnT2flypWICHv3WhMDjBw5kjvvvJOzzjqLX3/9ld69e7NixQoAVq5cyaxZs8jLy+Okk07ipptuYvTo0Sxfvpwlnm//+fn5TJ8+neTkZHbu3Mnpp59O//79S9XbsGFDUfyvvPIKAMuWLWPlypX06tWL1atXA7BkyRIWL15M9erVOemkk7jtttto3rx5sfPftGkTv/32G926dWPIkCFMmTKFu+66i9GjR/Pyyy8XO6adWHNycnjyySf57rvvOO6449i9e3ex4917773s27ePt956iz179vj9d4wVZU34D8VbsIHqK6VC8gawDPgVq0e3l4gUvWmM6R9sB4G6iL1TU/kbPWVrBJUTQvlmHq5v8t7WmXcFneuuuw6wFl4//fTTAZg/fz45OTmceeaZZGRkMHHiRDZu3EhycjJJSUlcf/31fPjhh0XXbmfMmMGtt95KRkYG/fv3Z//+/eTl5QFw8cUXU716dY477jgaNWpUtFydL2MMDz74IJ06deLCCy9k8+bNfuv5mjt3blErsX379pxwwglFCfaCCy6gbt26JCUlkZaWxsaNG0t9fvLkyQwZMgSAoUOHBr0eHizWr7/+msGDB3PccccBkJKSUvSZxx9/nL179/LPf/4TESnz3zGWlPx9rl/fSrAlW7Bl1VdKheQ84HasS6XP8cdlUm8JKtB6sP/0PD5a4TDDKNRv5uH4Ju+9BltSrVp/TI9pjKFnz55+k86CBQuYOXMmkydP5uWXX+brr7+msLCQefPmUaNG6T+OZS1152vSpEns2LGDRYsWkZiYSMuWLQMuf+eNsSx2jpmdnc22bduYNGkSYA2gWrNmDe3atQt43LJiNcbg+43QV9euXVm0aBG7d+8mJSWFhIQEv/+Osabk73Pt2peye3fZXzZ86z/++OMRjLQMJ57odgRK2WKM+cbfdhFpjjW62O/7vspswYrIuECl/GFXXKjfzCPxTf7000/nu+++Y+3atYC1pN3q1as5cOAA+/bto2/fvowZM6YoUffq1YuXX3656PP+ErivOnXqFLVwwVrcvVGjRiQmJjJr1qyiFmfJer7OOeecouS4evVqfv31V0466SRb57dq1Sp+//13Nm/ezIYNG9iwYQMPPPAAkydPBiAxMbFo2T67sV5wwQW8//777Nq1C6BYF3GfPn24//77ufjii8nLyyvz3zEW+f4+16y5h127Arfmo2ou4vHj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\n",
"text/plain": [
"<Figure size 504x360 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fused_scores = get_scores_complete('data/fr-pad/scores-amir-2/fusion_result/scores-dev')\n",
"pos, neg, attacks = split_scores_genuine_zei_attacks(fused_scores)\n",
"fig = plot_scores_distributions_zei_attacks_genuine(neg, pos, attacks, n_bins=(50, 10, 20), threshold_height=5)\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"ename": "ImportError",
"evalue": "cannot import name 'bob_fusion_decision_boundary'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-15-dd59ad8e478d>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mbob\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfusion\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbase\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscript\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mbob_fusion_decision_boundary\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mImportError\u001b[0m: cannot import name 'bob_fusion_decision_boundary'"
]
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -6,7 +6,11 @@
"source": [
"# Speaker PAD\n",
"\n",
"In this excerise, we present audio examples of genuine (bona fide) samples and different types of attacks from VoicePA database. We show how different the spectrograms and MFCC features are for genuines and different types of attacks."
"In this exercise, we present audio examples of genuine (bona fide) samples and different types of attacks from VoicePA database. We show how different the spectrograms and MFCC features are for genuines and different types of attacks.\n",
"\n",
"### VoicePA database\n",
"\n",
"Database homepage: __[voicePA](https://www.idiap.ch/dataset/voicepa)__"
]
},
{
......@@ -160,7 +164,7 @@
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": true
"scrolled": false
},
"outputs": [
{
......@@ -321,7 +325,9 @@
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
......@@ -439,7 +445,9 @@
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
......@@ -9,7 +9,9 @@
"In this example, we will use image quality measures to detect presentation attacks.\n",
"\n",
"\n",
"## Replay-Mobile database\n",
"### Replay-Mobile database\n",
"\n",
"Database homepage: __[Replay-Mobile](https://www.idiap.ch/dataset/replay-mobile)__\n",
"\n",
"\n",
"Examples of recorded attacks\n",
......
......@@ -12,11 +12,15 @@
"\n",
"Here we will use the pulse signal to discriminate real attempts from attacks\n",
"- The pulse is derived from micro-variation in skin pixels color\n",
"- Particularly weel-suited to mask-attacks\n",
"- Particularly well-suited to mask-attacks\n",
"\n",
"\n",
"![](data/rppg/system-overview.png)\n",
"\n"
"\n",
"\n",
"### 3DMAD database\n",
"\n",
"Database homepage: __[3DMAD](https://www.idiap.ch/dataset/3dmad)__"
]
},
{
......
......@@ -15,7 +15,18 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## Let's look at a face verification system without PAD"
"## Let's look at a face verification system without PAD\n",
"\n",
"- The face verification algorithm is based on the VGG-face CNN\n",
"- We use the Replay-Attack database\n",
"\n",
"### VGG Face\n",
"\n",
"Information on the face recognition model can be found __[here](http://www.robots.ox.ac.uk/~vgg/software/vgg_face/)__\n",
"\n",
"### Replay-Attack database\n",
"\n",
"Database homepage: __[Replay-Attack](https://www.idiap.ch/dataset/replayattack)__"
]
},
{
......
10 attack devel/attack/fixed/attack_highdef_client010_session01_highdef_photo_adverse -0.090828761
10 attack devel/attack/fixed/attack_highdef_client010_session01_highdef_photo_controlled -0.103012788
10 attack devel/attack/fixed/attack_highdef_client010_session01_highdef_video_adverse -0.285384971
10 attack devel/attack/fixed/attack_highdef_client010_session01_highdef_video_controlled -0.201223498
10 attack devel/attack/fixed/attack_mobile_client010_session01_mobile_photo_adverse -0.131611160
10 attack devel/attack/fixed/attack_mobile_client010_session01_mobile_photo_controlled -0.126880668
10 attack devel/attack/fixed/attack_mobile_client010_session01_mobile_video_adverse -0.146745126
10 attack devel/attack/fixed/attack_mobile_client010_session01_mobile_video_controlled -0.175848286
10 attack devel/attack/fixed/attack_print_client010_session01_highdef_photo_adverse -0.122963153
10 attack devel/attack/fixed/attack_print_client010_session01_highdef_photo_controlled -0.110916669
10 attack devel/attack/hand/attack_highdef_client010_session01_highdef_photo_adverse -0.195627156
10 attack devel/attack/hand/attack_highdef_client010_session01_highdef_photo_controlled 0.003402020
10 attack devel/attack/hand/attack_highdef_client010_session01_highdef_video_adverse -0.355227030
10 attack devel/attack/hand/attack_highdef_client010_session01_highdef_video_controlled -0.266846691
10 attack devel/attack/hand/attack_mobile_client010_session01_mobile_photo_adverse -0.102218864
10 attack devel/attack/hand/attack_mobile_client010_session01_mobile_photo_controlled -0.095116664
10 attack devel/attack/hand/attack_mobile_client010_session01_mobile_video_adverse -0.153419279
10 attack devel/attack/hand/attack_mobile_client010_session01_mobile_video_controlled -0.606672313
10 attack devel/attack/hand/attack_print_client010_session01_highdef_photo_adverse -0.025933886
10 attack devel/attack/hand/attack_print_client010_session01_highdef_photo_controlled -0.114806920
101 attack devel/attack/fixed/attack_highdef_client101_session01_highdef_photo_adverse -0.135535996
101 attack devel/attack/fixed/attack_highdef_client101_session01_highdef_photo_controlled -0.094282590
101 attack devel/attack/fixed/attack_highdef_client101_session01_highdef_video_adverse -0.111706589
101 attack devel/attack/fixed/attack_highdef_client101_session01_highdef_video_controlled -0.115759239
101 attack devel/attack/fixed/attack_mobile_client101_session01_mobile_photo_adverse -0.145352909
101 attack devel/attack/fixed/attack_mobile_client101_session01_mobile_photo_controlled -0.105751477
101 attack devel/attack/fixed/attack_mobile_client101_session01_mobile_video_adverse -0.161817364
101 attack devel/attack/fixed/attack_mobile_client101_session01_mobile_video_controlled -0.111329386
101 attack devel/attack/fixed/attack_print_client101_session01_highdef_photo_adverse -0.338783287
101 attack devel/attack/fixed/attack_print_client101_session01_highdef_photo_controlled -0.203421504
101 attack devel/attack/hand/attack_highdef_client101_session01_highdef_photo_adverse -0.114992324
101 attack devel/attack/hand/attack_highdef_client101_session01_highdef_photo_controlled -0.099511323
101 attack devel/attack/hand/attack_highdef_client101_session01_highdef_video_adverse -0.112183944
101 attack devel/attack/hand/attack_highdef_client101_session01_highdef_video_controlled -0.118854139
101 attack devel/attack/hand/attack_mobile_client101_session01_mobile_photo_adverse -0.157960483
101 attack devel/attack/hand/attack_mobile_client101_session01_mobile_photo_controlled -0.097219921
101 attack devel/attack/hand/attack_mobile_client101_session01_mobile_video_adverse -0.140297611
101 attack devel/attack/hand/attack_mobile_client101_session01_mobile_video_controlled -0.101073939
101 attack devel/attack/hand/attack_print_client101_session01_highdef_photo_adverse -0.214107064
101 attack devel/attack/hand/attack_print_client101_session01_highdef_photo_controlled -0.171032735
111 attack devel/attack/fixed/attack_highdef_client111_session01_highdef_photo_adverse -0.119881099
111 attack devel/attack/fixed/attack_highdef_client111_session01_highdef_photo_controlled -0.111938040
111 attack devel/attack/fixed/attack_highdef_client111_session01_highdef_video_adverse -0.219783791
111 attack devel/attack/fixed/attack_highdef_client111_session01_highdef_video_controlled -0.197538509
111 attack devel/attack/fixed/attack_mobile_client111_session01_mobile_photo_adverse -0.193555601
111 attack devel/attack/fixed/attack_mobile_client111_session01_mobile_photo_controlled -0.125283730
111 attack devel/attack/fixed/attack_mobile_client111_session01_mobile_video_adverse -0.229180383
111 attack devel/attack/fixed/attack_mobile_client111_session01_mobile_video_controlled -0.223710180
111 attack devel/attack/fixed/attack_print_client111_session01_highdef_photo_adverse -0.133221150
111 attack devel/attack/fixed/attack_print_client111_session01_highdef_photo_controlled -0.125440814
111 attack devel/attack/hand/attack_highdef_client111_session01_highdef_photo_adverse -0.107954366
111 attack devel/attack/hand/attack_highdef_client111_session01_highdef_photo_controlled -0.122216002
111 attack devel/attack/hand/attack_highdef_client111_session01_highdef_video_adverse -0.300500254
111 attack devel/attack/hand/attack_highdef_client111_session01_highdef_video_controlled -0.242919430
111 attack devel/attack/hand/attack_mobile_client111_session01_mobile_photo_adverse -0.141785530
111 attack devel/attack/hand/attack_mobile_client111_session01_mobile_photo_controlled -0.136879526
111 attack devel/attack/hand/attack_mobile_client111_session01_mobile_video_adverse -0.186504264
111 attack devel/attack/hand/attack_mobile_client111_session01_mobile_video_controlled -0.262064443
111 attack devel/attack/hand/attack_print_client111_session01_highdef_photo_adverse -0.127788773
111 attack devel/attack/hand/attack_print_client111_session01_highdef_photo_controlled -0.006859780
113 attack devel/attack/fixed/attack_highdef_client113_session01_highdef_photo_adverse -0.040511291
113 attack devel/attack/fixed/attack_highdef_client113_session01_highdef_photo_controlled -0.064283078
113 attack devel/attack/fixed/attack_highdef_client113_session01_highdef_video_adverse -0.073570006
113 attack devel/attack/fixed/attack_highdef_client113_session01_highdef_video_controlled -0.096283478
113 attack devel/attack/fixed/attack_mobile_client113_session01_mobile_photo_adverse -0.062821376
113 attack devel/attack/fixed/attack_mobile_client113_session01_mobile_photo_controlled -0.048617677
113 attack devel/attack/fixed/attack_mobile_client113_session01_mobile_video_adverse -0.062454174
113 attack devel/attack/fixed/attack_mobile_client113_session01_mobile_video_controlled -0.084063991
113 attack devel/attack/fixed/attack_print_client113_session01_highdef_photo_adverse -0.088670068
113 attack devel/attack/fixed/attack_print_client113_session01_highdef_photo_controlled -0.075247405
113 attack devel/attack/hand/attack_highdef_client113_session01_highdef_photo_adverse -0.010148579
113 attack devel/attack/hand/attack_highdef_client113_session01_highdef_photo_controlled -0.086039891
113 attack devel/attack/hand/attack_highdef_client113_session01_highdef_video_adverse -0.090934377
113 attack devel/attack/hand/attack_highdef_client113_session01_highdef_video_controlled -0.098446667
113 attack devel/attack/hand/attack_mobile_client113_session01_mobile_photo_adverse -0.061479185
113 attack devel/attack/hand/attack_mobile_client113_session01_mobile_photo_controlled -0.056720646
113 attack devel/attack/hand/attack_mobile_client113_session01_mobile_video_adverse -0.063464960
113 attack devel/attack/hand/attack_mobile_client113_session01_mobile_video_controlled -0.091524015
113 attack devel/attack/hand/attack_print_client113_session01_highdef_photo_adverse -0.061423506
113 attack devel/attack/hand/attack_print_client113_session01_highdef_photo_controlled -0.083296045
114 attack devel/attack/fixed/attack_highdef_client114_session01_highdef_photo_adverse -0.227408832
114 attack devel/attack/fixed/attack_highdef_client114_session01_highdef_photo_controlled -0.194720625
114 attack devel/attack/fixed/attack_highdef_client114_session01_highdef_video_adverse -0.239868304
114 attack devel/attack/fixed/attack_highdef_client114_session01_highdef_video_controlled -0.273120370
114 attack devel/attack/fixed/attack_mobile_client114_session01_mobile_photo_adverse -0.258416838
114 attack devel/attack/fixed/attack_mobile_client114_session01_mobile_photo_controlled -0.226700573
114 attack devel/attack/fixed/attack_mobile_client114_session01_mobile_video_adverse -0.238421015
114 attack devel/attack/fixed/attack_mobile_client114_session01_mobile_video_controlled -0.249662805
114 attack devel/attack/fixed/attack_print_client114_session01_highdef_photo_adverse -0.253934474
114 attack devel/attack/fixed/attack_print_client114_session01_highdef_photo_controlled -0.203230551
114 attack devel/attack/hand/attack_highdef_client114_session01_highdef_photo_adverse -0.222462469
114 attack devel/attack/hand/attack_highdef_client114_session01_highdef_photo_controlled -0.202755795
114 attack devel/attack/hand/attack_highdef_client114_session01_highdef_video_adverse -0.264816971
114 attack devel/attack/hand/attack_highdef_client114_session01_highdef_video_controlled -0.269155881
114 attack devel/attack/hand/attack_mobile_client114_session01_mobile_photo_adverse -0.232137627
114 attack devel/attack/hand/attack_mobile_client114_session01_mobile_photo_controlled -0.208030862
114 attack devel/attack/hand/attack_mobile_client114_session01_mobile_video_adverse -0.267631878
114 attack devel/attack/hand/attack_mobile_client114_session01_mobile_video_controlled -0.254752894
114 attack devel/attack/hand/attack_print_client114_session01_highdef_photo_adverse -0.192781025
114 attack devel/attack/hand/attack_print_client114_session01_highdef_photo_controlled -0.239777686
116 attack devel/attack/fixed/attack_highdef_client116_session01_highdef_photo_adverse -0.219717081
116 attack devel/attack/fixed/attack_highdef_client116_session01_highdef_photo_controlled -0.202699811
116 attack devel/attack/fixed/attack_highdef_client116_session01_highdef_video_adverse -0.239099391
116 attack devel/attack/fixed/attack_highdef_client116_session01_highdef_video_controlled -0.255396881
116 attack devel/attack/fixed/attack_mobile_client116_session01_mobile_photo_adverse -0.305440010
116 attack devel/attack/fixed/attack_mobile_client116_session01_mobile_photo_controlled -0.231672662
116 attack devel/attack/fixed/attack_mobile_client116_session01_mobile_video_adverse -0.277519501
116 attack devel/attack/fixed/attack_mobile_client116_session01_mobile_video_controlled -0.212629408
116 attack devel/attack/fixed/attack_print_client116_session01_highdef_photo_adverse -0.239912494
116 attack devel/attack/fixed/attack_print_client116_session01_highdef_photo_controlled -0.229647678
116 attack devel/attack/hand/attack_highdef_client116_session01_highdef_photo_adverse -0.214115767
116 attack devel/attack/hand/attack_highdef_client116_session01_highdef_photo_controlled -0.227035320
116 attack devel/attack/hand/attack_highdef_client116_session01_highdef_video_adverse -0.286992130
116 attack devel/attack/hand/attack_highdef_client116_session01_highdef_video_controlled -0.279968072
116 attack devel/attack/hand/attack_mobile_client116_session01_mobile_photo_adverse -0.287205734
116 attack devel/attack/hand/attack_mobile_client116_session01_mobile_photo_controlled -0.231600118
116 attack devel/attack/hand/attack_mobile_client116_session01_mobile_video_adverse -0.248523535
116 attack devel/attack/hand/attack_mobile_client116_session01_mobile_video_controlled -0.267851706
116 attack devel/attack/hand/attack_print_client116_session01_highdef_photo_adverse -0.267189267
116 attack devel/attack/hand/attack_print_client116_session01_highdef_photo_controlled -0.264994432
118 attack devel/attack/fixed/attack_highdef_client118_session01_highdef_photo_adverse -0.308477951
118 attack devel/attack/fixed/attack_highdef_client118_session01_highdef_photo_controlled -0.346888195
118 attack devel/attack/fixed/attack_highdef_client118_session01_highdef_video_adverse -0.391728432
118 attack devel/attack/fixed/attack_highdef_client118_session01_highdef_video_controlled -0.413993775
118 attack devel/attack/fixed/attack_mobile_client118_session01_mobile_photo_adverse -0.336256386
118 attack devel/attack/fixed/attack_mobile_client118_session01_mobile_photo_controlled -0.313516469
118 attack devel/attack/fixed/attack_mobile_client118_session01_mobile_video_adverse -0.264004164
118 attack devel/attack/fixed/attack_mobile_client118_session01_mobile_video_controlled -0.365649762
118 attack devel/attack/fixed/attack_print_client118_session01_highdef_photo_adverse -0.308513211
118 attack devel/attack/fixed/attack_print_client118_session01_highdef_photo_controlled -0.486278077
118 attack devel/attack/hand/attack_highdef_client118_session01_highdef_photo_adverse -0.304362665
118 attack devel/attack/hand/attack_highdef_client118_session01_highdef_photo_controlled -0.317788380
118 attack devel/attack/hand/attack_highdef_client118_session01_highdef_video_adverse -0.357205963
118 attack devel/attack/hand/attack_highdef_client118_session01_highdef_video_controlled -0.575676477
118 attack devel/attack/hand/attack_mobile_client118_session01_mobile_photo_adverse -0.310519001
118 attack devel/attack/hand/attack_mobile_client118_session01_mobile_photo_controlled -0.413344821
118 attack devel/attack/hand/attack_mobile_client118_session01_mobile_video_adverse -0.335097833
118 attack devel/attack/hand/attack_mobile_client118_session01_mobile_video_controlled -0.604113539
118 attack devel/attack/hand/attack_print_client118_session01_highdef_photo_adverse -0.278936301
118 attack devel/attack/hand/attack_print_client118_session01_highdef_photo_controlled -0.542848504
119 attack devel/attack/fixed/attack_highdef_client119_session01_highdef_photo_adverse -0.345540215
119 attack devel/attack/fixed/attack_highdef_client119_session01_highdef_photo_controlled -0.345834462
119 attack devel/attack/fixed/attack_highdef_client119_session01_highdef_video_adverse -0.300481486
119 attack devel/attack/fixed/attack_highdef_client119_session01_highdef_video_controlled -0.262121019
119 attack devel/attack/fixed/attack_mobile_client119_session01_mobile_photo_adverse -0.305872498
119 attack devel/attack/fixed/attack_mobile_client119_session01_mobile_photo_controlled -0.266885383
119 attack devel/attack/fixed/attack_mobile_client119_session01_mobile_video_adverse -0.308882100
119 attack devel/attack/fixed/attack_mobile_client119_session01_mobile_video_controlled -0.254312944
119 attack devel/attack/fixed/attack_print_client119_session01_highdef_photo_adverse -0.459624680
119 attack devel/attack/fixed/attack_print_client119_session01_highdef_photo_controlled -0.399988609
119 attack devel/attack/hand/attack_highdef_client119_session01_highdef_photo_adverse -0.379656053
119 attack devel/attack/hand/attack_highdef_client119_session01_highdef_photo_controlled -0.313838176
119 attack devel/attack/hand/attack_highdef_client119_session01_highdef_video_adverse -0.286370167
119 attack devel/attack/hand/attack_highdef_client119_session01_highdef_video_controlled -0.228407086
119 attack devel/attack/hand/attack_mobile_client119_session01_mobile_photo_adverse -0.939020091
119 attack devel/attack/hand/attack_mobile_client119_session01_mobile_photo_controlled -0.273488506
119 attack devel/attack/hand/attack_mobile_client119_session01_mobile_video_adverse -0.312677116
119 attack devel/attack/hand/attack_mobile_client119_session01_mobile_video_controlled -0.251472506
119 attack devel/attack/hand/attack_print_client119_session01_highdef_photo_adverse -0.499957262
119 attack devel/attack/hand/attack_print_client119_session01_highdef_photo_controlled -0.446487895
15 attack devel/attack/fixed/attack_highdef_client015_session01_highdef_photo_adverse -0.287211590
15 attack devel/attack/fixed/attack_highdef_client015_session01_highdef_photo_controlled -0.206225182
15 attack devel/attack/fixed/attack_highdef_client015_session01_highdef_video_adverse -0.289211975
15 attack devel/attack/fixed/attack_highdef_client015_session01_highdef_video_controlled -0.229055166
15 attack devel/attack/fixed/attack_mobile_client015_session01_mobile_photo_adverse -0.220744710
15 attack devel/attack/fixed/attack_mobile_client015_session01_mobile_photo_controlled -0.184908401
15 attack devel/attack/fixed/attack_mobile_client015_session01_mobile_video_adverse -0.185534459
15 attack devel/attack/fixed/attack_mobile_client015_session01_mobile_video_controlled -0.257684756
15 attack devel/attack/fixed/attack_print_client015_session01_highdef_photo_adverse 0.703404646
15 attack devel/attack/fixed/attack_print_client015_session01_highdef_photo_controlled -0.191329517
15 attack devel/attack/hand/attack_highdef_client015_session01_highdef_photo_adverse -0.431159866
15 attack devel/attack/hand/attack_highdef_client015_session01_highdef_photo_controlled -0.128615630
15 attack devel/attack/hand/attack_highdef_client015_session01_highdef_video_adverse -0.247761300
15 attack devel/attack/hand/attack_highdef_client015_session01_highdef_video_controlled -0.260892105
15 attack devel/attack/hand/attack_mobile_client015_session01_mobile_photo_adverse -0.346267999
15 attack devel/attack/hand/attack_mobile_client015_session01_mobile_photo_controlled -0.215188610
15 attack devel/attack/hand/attack_mobile_client015_session01_mobile_video_adverse -0.263651453
15 attack devel/attack/hand/attack_mobile_client015_session01_mobile_video_controlled -0.284995311
15 attack devel/attack/hand/attack_print_client015_session01_highdef_photo_adverse 0.094625550
15 attack devel/attack/hand/attack_print_client015_session01_highdef_photo_controlled -0.228869632
17 attack devel/attack/fixed/attack_highdef_client017_session01_highdef_photo_adverse -0.075313428
17 attack devel/attack/fixed/attack_highdef_client017_session01_highdef_photo_controlled -0.128689435
17 attack devel/attack/fixed/attack_highdef_client017_session01_highdef_video_adverse -0.117734279
17 attack devel/attack/fixed/attack_highdef_client017_session01_highdef_video_controlled -0.129851568
17 attack devel/attack/fixed/attack_mobile_client017_session01_mobile_photo_adverse -0.115658993
17 attack devel/attack/fixed/attack_mobile_client017_session01_mobile_photo_controlled -0.162584219
17 attack devel/attack/fixed/attack_mobile_client017_session01_mobile_video_adverse -0.121365610
17 attack devel/attack/fixed/attack_mobile_client017_session01_mobile_video_controlled -0.191005464
17 attack devel/attack/fixed/attack_print_client017_session01_highdef_photo_adverse -0.118869467
17 attack devel/attack/fixed/attack_print_client017_session01_highdef_photo_controlled -0.194932106
17 attack devel/attack/hand/attack_highdef_client017_session01_highdef_photo_adverse -0.098762699
17 attack devel/attack/hand/attack_highdef_client017_session01_highdef_photo_controlled -0.118593656
17 attack devel/attack/hand/attack_highdef_client017_session01_highdef_video_adverse -0.132822499
17 attack devel/attack/hand/attack_highdef_client017_session01_highdef_video_controlled -0.151735913
17 attack devel/attack/hand/attack_mobile_client017_session01_mobile_photo_adverse -0.102970940
17 attack devel/attack/hand/attack_mobile_client017_session01_mobile_photo_controlled -0.143848006
17 attack devel/attack/hand/attack_mobile_client017_session01_mobile_video_adverse -0.135912810
17 attack devel/attack/hand/attack_mobile_client017_session01_mobile_video_controlled -0.242416345
17 attack devel/attack/hand/attack_print_client017_session01_highdef_photo_adverse -0.155985641
17 attack devel/attack/hand/attack_print_client017_session01_highdef_photo_controlled -0.219800502
22 attack devel/attack/fixed/attack_highdef_client022_session01_highdef_photo_adverse -0.125952173
22 attack devel/attack/fixed/attack_highdef_client022_session01_highdef_photo_controlled -0.174748824
22 attack devel/attack/fixed/attack_highdef_client022_session01_highdef_video_adverse -0.123574868
22 attack devel/attack/fixed/attack_highdef_client022_session01_highdef_video_controlled -0.195101731
22 attack devel/attack/fixed/attack_mobile_client022_session01_mobile_photo_adverse -0.143206826
22 attack devel/attack/fixed/attack_mobile_client022_session01_mobile_photo_controlled -0.176282908
22 attack devel/attack/fixed/attack_mobile_client022_session01_mobile_video_adverse -0.118481071
22 attack devel/attack/fixed/attack_mobile_client022_session01_mobile_video_controlled -0.207339573
22 attack devel/attack/fixed/attack_print_client022_session01_highdef_photo_adverse -0.200877944
22 attack devel/attack/fixed/attack_print_client022_session01_highdef_photo_controlled -0.297893459
22 attack devel/attack/hand/attack_highdef_client022_session01_highdef_photo_adverse -0.131244593
22 attack devel/attack/hand/attack_highdef_client022_session01_highdef_photo_controlled -0.197073394
22 attack devel/attack/hand/attack_highdef_client022_session01_highdef_video_adverse -0.130794138
22 attack devel/attack/hand/attack_highdef_client022_session01_highdef_video_controlled -0.190203278
22 attack devel/attack/hand/attack_mobile_client022_session01_mobile_photo_adverse -0.111615709
22 attack devel/attack/hand/attack_mobile_client022_session01_mobile_photo_controlled -0.146610087
22 attack devel/attack/hand/attack_mobile_client022_session01_mobile_video_adverse -0.117954943
22 attack devel/attack/hand/attack_mobile_client022_session01_mobile_video_controlled -0.294444961
22 attack devel/attack/hand/attack_print_client022_session01_highdef_photo_adverse -0.221950969
22 attack devel/attack/hand/attack_print_client022_session01_highdef_photo_controlled -0.268690702
29 attack devel/attack/fixed/attack_highdef_client029_session01_highdef_photo_adverse -0.389318980
29 attack devel/attack/fixed/attack_highdef_client029_session01_highdef_photo_controlled -0.306873531
29 attack devel/attack/fixed/attack_highdef_client029_session01_highdef_video_adverse -0.413769237
29 attack devel/attack/fixed/attack_highdef_client029_session01_highdef_video_controlled -0.354627205
29 attack devel/attack/fixed/attack_mobile_client029_session01_mobile_photo_adverse -0.372154083
29 attack devel/attack/fixed/attack_mobile_client029_session01_mobile_photo_controlled -0.345860179
29 attack devel/attack/fixed/attack_mobile_client029_session01_mobile_video_adverse -0.415166412
29 attack devel/attack/fixed/attack_mobile_client029_session01_mobile_video_controlled -0.439979885
29 attack devel/attack/fixed/attack_print_client029_session01_highdef_photo_adverse -0.309869718
29 attack devel/attack/fixed/attack_print_client029_session01_highdef_photo_controlled -0.306423597
29 attack devel/attack/hand/attack_highdef_client029_session01_highdef_photo_adverse -0.400360109
29 attack devel/attack/hand/attack_highdef_client029_session01_highdef_photo_controlled -0.319715329
29 attack devel/attack/hand/attack_highdef_client029_session01_highdef_video_adverse -0.402125185
29 attack devel/attack/hand/attack_highdef_client029_session01_highdef_video_controlled -0.368513532
29 attack devel/attack/hand/attack_mobile_client029_session01_mobile_photo_adverse -0.306273196
29 attack devel/attack/hand/attack_mobile_client029_session01_mobile_photo_controlled -0.311731065
29 attack devel/attack/hand/attack_mobile_client029_session01_mobile_video_adverse -0.361575176
29 attack devel/attack/hand/attack_mobile_client029_session01_mobile_video_controlled -0.342963270
29 attack devel/attack/hand/attack_print_client029_session01_highdef_photo_adverse -0.298994375
29 attack devel/attack/hand/attack_print_client029_session01_highdef_photo_controlled -0.323961410
3 attack devel/attack/fixed/attack_highdef_client003_session01_highdef_photo_adverse -0.187775404
3 attack devel/attack/fixed/attack_highdef_client003_session01_highdef_photo_controlled -0.228064882
3 attack devel/attack/fixed/attack_highdef_client003_session01_highdef_video_adverse -0.248711130
3 attack devel/attack/fixed/attack_highdef_client003_session01_highdef_video_controlled -0.240199251
3 attack devel/attack/fixed/attack_mobile_client003_session01_mobile_photo_adverse -0.266542054
3 attack devel/attack/fixed/attack_mobile_client003_session01_mobile_photo_controlled -0.217836560
3 attack devel/attack/fixed/attack_mobile_client003_session01_mobile_video_adverse -0.292228971
3 attack devel/attack/fixed/attack_mobile_client003_session01_mobile_video_controlled -0.252375734
3 attack devel/attack/fixed/attack_print_client003_session01_highdef_photo_adverse -0.272566386
3 attack devel/attack/fixed/attack_print_client003_session01_highdef_photo_controlled -0.278859723
3 attack devel/attack/hand/attack_highdef_client003_session01_highdef_photo_adverse -0.220605864
3 attack devel/attack/hand/attack_highdef_client003_session01_highdef_photo_controlled -0.228368135
3 attack devel/attack/hand/attack_highdef_client003_session01_highdef_video_adverse -0.212182304
3 attack devel/attack/hand/attack_highdef_client003_session01_highdef_video_controlled -0.265877679
3 attack devel/attack/hand/attack_mobile_client003_session01_mobile_photo_adverse -0.215727248
3 attack devel/attack/hand/attack_mobile_client003_session01_mobile_photo_controlled -0.221113517
3 attack devel/attack/hand/attack_mobile_client003_session01_mobile_video_adverse -0.295633150
3 attack devel/attack/hand/attack_mobile_client003_session01_mobile_video_controlled -0.279726398
3 attack devel/attack/hand/attack_print_client003_session01_highdef_photo_adverse -0.279221719
3 attack devel/attack/hand/attack_print_client003_session01_highdef_photo_controlled -0.279868175
30 attack devel/attack/fixed/attack_highdef_client030_session01_highdef_photo_adverse -0.188616251
30 attack devel/attack/fixed/attack_highdef_client030_session01_highdef_photo_controlled -0.183044405
30 attack devel/attack/fixed/attack_highdef_client030_session01_highdef_video_adverse -0.200033969
30 attack devel/attack/fixed/attack_highdef_client030_session01_highdef_video_controlled -0.218031527
30 attack devel/attack/fixed/attack_mobile_client030_session01_mobile_photo_adverse -0.191886478
30 attack devel/attack/fixed/attack_mobile_client030_session01_mobile_photo_controlled -0.154612536
30 attack devel/attack/fixed/attack_mobile_client030_session01_mobile_video_adverse -0.229891443
30 attack devel/attack/fixed/attack_mobile_client030_session01_mobile_video_controlled -0.168886382
30 attack devel/attack/fixed/attack_print_client030_session01_highdef_photo_adverse 0.419559815
30 attack devel/attack/fixed/attack_print_client030_session01_highdef_photo_controlled 0.686715442
30 attack devel/attack/hand/attack_highdef_client030_session01_highdef_photo_adverse -0.243524188
30 attack devel/attack/hand/attack_highdef_client030_session01_highdef_photo_controlled -0.196372785
30 attack devel/attack/hand/attack_highdef_client030_session01_highdef_video_adverse -0.192153389
30 attack devel/attack/hand/attack_highdef_client030_session01_highdef_video_controlled -0.231073920
30 attack devel/attack/hand/attack_mobile_client030_session01_mobile_photo_adverse -0.183941916
30 attack devel/attack/hand/attack_mobile_client030_session01_mobile_photo_controlled -0.163747997
30 attack devel/attack/hand/attack_mobile_client030_session01_mobile_video_adverse -0.165571011
30 attack devel/attack/hand/attack_mobile_client030_session01_mobile_video_controlled -0.356182572
30 attack devel/attack/hand/attack_print_client030_session01_highdef_photo_adverse -0.193364117
30 attack devel/attack/hand/attack_print_client030_session01_highdef_photo_controlled -0.195548433
5 attack devel/attack/fixed/attack_highdef_client005_session01_highdef_photo_adverse -0.150259947
5 attack devel/attack/fixed/attack_highdef_client005_session01_highdef_photo_controlled -0.095916700
5 attack devel/attack/fixed/attack_highdef_client005_session01_highdef_video_adverse -0.144589830
5 attack devel/attack/fixed/attack_highdef_client005_session01_highdef_video_controlled -0.137852621
5 attack devel/attack/fixed/attack_mobile_client005_session01_mobile_photo_adverse -0.159241837
5 attack devel/attack/fixed/attack_mobile_client005_session01_mobile_photo_controlled -0.168462132
5 attack devel/attack/fixed/attack_mobile_client005_session01_mobile_video_adverse -0.153333576
5 attack devel/attack/fixed/attack_mobile_client005_session01_mobile_video_controlled -0.210208223
5 attack devel/attack/fixed/attack_print_client005_session01_highdef_photo_adverse -0.230985877
5 attack devel/attack/fixed/attack_print_client005_session01_highdef_photo_controlled -0.144247094
5 attack devel/attack/hand/attack_highdef_client005_session01_highdef_photo_adverse -0.122041463
5 attack devel/attack/hand/attack_highdef_client005_session01_highdef_photo_controlled -0.113839039
5 attack devel/attack/hand/attack_highdef_client005_session01_highdef_video_adverse -0.110912912
5 attack devel/attack/hand/attack_highdef_client005_session01_highdef_video_controlled -0.166984190
5 attack devel/attack/hand/attack_mobile_client005_session01_mobile_photo_adverse -0.152244412
5 attack devel/attack/hand/attack_mobile_client005_session01_mobile_photo_controlled -0.113429293
5 attack devel/attack/hand/attack_mobile_client005_session01_mobile_video_adverse -0.179163006
5 attack devel/attack/hand/attack_mobile_client005_session01_mobile_video_controlled -0.233076636
5 attack devel/attack/hand/attack_print_client005_session01_highdef_photo_adverse -0.242359559
5 attack devel/attack/hand/attack_print_client005_session01_highdef_photo_controlled -0.169534391
10 10 devel/real/client010_session01_webcam_authenticate_adverse_1 -0.059604595
10 10 devel/real/client010_session01_webcam_authenticate_adverse_2 -0.092265689
10 10 devel/real/client010_session01_webcam_authenticate_controlled_1 1.090214954
10 10 devel/real/client010_session01_webcam_authenticate_controlled_2 1.075535824
101 101 devel/real/client101_session01_webcam_authenticate_adverse_1 1.058100484
101 101 devel/real/client101_session01_webcam_authenticate_adverse_2 1.040315256
101 101 devel/real/client101_session01_webcam_authenticate_controlled_1 1.067827160
101 101 devel/real/client101_session01_webcam_authenticate_controlled_2 1.049204756
111 111 devel/real/client111_session01_webcam_authenticate_adverse_1 1.056520460
111 111 devel/real/client111_session01_webcam_authenticate_adverse_2 1.019044852
111 111 devel/real/client111_session01_webcam_authenticate_controlled_1 1.051583097
111 111 devel/real/client111_session01_webcam_authenticate_controlled_2 1.058042704
113 113 devel/real/client113_session01_webcam_authenticate_adverse_1 1.101547266
113 113 devel/real/client113_session01_webcam_authenticate_adverse_2 1.082437078
113 113 devel/real/client113_session01_webcam_authenticate_controlled_1 1.138509537
113 113 devel/real/client113_session01_webcam_authenticate_controlled_2 1.132778345
114 114 devel/real/client114_session01_webcam_authenticate_adverse_1 0.908398010
114 114 devel/real/client114_session01_webcam_authenticate_adverse_2 0.742697354
114 114 devel/real/client114_session01_webcam_authenticate_controlled_1 0.888706954
114 114 devel/real/client114_session01_webcam_authenticate_controlled_2 0.193520241
116 116 devel/real/client116_session01_webcam_authenticate_adverse_1 0.906223103
116 116 devel/real/client116_session01_webcam_authenticate_adverse_2 0.942017222
116 116 devel/real/client116_session01_webcam_authenticate_controlled_1 0.956118311
116 116 devel/real/client116_session01_webcam_authenticate_controlled_2 0.950768022