TensorBird/src/TensorBird_execute_saved_mo...

229 lines
298 KiB
Plaintext
Raw Permalink Normal View History

2021-03-15 11:01:48 +01:00
{
"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": "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
"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
}