229 lines
298 KiB
Plaintext
229 lines
298 KiB
Plaintext
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {
|
||
|
"id": "g9qov3ORzJow"
|
||
|
},
|
||
|
"source": [
|
||
|
"# TensorBird execute saved model\n",
|
||
|
"\n",
|
||
|
"The model has been train in [this notebook](https://colab.research.google.com/drive/1ZVIR-rOjYBwsmaxewlTT9alLnwLdFfy9#scrollTo=s4dIb12FKR4i)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 3,
|
||
|
"metadata": {
|
||
|
"colab": {
|
||
|
"base_uri": "https://localhost:8080/"
|
||
|
},
|
||
|
"executionInfo": {
|
||
|
"elapsed": 467,
|
||
|
"status": "ok",
|
||
|
"timestamp": 1615375390011,
|
||
|
"user": {
|
||
|
"displayName": "Samuel ORTION",
|
||
|
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjRGue2iC2EdXEyjeJY4NsXRcpEkauti9jPXOLyzQ=s64",
|
||
|
"userId": "18350365121775402037"
|
||
|
},
|
||
|
"user_tz": -60
|
||
|
},
|
||
|
"id": "ZdLxvb7VzFgK",
|
||
|
"outputId": "685add3b-7b1e-4415-ccfb-ec2f146911ca"
|
||
|
},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"2.4.1\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"import os\n",
|
||
|
"import pickle\n",
|
||
|
"import glob\n",
|
||
|
"from PIL import Image\n",
|
||
|
"import numpy as np\n",
|
||
|
"\n",
|
||
|
"import tensorflow as tf\n",
|
||
|
"\n",
|
||
|
"print(tf.version.VERSION)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 4,
|
||
|
"metadata": {
|
||
|
"executionInfo": {
|
||
|
"elapsed": 29824,
|
||
|
"status": "ok",
|
||
|
"timestamp": 1615374397372,
|
||
|
"user": {
|
||
|
"displayName": "Samuel ORTION",
|
||
|
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjRGue2iC2EdXEyjeJY4NsXRcpEkauti9jPXOLyzQ=s64",
|
||
|
"userId": "18350365121775402037"
|
||
|
},
|
||
|
"user_tz": -60
|
||
|
},
|
||
|
"id": "eiTEfd_zzcI_"
|
||
|
},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"model = tf.keras.models.load_model('../models/saved_model.pbtxt')"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 22,
|
||
|
"metadata": {
|
||
|
"executionInfo": {
|
||
|
"elapsed": 700,
|
||
|
"status": "ok",
|
||
|
"timestamp": 1615374976499,
|
||
|
"user": {
|
||
|
"displayName": "Samuel ORTION",
|
||
|
"photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GjRGue2iC2EdXEyjeJY4NsXRcpEkauti9jPXOLyzQ=s64",
|
||
|
"userId": "18350365121775402037"
|
||
|
},
|
||
|
"user_tz": -60
|
||
|
},
|
||
|
"id": "K6EKAevy2ZAp"
|
||
|
},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"array(['fricoe', 'prumod', 'pasdom', 'felcat', 'erirub', 'caycae',\n",
|
||
|
" 'parmaj'], dtype='<U6')"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 22,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"CLASS_NAMES = pickle.loads(open('../models/saved_model.pbtxt/labels.pickle', \"rb\").read())\n",
|
||
|
"CLASS_NAMES"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"metadata": {
|
||
|
"id": "5_O6-7fZ0C7Q"
|
||
|
},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"import pandas as pd\n",
|
||
|
"data = {'file_name': [], 'date': [], 'predicted_species': [], 'probability': []}\n",
|
||
|
"i = 0\n",
|
||
|
"image_paths = glob.glob('/home/ortion/Documents/PiCameraTrap/captures/raw/*/*.jpg')\n",
|
||
|
"\n",
|
||
|
"for image_path in image_paths:\n",
|
||
|
" i+=1\n",
|
||
|
" im = Image.open(image_path)\n",
|
||
|
" im = im.resize((100, 75))\n",
|
||
|
" im = np.array(im)\n",
|
||
|
" im = im / 255\n",
|
||
|
" predictions = model.predict(im[None, :, :])\n",
|
||
|
" idx = np.argmax(predictions)\n",
|
||
|
" prediction = CLASS_NAMES[idx]\n",
|
||
|
" data['file_name'].append(os.path.basename(image_path))\n",
|
||
|
" data['date'].append(os.path.basename(image_path).split('-')[1])\n",
|
||
|
" data['predicted_species'].append(prediction)\n",
|
||
|
" data['probability'].append(predictions[0][idx])\n",
|
||
|
" print(f'Treating {os.path.basename(image_path)} ({prediction}-{predictions[0][idx]}) {i}/{len(image_paths)}.')\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"df = pd.DataFrame(data)\n",
|
||
|
"df.to_csv(\"../data/analyses/guesses.csv\")"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 25,
|
||
|
"metadata": {
|
||
|
"id": "Dne-KrjP4AQV"
|
||
|
},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlAAAAIqCAYAAADrW3TiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOz9ecwt27YfhP3GnLOq1lpfs7vT3fY9Hu4wMQrEgiSWAoLYELBDGivggEMkg0VEFBCEgJNIOBEBIiXBIJQEIwJOAL1AcMACEkIAx4oiYwebyOb5+dl+7913m3POPWd3X7PWqqo558gfY8ymatXX7NPsvc+5a57z7bVWNbNmVY3fHP2YxMw4tmM7tmM7tmM7tmM7tvs386YHcGzHdmzHdmzHdmzH9lVrRwHq2I7t2I7t2I7t2I7tFdtRgDq2Yzu2Yzu2Yzu2Y3vFdhSgju3Yju3Yju3Yju3YXrEdBahjO7ZjO7ZjO7ZjO7ZXbEcB6tiO7diO7diO7diO7RXbUYA6tmM7tq9FI6KfJiImIvemx3Jsx/Y2tCMmvtx2FKCO7diO7diO7diO7dhesR0FqGM7tmM7tmM7tmM7tldsRwHqNTQi+g4R/UEi+oSInhLRP0NEfzER/Qf6+1Mi+peJ6KEe/w8S0b8+6+OfJqJ/Sr8/JqJ/gYh+RETPiejf0O2PiOjf0us81+/frvp4QET/PBF9SEQ/JKJ/lIjs63sSx/aT3Ijol4no9xDRzyl9/gtEtLoH3f53iegXieiSiH6JiP423W6J6H+l+PlFAH/T7HrfJKI/RETPiOjPE9HfVe37vUT0rxHRv6T9/iki+jU6vh8T0feJ6Le8todzbD+R7YiJr3Y7ClBfclMB5d8C8D0APw3gWwB+FgAB+McBfBPAXwLgOwB+r572LwH4GyqBygH4WwH8H3X//wnABsBfCuA9AP+kbjcA/gUAPwXguwB2AP6Zajj/IgAP4FcB+MsB/BYAf+cXda/Hdmz3aH8bgL8ewF8M4NcA+J/iFrolohMA/zSA/woznwH4LwL4T7SvvwvAb4XQ8m8E8Ntn1/pZAD+AYOy3A/jHiOivrfb/NgiWHgH4kwD+XR3LtwD8zwH8s1/MLR/bsd3ajpj4qjZmPv59iX8A/gsAPgHg7jjuvwbgT1a//28A/i79/lsB/Jx+/waACODRPa79nwXwXL+/D6AHsK72/w4A/+GbfkbHv5+MPwC/DODvrn7/jQD+wsJxNd2eAHgB4L9Z067u+w9m/f0WAAzAQRSSAOCs2v+PA/gX9fvvBfDvVft+G4ArAFZ/n2lfD9/0czv+fX3/jpj4av8dLVBffvsOgO8xs683EtH7RPSz6kq7gFid3qkO+QMA/nb9/rdDtILU3zNmfj6/EBFtiOifJaLvaZ9/BMBDtYL9FIAGwIdE9IKIXkC0ife+sDs9tmO7u32/+v49AN+8jW6Z+RrA3wLg74bQ7r9NRL9Oz//mQn+o9j1j5svZ/m9Vvz+uvu8AfMrMofoNAKef4R6P7dhepR0x8RVtRwHqy2/fB/BdOkwj/ccg0vxvYOZziJBE1f5/A8BfRkT/GYgF6l+u+nuc3Huz9g8A+LUA/irt87+k20nP6wG8w8wP9e+cmf/Sz3uDx3Zsr9C+U33/LoAf4Xa6BTP/u8z8myHW158H8M/p/g8X+kvtRxCcnM32//ALuo9jO7Yvqh0x8RVtRwHqy29/DELU/wQRnWiA4G+CmEOvALwkom8B+Afrk5h5D+D/AuBfAfDHmPlXdPuHEPfe/1YDDRsiSuA6g2gJL4joMYB/pOrvQwD/DwD/ayI6JyJDEsj+V3+J935sxzZvfw8RfVvp838C4P+MW+hWLbV/s8Z99BDMRN39rwL4H2h/jwD8w+k8Zv4+gP8PgH9cMfeXAfhdEEvvsR3b29SOmPiKtqMA9SU3NX/+Nkjg9q9AAvj+FgD/MwB/BYCXAP5tAH9w4fQ/AOA3oLjvUvudAEaI5vFjAH+fbv99ANYAPgXwRwH832fn/XcAtAB+DsBziID2jc94a8d2bJ+l/SsQQf4XAfwFAP8obqdbA+Dvh2jPzwD81QD+e7rvn4MEuf7/APwJHGLod0ASN34E4P8K4B9h5v/nF3w/x3Zsn7cdMfEVbaTBYcf2FjYi+i5ESPqAmS/e9HiO7dg+TyOiXwbwdx4n7GM7NmlHTHy129EC9ZY2Ikpaxs8ehadjO7ZjO7ZjO7a3qx3Xx3kLm/q2P4ZkSPwNb3g4x3Zsx3Zsx3ZsxzZrn8sCRUR/AxH9Wa1o+g/ffcax3acx8zUznzLzX6qBf8f2FWlHTNzcmPmnj66Kn7x2xMTN7YiJr3b7zDFQWlvoFwD8Zkhg9B8H8DuY+ee+uOEd27F9ddoRE8d2bNN2xMSxfZ3b57FA/ZUA/jwz/yIzD5AS8X/zFzOsYzu2r2Q7YuLYjm3ajpg4tq9t+zwxUN/CtOLpDwD8Vbed8OTJE/7uT313eSdjWkbyTbS3YgxflazINE5a+L18D/XW5cdczuWFS9DkrOk15qOZ7Ft8pozvf/+HePr02Rf5xo+Y+DKuP/2CQ5p7lfZ5zr2tzfsTWr7XVW55xhM0cXXwIqHfNJbbLlx/E0w8e/r8iInb2psewxeOiS+r3YaJm/lEPvWLwATwijx1hglWTDxbxsSXHkRORL8bwO8GgO9859v4w/+v/7CMjuTeSId20/fUlrZND8CEjpgAqrYx61eaHv9qY+Bq28JgPtMY+OC69YukvCN91ATBs6/Vb6oMjMzTffkUBjjVYJs9GL0uVd9FGIlAfg5U0ecM0JnS5drMei0yk2sRkfZL9dmzBzXZk8dwuH3GtJjBHPM95UcZPf66//JvO3ger6N9/TDxecfA0/d9MAYu40zdLeDyxmujou+MCcXDguTNHAsm0vGc6Ieq4w8xMbmHGwQoSljQTwZDPF2Ux0qgDJ0k3CS85THozjTRS4sHbHX+bJijYqLMLYwIZo/f8pv/Gwsj/vLbERNfBibmF6y/3oCJ+qSbMAGDjB+Ywicmxyd8vRomOGMDIDKKgwgwlE/Ut7GACU5o0e8kY5higsr4qvtbwkSMAX/9b/mvL4y4PInP2n6Iacn4b2OhJDwz/35m/o3M/BufvFMt9UbVS+fpd8y+51Pukvpp+v2A/9Lh77d2DPMD5i1TEkFeoxEg5L+7BlqIVACUPtN51ecBMusbodk51e88bhljuZbsTIJNLYAJISeC1/uYXL9mfOneE1OrQDTBh46pvr/JvX5h7YiJL3MMdXc3yEvTDpV27o0JPZtswQTmF178kU482E7638H4dExEFgSjNBvBMWbaZo6IHISB5EtMxzQVngDASH8zfKYj+AA3pT8ZyxETR0wsnF1joqbzA0zUSvvSjdyECQOQBZGFqTDBCRN6JqPGROJh02tMMMHKeyaY0F08/Sz7K0yY2/nE5xGg/jiAX01EfxERtQD+VgB/6O7TOH9kWFM1xJoYaU4RPP3k+ff5cZgwUprv/0xjWBrSq4yBqw0iHVN9RlYCbiLSNC664aeex6oFMGM6wS50paCiGZIJRbJf7iEBcj6e6dFcHS9aRdlT7vWG7kFFg5jcTw0GHT8R0tMsOkeZOGjCVL6U9hOKiS9qDGVfwgkrt5gYKO94hfktzzExv/DCdcsZFSZmdHY706mYVHXeFB1TZjaxKC0Mqpxb+luEdTUu0n6J6jc8Faomz4WPmPiJwMTBltmFF65bzpjzCd1OuCefOBzB4WXmmLhjUFX/+S5usKItYoLrBzgTsu6Bic/swmNmT0T/fUjZeAvg/8DM/+ndZ9ZCwW2Mc2k/TT9p/n3hvMVLfJ4xLB33WcawtC+RwF1M/qZ9SShLR9WuudmzO+gxbTcA8QEBT2+NplI/E4A4MYtm957+rt0ICYB5fWXW60KvO7UFL486T1718xJwc7obKgLbxGTLjBiLBvNFtZ9cTHxRY1jax9ONN55314Q7p0PCgcw/G+tkqs8utnpMdTMVJmoXXUVnup+zK6Se6E05JG0iCyKjYQMFb+X82+63Gg8B4n4hkCGAjLCbPEbZH3zEja7Qz9iOmHiTmLit3YC
|
||
|
"text/plain": [
|
||
|
"<Figure size 720x720 with 9 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {
|
||
|
"needs_background": "light"
|
||
|
},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"import matplotlib.pyplot as plt\n",
|
||
|
"import random\n",
|
||
|
"image_paths = glob.glob('/home/ortion/Documents/PiCameraTrap/captures/raw/2021-03-03/*.jpg')\n",
|
||
|
"fig = plt.figure(figsize=(10, 10))\n",
|
||
|
"rows = 3\n",
|
||
|
"cols = 3\n",
|
||
|
"axes=[]\n",
|
||
|
"for a in range(rows*cols):\n",
|
||
|
" im = Image.open(random.choice(image_paths))\n",
|
||
|
" im = im.resize((100, 75))\n",
|
||
|
" im = np.array(im)\n",
|
||
|
" im = im / 255\n",
|
||
|
" predictions = model.predict(im[None, :, :])\n",
|
||
|
" idx = np.argmax(predictions)\n",
|
||
|
" prediction = CLASS_NAMES[idx]\n",
|
||
|
" axes.append(fig.add_subplot(rows, cols, a+1))\n",
|
||
|
" axes[-1].set_title(prediction)\n",
|
||
|
" axes[-1].imshow(im)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": []
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": []
|
||
|
}
|
||
|
],
|
||
|
"metadata": {
|
||
|
"colab": {
|
||
|
"authorship_tag": "ABX9TyM/DfSJLUs+DeUzpchkAict",
|
||
|
"name": "TensorBird_execute_saved_model.ipynb",
|
||
|
"provenance": []
|
||
|
},
|
||
|
"kernelspec": {
|
||
|
"display_name": "tb-venv",
|
||
|
"language": "python",
|
||
|
"name": "tb-venv"
|
||
|
},
|
||
|
"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.8.5"
|
||
|
}
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 1
|
||
|
}
|