[a5e8ec]: / LSTM - Experiments / test-lstm-v0.1

Download this file

1 lines (1 with data), 37.0 kB

1
{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[]},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"pepBl6EJYVSN","executionInfo":{"status":"ok","timestamp":1693522190485,"user_tz":300,"elapsed":8,"user":{"displayName":"César Mosqueira","userId":"11705195256143475621"}},"outputId":"6b956495-c0d5-40fa-f0bc-855c22fcb9ad"},"outputs":[{"output_type":"stream","name":"stdout","text":["sample_data\n"]}],"source":["!ls"]},{"cell_type":"code","source":["import tensorflow as tf\n","from tensorflow.keras.models import load_model\n","import requests\n","from sklearn.preprocessing import MinMaxScaler\n","import cv2\n","from IPython.display import HTML, display\n","import os\n","\n","import matplotlib.pyplot as plt\n","import pandas as pd\n","import numpy as np\n","import json"],"metadata":{"id":"bANmKxDwax5a","executionInfo":{"status":"ok","timestamp":1694558040850,"user_tz":300,"elapsed":3098,"user":{"displayName":"César Mosqueira","userId":"11705195256143475621"}}},"execution_count":1,"outputs":[]},{"cell_type":"code","source":["# Load the .h5 model\n","model_path = 'lstm_model_ex1.h5'\n","model = load_model(model_path)\n"],"metadata":{"id":"-T-zvVKwa6CQ","executionInfo":{"status":"error","timestamp":1694558055770,"user_tz":300,"elapsed":408,"user":{"displayName":"César Mosqueira","userId":"11705195256143475621"}},"colab":{"base_uri":"https://localhost:8080/","height":388},"outputId":"d7e1623a-5761-4e44-e177-9f3d4126ef73"},"execution_count":2,"outputs":[{"output_type":"error","ename":"OSError","evalue":"ignored","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mOSError\u001b[0m Traceback (most recent call last)","\u001b[0;32m<ipython-input-2-2ccb67afd767>\u001b[0m in \u001b[0;36m<cell line: 3>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Load the .h5 model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mmodel_path\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'lstm_model_ex1.h5'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mmodel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mload_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/src/saving/saving_api.py\u001b[0m in \u001b[0;36mload_model\u001b[0;34m(filepath, custom_objects, compile, safe_mode, **kwargs)\u001b[0m\n\u001b[1;32m 236\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 237\u001b[0m \u001b[0;31m# Legacy case.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 238\u001b[0;31m return legacy_sm_saving_lib.load_model(\n\u001b[0m\u001b[1;32m 239\u001b[0m \u001b[0mfilepath\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcustom_objects\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcustom_objects\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcompile\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 240\u001b[0m )\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/src/utils/traceback_utils.py\u001b[0m in \u001b[0;36merror_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 68\u001b[0m \u001b[0;31m# To get the full stack trace, call:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[0;31m# `tf.debugging.disable_traceback_filtering()`\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 70\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfiltered_tb\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 71\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mfiltered_tb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/src/saving/legacy/save.py\u001b[0m in \u001b[0;36mload_model\u001b[0;34m(filepath, custom_objects, compile, options)\u001b[0m\n\u001b[1;32m 232\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_str\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 233\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgfile\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexists\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_str\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 234\u001b[0;31m raise IOError(\n\u001b[0m\u001b[1;32m 235\u001b[0m \u001b[0;34mf\"No file or directory found at {filepath_str}\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 236\u001b[0m )\n","\u001b[0;31mOSError\u001b[0m: No file or directory found at lstm_model_ex1.h5"]}]},{"cell_type":"code","source":["model.summary()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"vRCgKdiUa-zW","executionInfo":{"status":"ok","timestamp":1693520666903,"user_tz":300,"elapsed":586,"user":{"displayName":"Francesco Bassino","userId":"12214195385968794219"}},"outputId":"ea43590e-04fc-49c1-bc53-1befec197998"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Model: \"sequential_1\"\n","_________________________________________________________________\n"," Layer (type) Output Shape Param # \n","=================================================================\n"," lstm_2 (LSTM) (None, 10, 128) 91648 \n"," \n"," dropout_2 (Dropout) (None, 10, 128) 0 \n"," \n"," lstm_3 (LSTM) (None, 64) 49408 \n"," \n"," dropout_3 (Dropout) (None, 64) 0 \n"," \n"," dense_1 (Dense) (None, 1) 65 \n"," \n","=================================================================\n","Total params: 141,121\n","Trainable params: 141,121\n","Non-trainable params: 0\n","_________________________________________________________________\n"]}]},{"cell_type":"markdown","source":["### Demonstrating 3 different responses"],"metadata":{"id":"o0SsLyIQl8Xj"}},{"cell_type":"code","source":["!ls"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"qrJH-78qncKO","executionInfo":{"status":"ok","timestamp":1693522233720,"user_tz":300,"elapsed":252,"user":{"displayName":"César Mosqueira","userId":"11705195256143475621"}},"outputId":"c205accb-e29f-45f5-a7e0-35a92b14a3d8"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["lstm_model_ex1.h5\n","sample_data\n","single_extracted_landmarks_ambiguous.csv\n","single_extracted_landmarks_bad.csv\n","single_extracted_landmarks.csv\n","single_extracted_landmarks_inclass.csv\n","single_extracted_landmarks_inclass_front.csv\n"]}]},{"cell_type":"code","source":["ambiguous_video = pd.read_csv('single_extracted_landmarks_ambiguous.csv')\n","good_video = pd.read_csv('single_extracted_landmarks.csv')\n","bad_video = pd.read_csv('single_extracted_landmarks_bad.csv')\n","inclass = pd.read_csv('single_extracted_landmarks_inclass.csv')\n","inclass_front = pd.read_csv('single_extracted_landmarks_inclass_front.csv')"],"metadata":{"id":"H0O6eZYzdxo7"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["inclass_front.head(15)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":519},"id":"RVloKimFphry","executionInfo":{"status":"ok","timestamp":1693522281614,"user_tz":300,"elapsed":263,"user":{"displayName":"César Mosqueira","userId":"11705195256143475621"}},"outputId":"b78f479f-f832-457c-ee56-f15783f81041"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" video group frame \\\n","0 single_video_inclass_front.mp4 1 5 \n","1 single_video_inclass_front.mp4 1 11 \n","2 single_video_inclass_front.mp4 1 17 \n","3 single_video_inclass_front.mp4 1 23 \n","4 single_video_inclass_front.mp4 1 29 \n","5 single_video_inclass_front.mp4 1 35 \n","6 single_video_inclass_front.mp4 1 41 \n","7 single_video_inclass_front.mp4 1 47 \n","8 single_video_inclass_front.mp4 1 53 \n","9 single_video_inclass_front.mp4 1 59 \n","10 single_video_inclass_front.mp4 2 71 \n","11 single_video_inclass_front.mp4 2 77 \n","12 single_video_inclass_front.mp4 2 83 \n","13 single_video_inclass_front.mp4 2 89 \n","14 single_video_inclass_front.mp4 2 95 \n","\n"," landmarks \n","0 [ 233.46 174.49 0.99463 259.... \n","1 [ 224.02 178.57 0.99599 250.... \n","2 [ 193.71 178.13 0.99595 220.... \n","3 [ 178.02 171.85 0.99656 205... \n","4 [ 202.7 170.08 0.99721 230.... \n","5 [ 237.13 170.73 0.99831 265.... \n","6 [ 252.49 171.97 0.99697 279.... \n","7 [ 286.41 183.08 0.99699 308.... \n","8 [ 315.89 188.04 0.99482 333.... \n","9 [ 308.8 183.55 0.99582 326.... \n","10 [ 332.22 182.48 0.99602 348.... \n","11 [ 320.52 185.4 0.99461 336.... \n","12 [ 311.52 193.42 0.99466 327.... \n","13 [ 309.39 198.32 0.99483 325.... \n","14 [ 318.19 201.38 0.99439 334.... "],"text/html":["\n"," <div id=\"df-cf3d7f15-1a34-4b95-b34a-ff0d26fef51f\" class=\"colab-df-container\">\n"," <div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>video</th>\n"," <th>group</th>\n"," <th>frame</th>\n"," <th>landmarks</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>1</td>\n"," <td>5</td>\n"," <td>[ 233.46 174.49 0.99463 259....</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>1</td>\n"," <td>11</td>\n"," <td>[ 224.02 178.57 0.99599 250....</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>1</td>\n"," <td>17</td>\n"," <td>[ 193.71 178.13 0.99595 220....</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>1</td>\n"," <td>23</td>\n"," <td>[ 178.02 171.85 0.99656 205...</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>1</td>\n"," <td>29</td>\n"," <td>[ 202.7 170.08 0.99721 230....</td>\n"," </tr>\n"," <tr>\n"," <th>5</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>1</td>\n"," <td>35</td>\n"," <td>[ 237.13 170.73 0.99831 265....</td>\n"," </tr>\n"," <tr>\n"," <th>6</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>1</td>\n"," <td>41</td>\n"," <td>[ 252.49 171.97 0.99697 279....</td>\n"," </tr>\n"," <tr>\n"," <th>7</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>1</td>\n"," <td>47</td>\n"," <td>[ 286.41 183.08 0.99699 308....</td>\n"," </tr>\n"," <tr>\n"," <th>8</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>1</td>\n"," <td>53</td>\n"," <td>[ 315.89 188.04 0.99482 333....</td>\n"," </tr>\n"," <tr>\n"," <th>9</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>1</td>\n"," <td>59</td>\n"," <td>[ 308.8 183.55 0.99582 326....</td>\n"," </tr>\n"," <tr>\n"," <th>10</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>2</td>\n"," <td>71</td>\n"," <td>[ 332.22 182.48 0.99602 348....</td>\n"," </tr>\n"," <tr>\n"," <th>11</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>2</td>\n"," <td>77</td>\n"," <td>[ 320.52 185.4 0.99461 336....</td>\n"," </tr>\n"," <tr>\n"," <th>12</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>2</td>\n"," <td>83</td>\n"," <td>[ 311.52 193.42 0.99466 327....</td>\n"," </tr>\n"," <tr>\n"," <th>13</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>2</td>\n"," <td>89</td>\n"," <td>[ 309.39 198.32 0.99483 325....</td>\n"," </tr>\n"," <tr>\n"," <th>14</th>\n"," <td>single_video_inclass_front.mp4</td>\n"," <td>2</td>\n"," <td>95</td>\n"," <td>[ 318.19 201.38 0.99439 334....</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>\n"," <div class=\"colab-df-buttons\">\n","\n"," <div class=\"colab-df-container\">\n"," <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-cf3d7f15-1a34-4b95-b34a-ff0d26fef51f')\"\n"," title=\"Convert this dataframe to an interactive table.\"\n"," style=\"display:none;\">\n","\n"," <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n"," <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n"," </svg>\n"," </button>\n","\n"," <style>\n"," .colab-df-container {\n"," display:flex;\n"," gap: 12px;\n"," }\n","\n"," .colab-df-convert {\n"," background-color: #E8F0FE;\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: #1967D2;\n"," height: 32px;\n"," padding: 0 0 0 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-convert:hover {\n"," background-color: #E2EBFA;\n"," box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: #174EA6;\n"," }\n","\n"," .colab-df-buttons div {\n"," margin-bottom: 4px;\n"," }\n","\n"," [theme=dark] .colab-df-convert {\n"," background-color: #3B4455;\n"," fill: #D2E3FC;\n"," }\n","\n"," [theme=dark] .colab-df-convert:hover {\n"," background-color: #434B5C;\n"," box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n"," filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n"," fill: #FFFFFF;\n"," }\n"," </style>\n","\n"," <script>\n"," const buttonEl =\n"," document.querySelector('#df-cf3d7f15-1a34-4b95-b34a-ff0d26fef51f button.colab-df-convert');\n"," buttonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n"," async function convertToInteractive(key) {\n"," const element = document.querySelector('#df-cf3d7f15-1a34-4b95-b34a-ff0d26fef51f');\n"," const dataTable =\n"," await google.colab.kernel.invokeFunction('convertToInteractive',\n"," [key], {});\n"," if (!dataTable) return;\n","\n"," const docLinkHtml = 'Like what you see? Visit the ' +\n"," '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n"," + ' to learn more about interactive tables.';\n"," element.innerHTML = '';\n"," dataTable['output_type'] = 'display_data';\n"," await google.colab.output.renderOutput(dataTable, element);\n"," const docLink = document.createElement('div');\n"," docLink.innerHTML = docLinkHtml;\n"," element.appendChild(docLink);\n"," }\n"," </script>\n"," </div>\n","\n","\n","<div id=\"df-cb977ff4-452c-4697-896f-e329c4e8b07b\">\n"," <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-cb977ff4-452c-4697-896f-e329c4e8b07b')\"\n"," title=\"Suggest charts.\"\n"," style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n"," width=\"24px\">\n"," <g>\n"," <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n"," </g>\n","</svg>\n"," </button>\n","\n","<style>\n"," .colab-df-quickchart {\n"," --bg-color: #E8F0FE;\n"," --fill-color: #1967D2;\n"," --hover-bg-color: #E2EBFA;\n"," --hover-fill-color: #174EA6;\n"," --disabled-fill-color: #AAA;\n"," --disabled-bg-color: #DDD;\n"," }\n","\n"," [theme=dark] .colab-df-quickchart {\n"," --bg-color: #3B4455;\n"," --fill-color: #D2E3FC;\n"," --hover-bg-color: #434B5C;\n"," --hover-fill-color: #FFFFFF;\n"," --disabled-bg-color: #3B4455;\n"," --disabled-fill-color: #666;\n"," }\n","\n"," .colab-df-quickchart {\n"," background-color: var(--bg-color);\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: var(--fill-color);\n"," height: 32px;\n"," padding: 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-quickchart:hover {\n"," background-color: var(--hover-bg-color);\n"," box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: var(--button-hover-fill-color);\n"," }\n","\n"," .colab-df-quickchart-complete:disabled,\n"," .colab-df-quickchart-complete:disabled:hover {\n"," background-color: var(--disabled-bg-color);\n"," fill: var(--disabled-fill-color);\n"," box-shadow: none;\n"," }\n","\n"," .colab-df-spinner {\n"," border: 2px solid var(--fill-color);\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," animation:\n"," spin 1s steps(1) infinite;\n"," }\n","\n"," @keyframes spin {\n"," 0% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," border-left-color: var(--fill-color);\n"," }\n"," 20% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 30% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," border-right-color: var(--fill-color);\n"," }\n"," 40% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 60% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," }\n"," 80% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-bottom-color: var(--fill-color);\n"," }\n"," 90% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," }\n"," }\n","</style>\n","\n"," <script>\n"," async function quickchart(key) {\n"," const quickchartButtonEl =\n"," document.querySelector('#' + key + ' button');\n"," quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n"," quickchartButtonEl.classList.add('colab-df-spinner');\n"," try {\n"," const charts = await google.colab.kernel.invokeFunction(\n"," 'suggestCharts', [key], {});\n"," } catch (error) {\n"," console.error('Error during call to suggestCharts:', error);\n"," }\n"," quickchartButtonEl.classList.remove('colab-df-spinner');\n"," quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n"," }\n"," (() => {\n"," let quickchartButtonEl =\n"," document.querySelector('#df-cb977ff4-452c-4697-896f-e329c4e8b07b button');\n"," quickchartButtonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n"," })();\n"," </script>\n","</div>\n"," </div>\n"," </div>\n"]},"metadata":{},"execution_count":7}]},{"cell_type":"code","source":["def is_float(num):\n"," try:\n"," float(num)\n"," return True\n"," except ValueError:\n"," return False"],"metadata":{"id":"keue15xyhIho"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["# remember to strip the 51st value\n","inclass_front['landmarks'].apply(lambda arr: np.array([float(n) for n in arr.split() if is_float(n)]))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"jXTlSukjy6AG","executionInfo":{"status":"ok","timestamp":1693522586426,"user_tz":300,"elapsed":263,"user":{"displayName":"César Mosqueira","userId":"11705195256143475621"}},"outputId":"efe1d8f5-6474-4453-f480-64f74e53f9cb"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["0 [233.46, 174.49, 0.99463, 259.33, 164.66, 0.99...\n","1 [224.02, 178.57, 0.99599, 250.85, 168.12, 0.99...\n","2 [193.71, 178.13, 0.99595, 220.76, 167.02, 0.99...\n","3 [178.02, 171.85, 0.99656, 205.8, 160.6, 0.9963...\n","4 [202.7, 170.08, 0.99721, 230.84, 157.82, 0.997...\n"," ... \n","87 [363.26, 261.4, 0.98924, 375.29, 238.1, 0.8689...\n","88 [363.31, 261.6, 0.98925, 374.81, 238.74, 0.860...\n","89 [363.77, 261.76, 0.98847, 375.21, 239.1, 0.853...\n","90 [365.39, 262.41, 0.98606, 376.09, 240.3, 0.815...\n","91 [363.33, 263.68, 0.98647, 373.86, 241.44, 0.82...\n","Name: landmarks, Length: 92, dtype: object"]},"metadata":{},"execution_count":25}]},{"cell_type":"code","source":["def preprocess_sequences(single_video):\n"," local_data = single_video.copy()\n"," local_data['landmarks'] = local_data['landmarks'].apply(lambda arr: np.array([float(n) for n in arr.split() if is_float(n)]))\n"," # Group the data by 'video' and 'group'\n"," grouped_data = single_video.groupby(['video', 'group'])\n"," # Create lists to store the sequences and labels\n"," sequences = []\n"," sequence_length = 10\n"," # Iterate over each group\n"," for group, data in grouped_data:\n"," landmarks = data['landmarks'].tolist()\n","\n"," # Create sequences of landmarks\n"," for i in range(len(landmarks) - sequence_length + 1):\n"," sequence = landmarks[i:i+sequence_length]\n"," sequences.append(sequence)\n"," sequences = np.array(sequences)\n","\n"," scaler = MinMaxScaler()\n"," normalized_sequences = np.zeros_like(sequences)\n"," print(sequences.shape)\n","\n"," for i in range(sequences.shape[0]):\n"," for j in range(sequences.shape[1]):\n"," # Flatten the landmarks for each set within the sequence\n"," landmarks_flattened = np.reshape(sequences[i, j], (-1, 1))\n"," # Normalize the landmarks\n"," landmarks_normalized = scaler.fit_transform(landmarks_flattened)\n"," # Reshape the normalized landmarks back to the original shape\n"," normalized_landmarks = np.reshape(landmarks_normalized, sequences[i, j].shape)\n"," # Update the normalized landmarks in the sequences array\n"," normalized_sequences[i, j] = normalized_landmarks\n"," return normalized_sequences"],"metadata":{"id":"iJCnX5e-hJVZ"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["arr = inclass_front['landmarks'].iloc[0]"],"metadata":{"id":"27jyVQxSzyJ1"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["arr.replace(\" \", \"\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":54},"id":"xQ_31LTRz4MK","executionInfo":{"status":"ok","timestamp":1693522758467,"user_tz":300,"elapsed":3,"user":{"displayName":"César Mosqueira","userId":"11705195256143475621"}},"outputId":"e666705d-621a-46e1-a3ab-8555eea88b30"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["'[233.46174.490.99463259.33164.660.99408226.37162.020.9799313.93181.90.98803217.26168.330.5209350.16246.450.96978157.46240.890.96054392.1311.120.9364498.044322.58\\n0.91558455.24346.020.9307194.2379.310.92102301.83392.10.90579182.09397.70.89308392.41439.170.47071237.77465.880.45786353.81514.870.12377244.63518.740.11916]'"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"}},"metadata":{},"execution_count":38}]},{"cell_type":"code","source":[],"metadata":{"id":"fTOcb5FZzfmO"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["sequences_good = preprocess_sequences(good_video)\n","sequences_bad = preprocess_sequences(bad_video)\n","sequences_ambiguous = preprocess_sequences(ambiguous_video)\n","sequences_inclass = preprocess_sequences(inclass)\n","sequences_inclass_front = preprocess_sequences(inclass_front)"],"metadata":{"id":"G76Bj5HOhP_v","executionInfo":{"status":"ok","timestamp":1693520806574,"user_tz":300,"elapsed":539,"user":{"displayName":"Francesco Bassino","userId":"12214195385968794219"}},"colab":{"base_uri":"https://localhost:8080/"},"outputId":"ee0ba0d3-4268-4488-ef56-6928ce78af12"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["(5, 10, 50)\n","(8, 10, 50)\n","(4, 10, 50)\n","(14, 10, 50)\n","(9, 10, 50)\n"]}]},{"cell_type":"code","source":["local_response = 0.010817443020641804\n","payload = json.load(open('payloadexample.json'))"],"metadata":{"id":"GV8foiDnhcKd"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["arr = np.array([payload['array']])"],"metadata":{"id":"uddKu28QUnpv"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["arr.shape"],"metadata":{"id":"awasy3AnAl82","executionInfo":{"status":"ok","timestamp":1693525897296,"user_tz":300,"elapsed":4,"user":{"displayName":"César Mosqueira","userId":"11705195256143475621"}},"outputId":"dc0540e7-58a7-4124-c8bd-9510b036b134","colab":{"base_uri":"https://localhost:8080/"}},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(10, 50)"]},"metadata":{},"execution_count":43}]},{"cell_type":"code","source":["sequences_bad[0].shape"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"6ypMJt1YUjim","executionInfo":{"status":"ok","timestamp":1693520811436,"user_tz":300,"elapsed":4,"user":{"displayName":"Francesco Bassino","userId":"12214195385968794219"}},"outputId":"32841df7-097b-40d2-9853-50a107e9eb46"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(10, 50)"]},"metadata":{},"execution_count":15}]},{"cell_type":"code","source":["model.predict(arr)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"H7O8zRZHhc1y","executionInfo":{"status":"ok","timestamp":1693525915720,"user_tz":300,"elapsed":1045,"user":{"displayName":"César Mosqueira","userId":"11705195256143475621"}},"outputId":"26064b7c-aca8-4ed7-eedf-e5e776730ec5"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["1/1 [==============================] - 1s 857ms/step\n"]},{"output_type":"execute_result","data":{"text/plain":["array([[0.0638905]], dtype=float32)"]},"metadata":{},"execution_count":46}]},{"cell_type":"code","source":["inclass[inclass['group'] == 15]"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":206},"id":"lC1gRje9h10l","executionInfo":{"status":"ok","timestamp":1692312069876,"user_tz":300,"elapsed":13,"user":{"displayName":"César Mosqueira","userId":"11705195256143475621"}},"outputId":"3b823ef8-f3ed-41fb-ecfb-1625837e9fec"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" video group frame \\\n","140 single_video_inclass.mp4 15 929 \n","141 single_video_inclass.mp4 15 935 \n","142 single_video_inclass.mp4 15 941 \n","143 single_video_inclass.mp4 15 947 \n","144 single_video_inclass.mp4 15 953 \n","\n"," landmarks \n","140 [474.7, 183.7, 0.94313, 478.56, 165.14, 0.0238... \n","141 [473.46, 188.12, 0.90622, 477.76, 169.85, 0.01... \n","142 [471.51, 202.77, 0.73089, 478.11, 185.3, 0.008... \n","143 [474.77, 206.04, 0.86001, 481.11, 189.61, 0.01... \n","144 [474.47, 202.17, 0.8677, 480.32, 185.13, 0.013... "],"text/html":["\n"," <div id=\"df-13346ce6-5f5f-40ca-95fa-ccdd217b6aa8\" class=\"colab-df-container\">\n"," <div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>video</th>\n"," <th>group</th>\n"," <th>frame</th>\n"," <th>landmarks</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>140</th>\n"," <td>single_video_inclass.mp4</td>\n"," <td>15</td>\n"," <td>929</td>\n"," <td>[474.7, 183.7, 0.94313, 478.56, 165.14, 0.0238...</td>\n"," </tr>\n"," <tr>\n"," <th>141</th>\n"," <td>single_video_inclass.mp4</td>\n"," <td>15</td>\n"," <td>935</td>\n"," <td>[473.46, 188.12, 0.90622, 477.76, 169.85, 0.01...</td>\n"," </tr>\n"," <tr>\n"," <th>142</th>\n"," <td>single_video_inclass.mp4</td>\n"," <td>15</td>\n"," <td>941</td>\n"," <td>[471.51, 202.77, 0.73089, 478.11, 185.3, 0.008...</td>\n"," </tr>\n"," <tr>\n"," <th>143</th>\n"," <td>single_video_inclass.mp4</td>\n"," <td>15</td>\n"," <td>947</td>\n"," <td>[474.77, 206.04, 0.86001, 481.11, 189.61, 0.01...</td>\n"," </tr>\n"," <tr>\n"," <th>144</th>\n"," <td>single_video_inclass.mp4</td>\n"," <td>15</td>\n"," <td>953</td>\n"," <td>[474.47, 202.17, 0.8677, 480.32, 185.13, 0.013...</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>\n"," <div class=\"colab-df-buttons\">\n","\n"," <div class=\"colab-df-container\">\n"," <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-13346ce6-5f5f-40ca-95fa-ccdd217b6aa8')\"\n"," title=\"Convert this dataframe to an interactive table.\"\n"," style=\"display:none;\">\n","\n"," <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n"," <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n"," </svg>\n"," </button>\n","\n"," <style>\n"," .colab-df-container {\n"," display:flex;\n"," gap: 12px;\n"," }\n","\n"," .colab-df-convert {\n"," background-color: #E8F0FE;\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: #1967D2;\n"," height: 32px;\n"," padding: 0 0 0 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-convert:hover {\n"," background-color: #E2EBFA;\n"," box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: #174EA6;\n"," }\n","\n"," .colab-df-buttons div {\n"," margin-bottom: 4px;\n"," }\n","\n"," [theme=dark] .colab-df-convert {\n"," background-color: #3B4455;\n"," fill: #D2E3FC;\n"," }\n","\n"," [theme=dark] .colab-df-convert:hover {\n"," background-color: #434B5C;\n"," box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n"," filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n"," fill: #FFFFFF;\n"," }\n"," </style>\n","\n"," <script>\n"," const buttonEl =\n"," document.querySelector('#df-13346ce6-5f5f-40ca-95fa-ccdd217b6aa8 button.colab-df-convert');\n"," buttonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n"," async function convertToInteractive(key) {\n"," const element = document.querySelector('#df-13346ce6-5f5f-40ca-95fa-ccdd217b6aa8');\n"," const dataTable =\n"," await google.colab.kernel.invokeFunction('convertToInteractive',\n"," [key], {});\n"," if (!dataTable) return;\n","\n"," const docLinkHtml = 'Like what you see? Visit the ' +\n"," '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n"," + ' to learn more about interactive tables.';\n"," element.innerHTML = '';\n"," dataTable['output_type'] = 'display_data';\n"," await google.colab.output.renderOutput(dataTable, element);\n"," const docLink = document.createElement('div');\n"," docLink.innerHTML = docLinkHtml;\n"," element.appendChild(docLink);\n"," }\n"," </script>\n"," </div>\n","\n","\n","<div id=\"df-a17dfe98-d653-4e51-b7a3-cd8c914426d1\">\n"," <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-a17dfe98-d653-4e51-b7a3-cd8c914426d1')\"\n"," title=\"Suggest charts.\"\n"," style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n"," width=\"24px\">\n"," <g>\n"," <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n"," </g>\n","</svg>\n"," </button>\n","\n","<style>\n"," .colab-df-quickchart {\n"," background-color: #E8F0FE;\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: #1967D2;\n"," height: 32px;\n"," padding: 0 0 0 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-quickchart:hover {\n"," background-color: #E2EBFA;\n"," box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: #174EA6;\n"," }\n","\n"," [theme=dark] .colab-df-quickchart {\n"," background-color: #3B4455;\n"," fill: #D2E3FC;\n"," }\n","\n"," [theme=dark] .colab-df-quickchart:hover {\n"," background-color: #434B5C;\n"," box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n"," filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n"," fill: #FFFFFF;\n"," }\n","</style>\n","\n"," <script>\n"," async function quickchart(key) {\n"," const charts = await google.colab.kernel.invokeFunction(\n"," 'suggestCharts', [key], {});\n"," }\n"," (() => {\n"," let quickchartButtonEl =\n"," document.querySelector('#df-a17dfe98-d653-4e51-b7a3-cd8c914426d1 button');\n"," quickchartButtonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n"," })();\n"," </script>\n","</div>\n"," </div>\n"," </div>\n"]},"metadata":{},"execution_count":92}]},{"cell_type":"code","source":[],"metadata":{"id":"59Lm08EEqI8O"},"execution_count":null,"outputs":[]}]}