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": "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WhMDjBw5kjvvvJOzzjqLX3/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 @@ ...@@ -6,7 +6,11 @@
"source": [ "source": [
"# Speaker PAD\n", "# Speaker PAD\n",
"\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 @@ ...@@ -160,7 +164,7 @@
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": 3,
"metadata": { "metadata": {
"scrolled": true "scrolled": false
}, },
"outputs": [ "outputs": [
{ {
...@@ -321,7 +325,9 @@ ...@@ -321,7 +325,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5, "execution_count": 5,
"metadata": {}, "metadata": {
"scrolled": false
},
"outputs": [ "outputs": [
{ {
"data": { "data": {
...@@ -439,7 +445,9 @@ ...@@ -439,7 +445,9 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 8, "execution_count": 8,
"metadata": {}, "metadata": {
"scrolled": false
},
"outputs": [ "outputs": [
{ {
"data": { "data": {
...@@ -9,7 +9,9 @@ ...@@ -9,7 +9,9 @@
"In this example, we will use image quality measures to detect presentation attacks.\n", "In this example, we will use image quality measures to detect presentation attacks.\n",
"\n", "\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",
"\n", "\n",
"Examples of recorded attacks\n", "Examples of recorded attacks\n",
......
...@@ -12,11 +12,15 @@ ...@@ -12,11 +12,15 @@
"\n", "\n",
"Here we will use the pulse signal to discriminate real attempts from attacks\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", "- 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",
"\n", "\n",
"![](data/rppg/system-overview.png)\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 @@ ...@@ -15,7 +15,18 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "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