Files
Photovoltaic_Fault_Detector/Code_Example/Example_prediction_Ortofoto.ipynb

829 lines
4.2 MiB
Plaintext
Raw Normal View History

2020-08-26 00:39:38 -04:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example of load model for detections\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import time\n",
"import os\n",
"import argparse\n",
"import json\n",
"import cv2\n",
"import sys\n",
"sys.path += [os.path.abspath('../keras-yolo3-master')]\n",
"\n",
"from utils.utils import get_yolo_boxes, makedirs\n",
"from utils.bbox import draw_boxes\n",
"from tensorflow.keras.models import load_model\n",
"from tqdm import tqdm\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"#detection_orto(infer_model, orto_image, div = [5,5], net_h = net_h, net_w = net_w, anchors\n",
" # obj_thresh = obj_thresh, nms_thresh = nms_thresh)\n",
" \n",
"\n",
" \n",
" \n",
"def detection_orto (infer_model, orto_image, div, net_h, net_w, anchors, obj_thresh, nms_thresh):\n",
" \n",
" div_h, div_w = div\n",
" \n",
" new_shape = [int(orto_image.shape[0] / div_h), int(orto_image.shape[1] / div_w)]\n",
" \n",
" final_boxes = []\n",
" \n",
" for h in range(div_h):\n",
" for w in range(div_w):\n",
" \n",
" image = orto_image[new_shape[0]*h: new_shape[0]*(h + 1), new_shape[1]*w : new_shape[1]*(w + 1)]\n",
" boxes = get_yolo_boxes(infer_model, [image], net_h, net_w, anchors, obj_thresh, nms_thresh)[0]\n",
" \n",
" for box in boxes:\n",
" box.xmin += new_shape[1]*w\n",
" box.xmax += new_shape[1]*w\n",
" box.ymin += new_shape[0]*h\n",
" box.ymax += new_shape[0]*h\n",
" final_boxes.append(box)\n",
" return final_boxes\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ORTO PHOTO"
]
},
{
"cell_type": "code",
2020-08-28 01:01:31 -04:00
"execution_count": 2,
2020-08-26 00:39:38 -04:00
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
2020-08-28 01:01:31 -04:00
"(-0.5, 459.5, 533.5, -0.5)"
2020-08-26 00:39:38 -04:00
]
},
2020-08-28 01:01:31 -04:00
"execution_count": 2,
2020-08-26 00:39:38 -04:00
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2020-08-28 01:01:31 -04:00
"image/png": "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
2020-08-26 00:39:38 -04:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2020-08-28 01:01:31 -04:00
"image/png": "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
2020-08-26 00:39:38 -04:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#image_path = 'odm_orthophoto.tif' \n",
2020-08-28 01:01:31 -04:00
"image_path = 'ortomosaico_corregido.tif' \n",
2020-08-26 00:39:38 -04:00
"image = cv2.imread(image_path)\n",
"\n",
2020-08-28 01:01:31 -04:00
"#image = cv2.rotate(image, cv2.ROTATE_90_COUNTERCLOCKWISE)\n",
"#cv2.imwrite(image_path, image)\n",
"\n",
"div = (8, 3) # divide row, column\n",
2020-08-26 00:39:38 -04:00
"\n",
"\n",
"fig, ax = plt.subplots(figsize=(16, 16))\n",
"ax.set_title('Original Image')\n",
"plt.imshow(image, cmap='gray')\n",
"ax.axis('off') \n",
"\n",
2020-08-28 01:01:31 -04:00
"i = 1\n",
2020-08-26 00:39:38 -04:00
"sub_image = image[int(image.shape[0] / div[0]) * i : int(image.shape[0] / div[0]) * (i + 1),\n",
" int(image.shape[1] / div[1]) * i:int(image.shape[1] / div[1]) * (i + 1)]\n",
"fig, ax = plt.subplots(figsize=(16, 16))\n",
"ax.set_title('Path Image')\n",
"plt.imshow(sub_image, cmap='gray')\n",
"ax.axis('off') "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load Trained Model Soiling Fault"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:No training configuration found in save file: the model was *not* compiled. Compile it manually.\n"
]
}
],
"source": [
"## Config of trained model, change this for use different trained model\n",
"config_path = 'config_full_yolo_fault_1_infer.json' \n",
"\n",
"with open(config_path) as config_buffer:\n",
" config = json.load(config_buffer)\n",
" \n",
"\n",
"###############################\n",
"##### Load the model ######\n",
"###############################\n",
"os.environ['CUDA_VISIBLE_DEVICES'] = config['train']['gpus']\n",
"infer_model = load_model(config['train']['saved_weights_name'])\n",
"\n",
"## Parameters of detection\n",
"net_h, net_w = 416, 416 # a multiple of 32, the smaller the faster\n",
"obj_thresh, nms_thresh = 0.5, 0.45\n",
"\n",
"\n",
"#infer_model.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Detection Soling Fault"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2020-08-28 01:01:31 -04:00
"Elapsed time = 41.92974853515625\n"
2020-08-26 00:39:38 -04:00
]
},
{
"data": {
"text/plain": [
2020-08-28 01:01:31 -04:00
"(-0.5, 1379.5, 4272.5, -0.5)"
2020-08-26 00:39:38 -04:00
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2020-08-28 01:01:31 -04:00
"image/png": "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
2020-08-26 00:39:38 -04:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2020-08-28 01:01:31 -04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAScAAAOECAYAAADjTfcoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9e4xkWZ7f9b3xynhlREY+K7MeXT3dM9MzPTM7ntWyWMayF1nCXmHZILRCWEg2NhgkyxIPYZCNhZFZbASsMbJkgWyMZWMwQiAsYWQWsTK214vWq93Z2Znpqeruqq6qrKx8Rma8n5c/Ij+//MbtrOrXrGbW5JFKFRlx77nn/M7v9/09z7lJmqa6aTftpt20H7aW+0EP4KbdtJt2065rN+B0027aTfuhbDfgdNNu2k37oWw34HTTbtpN+6FsN+B0027aTfuhbDfgdNNu2k37oWw34PT/g5Ykya8lSfLbf9Dj8JYkSTdJks9dfv4rSZL86cvPvzVJknd+sKP7+C1JkjRJkjd/0OP4x7HdgNP3oSVJ8ihJkkGSJJ0kSdpJkvyDJEn+9SRJPhZ9kyT57UmSPP0+jSUEnZam6dtpmv7c96P/zLPeTpLk7yRJcnY573+UJMlPfpx70zStp2n63jXf/z9pmn7x+z1WSUqS5OeSJBleAiP/fvP3sf8P0f6mffp2A07fv/a70zRdlfSapD8j6Y9J+ks/2CH9ure/Jen/lLQjaVvSH5V08QMd0Ue3P3IJjPz7+R/0gG7aS1qapjf/PuM/SY8k/Y7Md/+EpLmkr1z+vSLpP5P0gaQXkv6ipIqkmqTB5bXdy397WiiOf0/Su5JOJP1NSevW/z8l6R9Iakt6Iun3S/rXJE0kjS/7+VvZ8V2O489J2r/89+ckrVz+9tslPZX0b0s6lPRc0h94yZw3JaWS1l5Bl39V0kNJp5L+N0l79lsq6c3Lz39F0p/2MWRo++9I+qakc0n/o6Sy/f7vXo5zX9If8n6vGc/PSfpD13z/P0k6uOz/70p6+2X3XNL572Xn8TLa3/z79P9uLKdfp5am6f+rhaD/1suv/qykL0j6uhbMfFvSn0zTtCfpd0naT6+0+b4WVsjvlfTbtACrM0l/QZKSJLkn6W9L+q8kbV32+ctpmv7Xkv66pP/0sp/ffc3Q/rikf/Lynh/RAkT/hP1+S1Lzcnx/UNJfSJKkdU0/J1oAz19LkuT3Jkmy4z8mSfJPS/pPJP2UpF1JjyX9Dx9Ft5e0n5L0OyW9LulrWgCEkiT5nZL+LUm/Qwua/rZP2f/flvR5Lay/X9KChp+ofUza37RP0G7A6de37UtaT5Ik0cKK+DfTND1N07Qj6acl/YuvuPcPS/rjaZo+TdN0JOk/lPQvJElSkPT7JP1smqZ/I03TSZqmJ2ma/vLHHNPvk/QfpWl6mKbpkaQ/Jelftt8nl79P0jT937WwAj4UA0oXZsNPaGHZ/OeSnidJ8neTJPm8Pecvp2n6S5fj//cl/eYkSe5/zHF6+/Npmu6naXqqhSv59cvvf0rSf5um6a+ladq/nMtH9nUZH2snSfJLl3P5y2madozOP5IkSfNTjPOmfR/bDTj9+rbbWrg0W5Kqkv4RgiHp/7j8/mXtNUn/i13/HUkzLeI7d7Vw9z5N29PCiqE9vvyOdpKm6dT+7kuqX9fRJXD+kTRN37gcb0/SX73uOWmadrWwtm5/ijEfvGQ8e1q4tDT//LL2R9M0Xbv8940kSfJJkvyZJEneTZLkQguwlRZu6037AbYbcPp1akmS/JgWgvj3JB1rEVd62wSjmaYpQnbd0RBPJP0uu34tTdNymqbPLn974yWP/qhjJva1ABLavcvvPlNL0/SJFm7nV657TpIkNUkbkp591mdZey7pjv1991P08S9J+j1auIZNSfcvv08u/+9poVhot17R180RH9/HdgNO3+eWJEkjSZJ/Vov4yl9L0/RX0zSdS/pvJP1MkiTbl9fdTpLkn7m87YWkjYwr8Rcl/cdJkrx2ef1WkiS/5/K3vy7pdyRJ8lNJkhSSJNlIkuTr1tfnXjHEvyHpT1z2tynpT0r6a59inq0kSf5UkiRvJkmSu+zrX5H0Dy8v+e8l/YEkSb6eJMmKFm7sL6Rp+uiTPusV7W9ePuNLSZJUtZjLJ22rkkZaWHVVLcbp7Zcl/fNJklQv65n+4Cv6+ija37RP0G7A6fvX/laSJB0trJo/Lum/kPQH7Pc/pkUA+R9eug8/q8tYTpqm39UCNN67dOP2JP2XWmS4/s5lv/9Q0o9fXv+BpJ/UIqt2qoUA/cjlc/6SpC9f9vO/XjPOPy3pF7XIfv2qFgHgT1ObM9bCyvhZLcoHvqWFkP/+yzH+X5L+A0n/sxYWzht6dYztE7c0Tf+2pD8v6f/WgraUBYw+QTd/VQv385mkb+sKXGk/o8VcX0j67/TqYPlH0f6mfYKWLOKaN+2m/cZvSZJ8SQuQXMnEzW7ab8B2YzndtN/QLUmSfy5JktJlucOf1aK+6AaY/jFoN+B0036jtz8s6UiL7OVM0r/xgx3OTft+tRu37qbdtJv2Q9luLKebdtNu2g9luwGnm3bTbtoPZSu86sef+ZmfSX0j3nw+V5qmSpJEtVpNhUJBSZKoXC5rNFpkbyuVisbjcXzO5/PK5RYYOB6PNR6PVSgU1O12tbq6Gr9J0nQ61Xw+Vy6XU5Ik8f9sNosxlMtlJUmiNE01Ho/jcz6fj2vy+Xx8z/+0UqkkSZrP51rsKllsfp5Op5pOp/FcSZrNZprP55rNZsrn8/FPUvyfy+VULBZjnmmaajgcamVlRSsrK8rn85pOp8rlcprNZup2u5KkJEl0dHSk9957L2g7mUyUJIkGg4EajYYeP36sWq2mO3fuqNvt6uzsLOixurqqQqGgYrEYcxqNRioWiyqXy3r69Kl2d3c1HA5VKBRUqVRUr9c1m810dHSkXC6n4XCofD6vi4vFQQK7u7s6PDzUzs6O3nzzTY3H45jLfD5XoVDQYDCIeyeTiQaDgdbW1lQoFIKm3W5X/X5fSZLo9PRUL168ULVa1b179zQajTSdTlWr1XR8fBz8MBqNlKapnj17pmq1qtdff13Pnz/XbDZTvV7X5uaiYPv8/FyTyUSrq6uq1WoaDocajUYqlUrBL7VaLegxHA5Vq9WUpqlWVla0vr6uarWqfD6vQqEQ45xMJsrn86rVaiqVSsrn86pWq0Hb6XQafDgajYJ3xuOxKpWKVlZW1O12NRwOgz/gHf+/3+9rMpkEr8ALyMxsNgtenc1myuVyKhQK0afLBWOgD55B//AnMuV8nyRJfI/MFAqF4MVisRhzms1mKhQKmk6n6na7gQOlUkmlUkmz2Uy9Xk/z+Vzj8ThksdPpBK9A62KxqDRNVSwWtb29rZ/+6Z++mkSmvRKcmAQDzn5G2PP5vMrlstI01WQy0Xw+V7lcDsEExGBghCWXy6lUKsXiQHgICbjk8/kAiNlstgRYLCJEyefzIeQ80xeCBUvTNBY/iFEoLP3NdSzwZDJRoVAIIAJwYBYY6OTkRKurq5pOp6pWq0HL0Wik8/Nz9Xo9dTodSQp6TSYTVavVAI5Op6Nyuaxms6l2u60kSVSv17W6uqrZbKaVlRWtrq5qMBio2+0qSRI1m81g5u3tbRUKBa2srKhQKKhWq2k2m+ng4ECnp6daXV3VysqKptOpyuVyzKfZbKrRaOj8/FwnJydqNBrBlLdv31aj0dBwOFS1WlWhUFhat+l0GmBTqVTUbre1urqqyWSib3/722q327p165YKhYJKpZK63a5OTk5iXavVqm7fvq1ms6kkSQKABoOBjo6ONJ/PdXBwoMlkonq9HmtcqVRUq9VUr9c1HA7V6/V0dHSkarUaQjIYDFQsFvXo0SM1m011Oh1Vq9Xgo/F4rNlspouLC+Xz+QDk2WymcrmslZUVTSYTTSaTULqAxXg81mAwULPZVKvVCh4CcJMk0crKigaDgUajUYA5YIISy+VyGo/Hms/nIVs+tnw+H4oQ/iyVSioWi5rP56Gwer2eer1ezKNYLMY8s8reAWs
2020-08-26 00:39:38 -04:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"image = cv2.imread(image_path)\n",
2020-08-28 01:01:31 -04:00
"\n",
2020-08-26 00:39:38 -04:00
"## Show original image\n",
"fig, ax = plt.subplots(figsize=(16, 16))\n",
"ax.set_title('Original Image')\n",
"plt.imshow(image, cmap='gray')\n",
"ax.axis('off') \n",
"\n",
"start = time.time()\n",
"## predict the bounding boxes\n",
"#boxes = get_yolo_boxes(infer_model, [image], net_h, net_w, config['model']['anchors'], obj_thresh, nms_thresh)[0]\n",
"boxes = detection_orto(infer_model, orto_image = image, div = div, net_h = net_h, net_w = net_w, \n",
" anchors = config['model']['anchors'], obj_thresh = obj_thresh, nms_thresh = nms_thresh)\n",
"print('Elapsed time = {}'.format(time.time() - start))\n",
"## draw bounding boxes on the image using labels\n",
"draw_boxes(image, boxes, config['model']['labels'], obj_thresh)\n",
"\n",
"\n",
"## Show Detection Fault\n",
"fig, ax = plt.subplots(figsize=(16, 16))\n",
"ax.set_title('Detection Soiling Fault')\n",
"plt.imshow(image, cmap='gray')\n",
"ax.axis('off') \n",
"#plt.imsave('Diode Fault_6.png', image)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load Trained Model Diode Fault"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:No training configuration found in save file: the model was *not* compiled. Compile it manually.\n"
]
}
],
"source": [
"## Config of trained model, change this for use different trained model\n",
"config_path = 'config_full_yolo_fault_4_infer.json' \n",
"\n",
"with open(config_path) as config_buffer:\n",
" config = json.load(config_buffer)\n",
" \n",
"\n",
"###############################\n",
"##### Load the model ######\n",
"###############################\n",
"os.environ['CUDA_VISIBLE_DEVICES'] = config['train']['gpus']\n",
"infer_model = load_model(config['train']['saved_weights_name'])\n",
"\n",
"#infer_model.summary()\n",
"\n",
"## Parameters of detection\n",
"net_h, net_w = 416, 416 # a multiple of 32, the smaller the faster\n",
"obj_thresh, nms_thresh = 0.5, 0.45"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Detection Diode Fault"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2020-08-28 01:01:31 -04:00
"Elapsed time = 42.96347713470459\n"
2020-08-26 00:39:38 -04:00
]
},
{
"data": {
"text/plain": [
2020-08-28 01:01:31 -04:00
"(-0.5, 1379.5, 4272.5, -0.5)"
2020-08-26 00:39:38 -04:00
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2020-08-28 01:01:31 -04:00
"image/png": "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
2020-08-26 00:39:38 -04:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2020-08-28 01:01:31 -04:00
"image/png": "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
2020-08-26 00:39:38 -04:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"image = cv2.imread(image_path)\n",
2020-08-28 01:01:31 -04:00
"\n",
2020-08-26 00:39:38 -04:00
"\n",
"## Show original image\n",
"fig, ax = plt.subplots(figsize=(16, 16))\n",
"ax.set_title('Original Image')\n",
"plt.imshow(image, cmap='gray')\n",
"ax.axis('off') \n",
"\n",
"start = time.time()\n",
"## predict the bounding boxes\n",
"#boxes = get_yolo_boxes(infer_model, [image], net_h, net_w, config['model']['anchors'], obj_thresh, nms_thresh)[0]\n",
"boxes = detection_orto(infer_model, orto_image = image, div = div, net_h = net_h, net_w = net_w, \n",
" anchors = config['model']['anchors'], obj_thresh = obj_thresh, nms_thresh = nms_thresh)\n",
"print('Elapsed time = {}'.format(time.time() - start))\n",
"## draw bounding boxes on the image using labels\n",
"draw_boxes(image, boxes, config['model']['labels'], obj_thresh)\n",
"\n",
"\n",
"## Show Detection Fault\n",
"fig, ax = plt.subplots(figsize=(16, 16))\n",
"ax.set_title('Detection Diode Fault')\n",
"plt.imshow(image, cmap='gray')\n",
"ax.axis('off') "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load Trained Model Cell Damage"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:No training configuration found in save file: the model was *not* compiled. Compile it manually.\n"
]
}
],
"source": [
"## Config of trained model, change this for use different trained model\n",
"config_path = 'config_full_yolo_fault_2_infer.json' \n",
"\n",
"with open(config_path) as config_buffer:\n",
" config = json.load(config_buffer)\n",
" \n",
"\n",
"###############################\n",
"##### Load the model ######\n",
"###############################\n",
"os.environ['CUDA_VISIBLE_DEVICES'] = config['train']['gpus']\n",
"infer_model = load_model(config['train']['saved_weights_name'])\n",
"\n",
"#infer_model.summary()\n",
"\n",
"## Parameters of detection\n",
"net_h, net_w = 416, 416 # a multiple of 32, the smaller the faster\n",
"obj_thresh, nms_thresh = 0.5, 0.45"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Detection Cell Damage Fault"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2020-08-28 01:01:31 -04:00
"Elapsed time = 48.806830406188965\n"
2020-08-26 00:39:38 -04:00
]
},
{
"data": {
"text/plain": [
2020-08-28 01:01:31 -04:00
"(-0.5, 1379.5, 4272.5, -0.5)"
2020-08-26 00:39:38 -04:00
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2020-08-28 01:01:31 -04:00
"image/png": "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
2020-08-26 00:39:38 -04:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2020-08-28 01:01:31 -04:00
"image/png": "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
2020-08-26 00:39:38 -04:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"image = cv2.imread(image_path)\n",
2020-08-28 01:01:31 -04:00
"\n",
2020-08-26 00:39:38 -04:00
"\n",
"## Show original image\n",
"fig, ax = plt.subplots(figsize=(16, 16))\n",
"ax.set_title('Original Image')\n",
"plt.imshow(image, cmap='gray')\n",
"ax.axis('off') \n",
"\n",
"start = time.time()\n",
"## predict the bounding boxes\n",
"#boxes = get_yolo_boxes(infer_model, [image], net_h, net_w, config['model']['anchors'], obj_thresh, nms_thresh)[0]\n",
"boxes = detection_orto(infer_model, orto_image = image, div = div, net_h = net_h, net_w = net_w, \n",
" anchors = config['model']['anchors'], obj_thresh = obj_thresh, nms_thresh = nms_thresh)\n",
"print('Elapsed time = {}'.format(time.time() - start))\n",
"## draw bounding boxes on the image using labels\n",
"draw_boxes(image, boxes, config['model']['labels'], obj_thresh)\n",
"\n",
"\n",
"## Show Detection Fault\n",
"fig, ax = plt.subplots(figsize=(16, 16))\n",
"ax.set_title('Detection Cell damage Fault')\n",
"plt.imshow(image, cmap='gray')\n",
"ax.axis('off') "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load Trained Model Panel Disconnect"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:No training configuration found in save file: the model was *not* compiled. Compile it manually.\n"
]
}
],
"source": [
"## Config of trained model, change this for use different trained model\n",
"config_path = 'config_full_yolo_panel_infer.json' \n",
"\n",
"with open(config_path) as config_buffer:\n",
" config = json.load(config_buffer)\n",
" \n",
"\n",
"###############################\n",
"##### Load the model ######\n",
"###############################\n",
"os.environ['CUDA_VISIBLE_DEVICES'] = config['train']['gpus']\n",
"infer_model = load_model(config['train']['saved_weights_name'])\n",
"\n",
"#infer_model.summary()\n",
"\n",
"## Parameters of detection\n",
"net_h, net_w = 416, 416 # a multiple of 32, the smaller the faster\n",
"obj_thresh, nms_thresh = 0.5, 0.3\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Detection Panel Disconnect"
]
},
{
"cell_type": "code",
2020-08-28 01:01:31 -04:00
"execution_count": 10,
2020-08-26 00:39:38 -04:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2020-08-28 01:01:31 -04:00
"Elapsed time = 47.20072412490845\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"../panel_disconnect.py:23: RuntimeWarning: invalid value encountered in true_divide\n",
" z_score = np.sum(image[np.int(ymin):np.int(ymax), np.int(xmin):np.int(xmax)]) / area\n"
2020-08-26 00:39:38 -04:00
]
},
{
"data": {
"text/plain": [
2020-08-28 01:01:31 -04:00
"(-0.5, 1379.5, 4272.5, -0.5)"
2020-08-26 00:39:38 -04:00
]
},
2020-08-28 01:01:31 -04:00
"execution_count": 10,
2020-08-26 00:39:38 -04:00
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2020-08-28 01:01:31 -04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAScAAAOECAYAAADjTfcoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9a6xkWZbf9T/xuvG6ETfuM2++Kqururq6arqn3a1hsA0aRuY5kuURwghhBBZCsgD5AzIg2QgLf2AQliXLgAzIfGMQtrBsJECAEAIEw3ikYTQ90z3d1ZlVlVn5unmfETfez8OHyN+6/zh189FZzXThuVtKZdyIc/bZe+21/uu590nSNNVVu2pX7ap92Vrupz2Aq3bVrtpVu6xdgdNVu2pX7UvZrsDpql21q/albFfgdNWu2lX7UrYrcLpqV+2qfSnbFThdtat21b6U7Qqc/j5tSZL8hSRJ/ouf9LWv0VeaJMm7P4m+rtof7JZc1Tl9+VuSJH9a0p+T9I6kc0l/V9KfT9O0/dMc12UtSZJU0lfTNL13yW//u6RfTdP0JwKEV+3v73ZlOX3JW5Ikf07Sfyjp35LUlPQPSnpL0v+SJEnpBfcUfv9GeNWu2v837QqcvsQtSZKGpL8k6c+mafo/pWk6TdP0vqR/VkuA+heeX/fvJUnyt5Mk+dUkSc4l/enn3/2q9fUvJknyIEmSkyRJ/t0kSe4nSfKP2v2/+vzzneeu2b+UJMlnSZIcJ0ny71g//0CSJL+eJEk7SZKnSZL8Jy8CyVfM7R9JkuRRkiT/dpIkh8/7+uUkSX4pSZIfJUlymiTJX3jd5yZJ8o8nSfJRkiSdJEn+epIk/0eSJP+K/f4vJ0nygyRJzpIk+Z+TJHnrxx3zVfv9bVfg9OVuf0RSWdLf8S/TNO1J+h8l/WP29Z+Q9LclbUj6r/z6JEk+kPTXJf0pSftaWmA3XvHsf0jS1yT9MUl/MUmSrz//fi7p35C0LekPP//9X/sx50W7puX8bkj6i5L+hpaA+x1J//Dz537lVc9NkmRby7n/eUlbkj7SknZ6/vsvS/oLkv5pSTuS/k9J//Ubjvmq/T61K3D6crdtScdpms4u+e3p899pv56m6X+bpukiTdNh5tp/RtJ/l6bp/5Wm6URLIHhVsPEvpWk6TNP0u5K+K+lnJSlN0/8nTdO/l6bp7LkV959L+oUff2qSpKmkfz9N06mkv/l8Pn8tTdNumqbfl/R9Sd98jef+kqTvp2n6d57T6j+SdGDP+TOS/oM0TX/w/PdfkfStK+vpy92uwOnL3Y4lbb8ghrT//Hfaw5f0c91/T9N0IOnkFc924R5IqktSkiTvJUny3ydJcvDchfwVrYLkj9NO0jSdP/8MoD6z34ev+dzs/FJJj6yftyT9tecuYVvSqaREr7Yer9pPsV2B05e7/bqksZbuSLQkSWqS/ilJ/6t9/TJL6Kmkm3Z/RUv3503afyrph1pm5BpaukvJG/b1k3pudn6J/60lcP2ZNE037F8lTdP/+/dh3FftDdsVOH2JW5qmHS0D4v9xkiT/ZJIkxSRJ7kj6b7S0DP7L1+zqb0v640mS/JHnQeS/pDcHlHUtyxl6SZK8L+lffcN+fpLP/R8kfeN5QL0g6V/XMp5F+88k/fkkST6UpCRJmkmS/Mnfp3FftTdsV+D0JW9pmv5lLa2Ev6KlcP6GlpbAH0vTdPyafXxf0p/VMq7zVFJX0qGWVtmP2/5NSf/88z7+hqS/9QZ9vEl74XPTND2W9Ccl/WUt3dUPJP2mns8vTdO/q2U5xt987hJ+T0vL86p9idtVEeYfwJYkSV1SW0sX6dOf9nh+0i1JkpyWluWfStP0f/tpj+eqvVm7spz+gLQkSf54kiTV5/GqvyLpdyXd/+mO6ifXkiT5J5Ik2UiSZE0X8ai/91Me1lX7Au0KnP7gtD8h6cnzf1+V9M+lf3+ZzX9Y0sdaZjD/uKRfvqSk4qr9/6hduXVX7apdtS9lu7KcrtpVu2pfynYFTlftql21L2V76e71v/pX/2qapqn4t1gslKapkiRRrVZToVBQkiQql8saj5dZ6UqloslkEp/z+bxyuSUGTiYTTSYTFQoF9Xo9ra+vx2+SNJvNtFgslMvllCRJ/D+fz2MM5XJZSZIoTVNNJpP4nM/n45p8Ph/f8z+tVFruFV0sFlrW6klpmmo2m2k2m8VzJWk+n2uxWGg+nyufz8c/SfF/LpdTsViMeaZpqtFopLW1Na2trSmfz2s2mymXy2k+n6vX60mSkiTR0dGRPvnkk6DtdDpVkiQaDodqNBp68OCBarWabt68qV6vp7Ozs6DH+vq6CoWCisVizGk8HqtYLKpcLuvRo0fa39/XaDRSoVBQpVJRvV7XfD7X0dGRcrmcRqOR8vm8zs/PJUn7+/s6PDzU3t6e3n33XU0mk5jLYrFQoVDQcDiMe6fTqYbDoTY2NlQoFIKmvV5Pg8FASZLo9PRUz549U7Va1e3btzUejzWbzVSr1XR8fBz8MB6PlaapHj9+rGq1qrfffltPnz7VfD5XvV7X9vayGLzT6Wg6nWp9fV21Wk2j0Ujj8VilUin4pVarBT1Go5FqtZrSNNXa2po2NzdVrVaVz+dVKBRinNPpVPl8XrVaTaVSSfl8XtVqNWg7m82CD8fjcfDOZDJRpVLR2tqaer2eRqNR8Ae84/8PBgNNp9PgFXgBmZnPKZhffs7lcioUCtGnywVjoA+eQf/wJzLlfJ8kSXyPzBQKheDFYrEYc5rP5yoUCprNZur1eoEDpVJJpVJJ8/lc/X5fi8VCk8kkZLHb7QavQOtisag0TVUsFrW7u6tf+ZVfeWG93UvBiUkw4OxnhD2fz6tcLitNU02nUy0WC5XL5RBMQAwGRlhyuZxKpVIsDoSHkIBLPp8PgJjP5yuAxSJClHw+H0LOM30hWLA0TWPxgxiFwsrfXMcCT6dTFQqFACIAB2aBgU5OTrS+vq7ZbKZqtRq0HI/H6nQ66vf76na7khT0mk6nqlarARzdblflclnNZlPtdltJkqher2t9fV3z+Vxra2taX1/XcDhUr9dTkiRqNpvBzLu7uyoUClpbW1OhUFCtVtN8PtfBwYFOT0+1vr6utbU1zWYzlcvlmE+z2VSj0VCn09HJyYkajUYw5Y0bN9RoNDQajVStVlUoFFbWbTabBdhUKhW1222tr69rOp3q937v99Rut3Xt2jUVCgWVSiX1ej2dnJzEularVd24cUPNZlNJkgQADYdDHR0dabFY6ODgQNPpVPV6Pda4UqmoVqupXq9rNBqp3+/r6OhI1Wo1hGQ4HKpYLOr+/ftqNpvqdruqVqvBR5PJRPP5XOfn58rn8wHI8/lc5XJZa2trmk6nmk6noXQBi8lkouFwqGazqVarFTwE4CZJorW1NQ2HQ43H4wBzwAQllsvlNJlMtFgsQrZ8bPl8PhQh/FkqlVQsFrVYLEJh9ft99fv9mEexWIx5ZpW9A9ZkMtFsNguFBWDOZjMdHx9rPB6HjKytrSlJklBSxWIxDBTAfmdnR9VqVbVaTf1+X/V6Pe5bX19fAdcfG5yylgfCWCwWNZvN1O12tbOzE4zNYAuFQghGLpcLJHdhgailUim0Fs+B2LlcLhZiMpkEMEIwhGI0Gq0sGt8Xi8W4dj6fq1QqheU1n88DxBys0CJoTPpDc7iGLhQKarfbKpfLqtfrms1mGo1G2t3d1cOHD4PxJpOJ1tbW9PHHH6tQKKjRaKjb7Wo6nQYzbm9v6+TkJICl3++HRZEkiQaDgdbX13Xnzh2dnp7G+qAEAJXhcKjhcKjt7e3QVDB5p9MJa2lzc1NHR0fBvM1mUwcHB2o2m6H9c7mcTk9P1ev11Gg0dHx8rHq9rlKppHq9HusF08ITTp9ut6t8Pq+33npL9+/f19OnT7W7u6tcLhcW1tra2oqV0O/3VzQy4IvgT6dT1Wo1nZ+fq9/vaz6fx/1ra2vBD+PxWL1eT7VaTWdnZyGIxWJRx8fHsW7wJMLOM6fTqTY2NnR6eqpKpRJ82O/31Wq1NBwOwyqWpIODAz1+/Dh
2020-08-26 00:39:38 -04:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2020-08-28 01:01:31 -04:00
"image/png": "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
2020-08-26 00:39:38 -04:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sys.path.insert(1, '../')\n",
"from panel_disconnect import disconnect\n",
"\n",
"image = cv2.imread(image_path)\n",
2020-08-28 01:01:31 -04:00
"\n",
2020-08-26 00:39:38 -04:00
"\n",
"## Show original image\n",
"fig, ax = plt.subplots(figsize=(16, 16))\n",
"ax.set_title('Original Image')\n",
"plt.imshow(image, cmap='gray')\n",
"ax.axis('off') \n",
"\n",
"start = time.time()\n",
"## predict the bounding boxes\n",
"#boxes = get_yolo_boxes(infer_model, [image], net_h, net_w, config['model']['anchors'], obj_thresh, nms_thresh)[0]\n",
"boxes = detection_orto(infer_model, orto_image = image, div = div, net_h = net_h, net_w = net_w, \n",
" anchors = config['model']['anchors'], obj_thresh = obj_thresh, nms_thresh = nms_thresh)\n",
2020-08-28 01:01:31 -04:00
"boxes_panel = [box for box in boxes if box.get_score() > obj_thresh]\n",
2020-08-26 00:39:38 -04:00
"\n",
"boxes_disc = disconnect(image, boxes_panel, z_thresh = 1.8)\n",
"print('Elapsed time = {}'.format(time.time() - start))\n",
"## draw bounding boxes on the image using labels\n",
"draw_boxes(image, boxes_disc, config['model']['labels'], obj_thresh)\n",
"\n",
"\n",
"## Show Detection Fault\n",
"fig, ax = plt.subplots(figsize=(16, 16))\n",
"ax.set_title('Detection Fault')\n",
"plt.imshow(image, cmap='gray')\n",
"ax.axis('off') "
]
},
2020-08-28 01:01:31 -04:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## All in one"
]
},
2020-08-26 00:39:38 -04:00
{
"cell_type": "code",
2020-08-28 01:01:31 -04:00
"execution_count": 14,
2020-08-26 00:39:38 -04:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2020-08-28 01:01:31 -04:00
"WARNING:tensorflow:No training configuration found in save file: the model was *not* compiled. Compile it manually.\n",
"Elapsed time = 38.81862783432007\n",
"WARNING:tensorflow:No training configuration found in save file: the model was *not* compiled. Compile it manually.\n",
"Elapsed time = 44.0728874206543\n",
"WARNING:tensorflow:No training configuration found in save file: the model was *not* compiled. Compile it manually.\n",
"Elapsed time = 43.44801712036133\n",
"WARNING:tensorflow:No training configuration found in save file: the model was *not* compiled. Compile it manually.\n",
"Elapsed time = 48.66787624359131\n"
2020-08-26 00:39:38 -04:00
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"../panel_disconnect.py:23: RuntimeWarning: invalid value encountered in true_divide\n",
" z_score = np.sum(image[np.int(ymin):np.int(ymax), np.int(xmin):np.int(xmax)]) / area\n"
]
2020-08-28 01:01:31 -04:00
},
{
"data": {
"text/plain": [
"(-0.5, 1379.5, 4272.5, -0.5)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
2020-08-26 00:39:38 -04:00
}
],
"source": [
2020-08-28 01:01:31 -04:00
"## Config of trained model, change this for use different trained model\n",
2020-08-26 00:39:38 -04:00
"\n",
"\n",
"\n",
2020-08-28 01:01:31 -04:00
"list_config_path = ['config_full_yolo_fault_1_infer.json', \n",
" 'config_full_yolo_fault_2_infer.json', \n",
" 'config_full_yolo_fault_4_infer.json', \n",
" 'config_full_yolo_panel_infer.json']\n",
"\n",
"list_name = ['soiling fault', 'diode fault', 'cell damage fault', 'panel disconnected']\n",
"\n",
"image = cv2.imread(image_path)\n",
"\n",
"## Show original image\n",
"fig, ax = plt.subplots(figsize=(16, 16))\n",
"ax.set_title('Original Image')\n",
"plt.imshow(image, cmap='gray')\n",
"ax.axis('off') \n",
"\n",
"for name, config_path in zip(list_name, list_config_path):\n",
" \n",
" with open(config_path) as config_buffer:\n",
" config = json.load(config_buffer)\n",
"\n",
"\n",
" ###############################\n",
" ##### Load the model ######\n",
" ###############################\n",
" os.environ['CUDA_VISIBLE_DEVICES'] = config['train']['gpus']\n",
" infer_model = load_model(config['train']['saved_weights_name'])\n",
"\n",
" ## Parameters of detection\n",
" net_h, net_w = 416, 416 # a multiple of 32, the smaller the faster\n",
" obj_thresh, nms_thresh = 0.5, 0.3\n",
"\n",
" start = time.time()\n",
" ## predict the bounding boxes\n",
" #boxes = get_yolo_boxes(infer_model, [image], net_h, net_w, config['model']['anchors'], obj_thresh, nms_thresh)[0]\n",
" boxes = detection_orto(infer_model, orto_image = image, div = div, net_h = net_h, net_w = net_w, \n",
" anchors = config['model']['anchors'], obj_thresh = obj_thresh, nms_thresh = nms_thresh)\n",
" \n",
" if name == 'panel disconnected':\n",
" \n",
" boxes_panel = [box for box in boxes if box.get_score() > obj_thresh]\n",
" boxes = disconnect(image, boxes_panel, z_thresh = 1.8)\n",
" \n",
" print('Elapsed time = {}'.format(time.time() - start))\n",
" ## draw bounding boxes on the image using labels\n",
" \n",
" draw_boxes(image, boxes, config['model']['labels'], obj_thresh)\n",
"\n",
"\n",
"## Show Detection Fault\n",
2020-08-26 00:39:38 -04:00
"\n",
2020-08-28 01:01:31 -04:00
"fig, ax = plt.subplots(figsize=(16, 16))\n",
"ax.set_title('Detection')\n",
"plt.imshow(image, cmap='gray')\n",
"ax.axis('off') \n",
"\n"
2020-08-26 00:39:38 -04:00
]
},
{
"cell_type": "code",
2020-08-28 01:01:31 -04:00
"execution_count": 12,
2020-08-26 00:39:38 -04:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2020-08-28 01:01:31 -04:00
"1"
2020-08-26 00:39:38 -04:00
]
},
2020-08-28 01:01:31 -04:00
"execution_count": 12,
2020-08-26 00:39:38 -04:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2020-08-28 01:01:31 -04:00
"list_config_path.index(config_path)"
2020-08-26 00:39:38 -04:00
]
},
{
"cell_type": "code",
2020-08-28 01:01:31 -04:00
"execution_count": null,
2020-08-26 00:39:38 -04:00
"metadata": {},
2020-08-28 01:01:31 -04:00
"outputs": [],
"source": []
2020-08-26 00:39:38 -04:00
},
{
"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.7.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}