From e0df22c3852eff68bdae0a1c3775e6413bcd6b98 Mon Sep 17 00:00:00 2001 From: ml server Date: Tue, 21 Jan 2020 19:26:06 -0700 Subject: [PATCH] cleanup wut-web --- notebooks/wut-web.ipynb | 224 +++++----------------------------------- 1 file changed, 28 insertions(+), 196 deletions(-) diff --git a/notebooks/wut-web.ipynb b/notebooks/wut-web.ipynb index 6264bff..518af75 100644 --- a/notebooks/wut-web.ipynb +++ b/notebooks/wut-web.ipynb @@ -6,19 +6,10 @@ "metadata": {}, "outputs": [], "source": [ - "# wut-predict --- What U Think? SatNOGS Observation AI, makes predictions.\n", + "# wut-web --- What U Think? Web App: SatNOGS Observation AI, makes predictions.\n", "#\n", "# https://spacecruft.org/spacecruft/satnogs-wut\n", - "# Based on data/train and data/val directories builds a wut.h5 file.\n", - "# Reads wut.h5 and tests files in data/test/unvetted/" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "\n", "# GPLv3+" ] }, @@ -28,42 +19,10 @@ "metadata": {}, "outputs": [], "source": [ - "# Built using Jupyter, Tensorflow, Keras" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import tensorflow.python.keras" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "from __future__ import print_function\n", + "import os\n", + "import numpy as np\n", + "import tensorflow.python.keras\n", "from tensorflow.python.keras import Sequential\n", "from tensorflow.python.keras.layers import Activation, Dropout, Flatten, Dense\n", "from tensorflow.python.keras.preprocessing.image import ImageDataGenerator\n", @@ -72,60 +31,19 @@ "from tensorflow.python.keras.preprocessing import image\n", "from tensorflow.python.keras.models import load_model\n", "from tensorflow.python.keras.preprocessing.image import load_img\n", - "from tensorflow.python.keras.preprocessing.image import img_to_array" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "from tensorflow.python.keras.preprocessing.image import img_to_array\n", + "from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D\n", "# Visualization\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", - "from sklearn.decomposition import PCA" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "from sklearn.decomposition import PCA\n", "# Seaborn pip dependency\n", - "import seaborn as sns" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "import seaborn as sns\n", "# Interact\n", "# https://ipywidgets.readthedocs.io/en/stable/examples/Using%20Interact.html\n", - "from __future__ import print_function\n", "from ipywidgets import interact, interactive, fixed, interact_manual\n", - "import ipywidgets as widgets" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "import ipywidgets as widgets\n", "# Display Images\n", "from IPython.display import display, Image" ] @@ -136,24 +54,13 @@ "metadata": {}, "outputs": [], "source": [ - "model = load_model('data/models/wut-DUV-201912.tf')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "test_dir = os.path.join('data/', 'test')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "IMG_HEIGHT = 416\n", + "IMG_WIDTH= 804\n", + "batch_size = 32\n", + "base_dir = ('/srv/satnogs/data')\n", + "test_dir = os.path.join(base_dir, 'test')\n", + "model_file = os.path.join(base_dir, 'models', 'wut-DUV-201912.tf')\n", + "print(model_file)\n", "num_test = len(os.listdir(test_dir))" ] }, @@ -163,26 +70,7 @@ "metadata": {}, "outputs": [], "source": [ - "# Good results\n", - "#batch_size = 128\n", - "#epochs = 6\n", - "# Testing, faster more inaccurate results\n", - "batch_size = 32\n", - "epochs = 3" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Half size\n", - "IMG_HEIGHT = 416\n", - "IMG_WIDTH= 804\n", - "# Full size, machine barfs probably needs more RAM\n", - "#IMG_HEIGHT = 832\n", - "#IMG_WIDTH = 1606" + "model = load_model(model_file)" ] }, { @@ -193,15 +81,7 @@ "source": [ "test_image_generator = ImageDataGenerator(\n", " rescale=1./255\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + ")\n", "test_data_gen = test_image_generator.flow_from_directory(batch_size=batch_size,\n", " directory=test_dir,\n", " target_size=(IMG_HEIGHT, IMG_WIDTH),\n", @@ -214,16 +94,7 @@ "metadata": {}, "outputs": [], "source": [ - "sample_test_images, _ = next(test_data_gen)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# This function will plot images in the form of a grid with 1 row and 3 columns where images are placed in each column.\n", + "sample_test_images, _ = next(test_data_gen)\n", "def plotImages(images_arr):\n", " fig, axes = plt.subplots(1, 3, figsize=(20,20))\n", " axes = axes.flatten()\n", @@ -231,16 +102,9 @@ " ax.imshow(img)\n", " ax.axis('off')\n", " plt.tight_layout()\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plotImages(sample_test_images[0:1])" + " plt.show()\n", + "\n", + "plotImages(sample_test_images[0:3])" ] }, { @@ -252,42 +116,10 @@ "prediction = model.predict(\n", " x=test_data_gen,\n", " verbose=0\n", - ")\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "predictions=[]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "prediction_bool = (prediction >0.8)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "predictions = prediction_bool.astype(int)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + ")\n", + "predictions=[]\n", + "prediction_bool = (prediction >0.8)\n", + "predictions = prediction_bool.astype(int)\n", "if prediction_bool[0] == False:\n", " rating = 'bad'\n", "else:\n",