Files
Photovoltaic_Fault_Detector/.ipynb_checkpoints/Example Detection AllInOne_100Example-checkpoint.ipynb

510 lines
595 KiB
Plaintext
Raw Permalink Normal View History

2020-07-13 21:32:18 -04:00
{
"cells": [
{
"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",
"from panel_disconnect import disconnect\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Define Image Path and output"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"input_path = '100_Example/'\n",
"output_path = 'Result_Complete_Example/'\n",
"makedirs(output_path)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Load Model (Panel Detector, Soiling, Diode, Cell Damage)"
]
},
{
"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",
"WARNING:tensorflow:No training configuration found in save file: the model was *not* compiled. Compile it manually.\n",
"WARNING:tensorflow:No training configuration found in save file: the model was *not* compiled. Compile it manually.\n",
"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_panel = 'config_full_yolo_panel_infer.json' #Panel\n",
"config_path_soiling = 'config_full_yolo_fault_1_infer.json' #Soiling\n",
"config_path_diode = 'config_full_yolo_fault_4_infer.json' #Diode\n",
"config_path_cellD = 'config_full_yolo_fault_2_infer.json' #Cell Damage\n",
"\n",
"\n",
"\n",
"\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, nms_thresh_panel = 0.5, 0.45, 0.3\n",
"\n",
"####################################################\n",
"##### Load the model Panel Detector #############\n",
"####################################################\n",
"with open(config_path_panel) as config_buffer:\n",
" config_panel = json.load(config_buffer)\n",
"\n",
"os.environ['CUDA_VISIBLE_DEVICES'] = config_panel['train']['gpus']\n",
"infer_model_panel = load_model(config_panel['train']['saved_weights_name'])\n",
"\n",
"####################################################\n",
"##### Load the model Soiling #############\n",
"####################################################\n",
"with open(config_path_soiling) as config_buffer:\n",
" config_soiling = json.load(config_buffer)\n",
"\n",
"infer_model_soiling = load_model(config_soiling['train']['saved_weights_name'])\n",
"\n",
"####################################################\n",
"##### Load the model Diode #############\n",
"####################################################\n",
"with open(config_path_diode) as config_buffer:\n",
" config_diode = json.load(config_buffer)\n",
"\n",
"infer_model_diode = load_model(config_diode['train']['saved_weights_name'])\n",
"\n",
"####################################################\n",
"##### Load the model Cell Damage #############\n",
"####################################################\n",
"with open(config_path_cellD) as config_buffer:\n",
" config_cellD = json.load(config_buffer)\n",
"\n",
"infer_model_cellD = load_model(config_cellD['train']['saved_weights_name'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Load Image paths"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"image_paths = []\n",
"\n",
"if os.path.isdir(input_path):\n",
" for inp_file in os.listdir(input_path):\n",
" image_paths += [input_path + inp_file]\n",
"else:\n",
" image_paths += [input_path]\n",
"\n",
"image_paths = [inp_file for inp_file in image_paths if (inp_file[-4:] in ['.jpg', '.png', 'JPEG'])]\n",
"\n",
"# the main loop\n",
"times = []\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Detection of images"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"100_Example/Mision 4_DJI_0067.jpg\n",
"Elapsed time = 13.580645084381104\n",
"100_Example/Mision 9_DJI_0068.jpg\n",
"Elapsed time = 6.935424566268921\n",
"100_Example/Mision 9_DJI_0090.jpg\n",
"Elapsed time = 6.3714070320129395\n",
"100_Example/Mision 10_DJI_0145.jpg\n",
"Elapsed time = 6.74527382850647\n",
"100_Example/Mision 1_DJI_0019.jpg\n",
"Elapsed time = 6.775529146194458\n",
"100_Example/Mision 11_DJI_0061.jpg\n",
"Elapsed time = 7.002215147018433\n",
"100_Example/Mision 9_DJI_0076.jpg\n",
"Elapsed time = 6.889668703079224\n",
"100_Example/Mision 4_DJI_0040.jpg\n",
"Elapsed time = 7.327791213989258\n",
"100_Example/Mision 10_DJI_0103.jpg\n",
"Elapsed time = 7.31937575340271\n",
"100_Example/Mision 4_DJI_0058.jpg\n",
"Elapsed time = 6.648495674133301\n",
"100_Example/Mision 9_DJI_0012.jpg\n",
"Elapsed time = 6.7225916385650635\n",
"100_Example/Mision 10_DJI_0010.jpg\n",
"Elapsed time = 7.258010149002075\n",
"100_Example/Mision 1_DJI_0005.jpg\n",
"Elapsed time = 7.08447790145874\n",
"100_Example/Mision 4_DJI_0061.jpg\n",
"Elapsed time = 6.509597301483154\n",
"100_Example/Mision 6_DJI_0008.jpg\n",
"Elapsed time = 6.427324056625366\n",
"100_Example/Mision 9_DJI_0043.jpg\n",
"Elapsed time = 6.708544015884399\n",
"100_Example/Mision 9_DJI_0086.jpg\n",
"Elapsed time = 7.64997124671936\n",
"100_Example/Mision 5_DJI_0057.jpg\n",
"Elapsed time = 8.020388126373291\n",
"100_Example/Mision 10_DJI_0177.jpg\n",
"Elapsed time = 8.652998447418213\n",
"100_Example/Mision 4_DJI_0087.jpg\n",
"Elapsed time = 7.90339732170105\n",
"100_Example/Mision 4_DJI_0020.jpg\n",
"Elapsed time = 7.2860777378082275\n",
"100_Example/Mision 10_DJI_0147.jpg\n",
"Elapsed time = 7.4565253257751465\n",
"100_Example/Mision 10_DJI_0180.jpg\n",
"Elapsed time = 7.306499242782593\n",
"100_Example/Mision 10_DJI_0100.jpg\n",
"Elapsed time = 8.094278573989868\n",
"100_Example/Mision 4_DJI_0037.jpg\n",
"Elapsed time = 6.724163055419922\n",
"100_Example/Mision 4_DJI_0048.jpg\n",
"Elapsed time = 6.416969537734985\n",
"100_Example/Mision 4_DJI_0077.jpg\n",
"Elapsed time = 7.322848796844482\n",
"100_Example/Mision 10_DJI_0148.jpg\n",
"Elapsed time = 8.202306747436523\n",
"100_Example/Mision 11_DJI_0060.jpg\n",
"Elapsed time = 8.421032905578613\n",
"100_Example/Mision 4_DJI_0045.jpg\n",
"Elapsed time = 7.004019737243652\n",
"100_Example/Mision 10_DJI_0120.jpg\n",
"Elapsed time = 7.765641927719116\n",
"100_Example/Mision 5_DJI_0041.jpg\n",
"Elapsed time = 8.028720140457153\n",
"100_Example/Mision 10_DJI_0141.jpg\n",
"Elapsed time = 6.67255711555481\n",
"100_Example/Mision 5_DJI_0044.jpg\n",
"Elapsed time = 6.44356632232666\n",
"100_Example/Mision 5_DJI_0085.jpg\n",
"Elapsed time = 6.671105623245239\n",
"100_Example/Mision 4_DJI_0038.jpg\n",
"Elapsed time = 6.503889322280884\n",
"100_Example/Mision 10_DJI_0096.jpg\n",
"Elapsed time = 6.516649961471558\n",
"100_Example/Mision 10_DJI_0144.jpg\n",
"Elapsed time = 6.6470115184783936\n",
"100_Example/Mision 10_DJI_0142.jpg\n",
"Elapsed time = 6.744549036026001\n",
"100_Example/Mision 7_DJI_0027.jpg\n",
"Elapsed time = 6.6441521644592285\n",
"100_Example/Mision 11_DJI_0019.jpg\n",
"Elapsed time = 6.629210710525513\n",
"100_Example/Mision 9_DJI_0083.jpg\n",
"Elapsed time = 7.128464460372925\n",
"100_Example/Mision 7_DJI_0002.jpg\n",
"Elapsed time = 7.551218748092651\n",
"100_Example/Mision 10_DJI_0094.jpg\n",
"Elapsed time = 8.458415031433105\n",
"100_Example/Mision 4_DJI_0017.jpg\n",
"Elapsed time = 8.11717939376831\n",
"100_Example/Mision 11_DJI_0010.jpg\n",
"Elapsed time = 6.738617658615112\n",
"100_Example/Mision 6_DJI_0001.jpg\n",
"Elapsed time = 6.731432914733887\n",
"100_Example/Mision 9_DJI_0084.jpg\n",
"Elapsed time = 6.683074235916138\n",
"100_Example/Mision 10_DJI_0146.jpg\n",
"Elapsed time = 7.271329164505005\n",
"100_Example/Mision 10_DJI_0011.jpg\n",
"Elapsed time = 6.584873199462891\n",
"100_Example/Mision 10_DJI_0004.jpg\n",
"Elapsed time = 6.516340494155884\n",
"100_Example/Mision 9_DJI_0025.jpg\n",
"Elapsed time = 6.666715383529663\n",
"100_Example/Mision 10_DJI_0054.jpg\n",
"Elapsed time = 6.651204824447632\n",
"100_Example/Mision 10_DJI_0095.jpg\n",
"Elapsed time = 6.463395118713379\n",
"100_Example/Mision 10_DJI_0152.jpg\n",
"Elapsed time = 6.70379638671875\n",
"100_Example/Mision 10_DJI_0027.jpg\n",
"Elapsed time = 6.65558934211731\n",
"100_Example/Mision 6_DJI_0051.jpg\n",
"Elapsed time = 6.498088359832764\n",
"100_Example/Mision 9_DJI_0082.jpg\n",
"Elapsed time = 7.057750225067139\n",
"100_Example/Mision 9_DJI_0077.jpg\n",
"Elapsed time = 7.9876768589019775\n",
"100_Example/Mision 10_DJI_0179.jpg\n",
"Elapsed time = 7.247650861740112\n",
"100_Example/Mision 6_DJI_0072.jpg\n",
"Elapsed time = 6.948460102081299\n",
"100_Example/Mision 10_DJI_0167.jpg\n",
"Elapsed time = 7.502035617828369\n",
"100_Example/Mision 4_DJI_0032.jpg\n",
"Elapsed time = 6.898995399475098\n",
"100_Example/Mision 10_DJI_0175.jpg\n",
"Elapsed time = 7.028684616088867\n",
"100_Example/Mision 6_DJI_0055.jpg\n",
"Elapsed time = 6.847854137420654\n",
"100_Example/Mision 3_DJI_0009.jpg\n",
"Elapsed time = 7.531402826309204\n",
"100_Example/Mision 3_DJI_0008.jpg\n",
"Elapsed time = 8.348368406295776\n",
"100_Example/Mision 5_DJI_0046.jpg\n",
"Elapsed time = 7.112367391586304\n",
"100_Example/Mision 9_DJI_0054.jpg\n",
"Elapsed time = 7.2907304763793945\n",
"100_Example/Mision 4_DJI_0068.jpg\n",
"Elapsed time = 7.379649877548218\n",
"100_Example/Mision 9_DJI_0064.jpg\n",
"Elapsed time = 8.235641717910767\n",
"100_Example/Mision 4_DJI_0062.jpg\n",
"Elapsed time = 7.234843969345093\n",
"100_Example/Mision 6_DJI_0056.jpg\n",
"Elapsed time = 7.157646656036377\n",
"100_Example/Mision 4_DJI_0064.jpg\n",
"Elapsed time = 7.113090515136719\n",
"100_Example/Mision 9_DJI_0040.jpg\n",
"Elapsed time = 7.369828939437866\n",
"100_Example/Mision 9_DJI_0080.jpg\n",
"Elapsed time = 6.951316833496094\n",
"100_Example/Mision 5_DJI_0049.jpg\n",
"Elapsed time = 7.011293172836304\n",
"100_Example/Mision 10_DJI_0170.jpg\n",
"Elapsed time = 7.267280340194702\n",
"100_Example/Mision 5_DJI_0091.jpg\n",
"Elapsed time = 8.16886043548584\n",
"100_Example/Mision 6_DJI_0052.jpg\n",
"Elapsed time = 7.4664976596832275\n",
"100_Example/Mision 9_DJI_0016.jpg\n",
"Elapsed time = 7.098127365112305\n",
"100_Example/Mision 10_DJI_0093.jpg\n",
"Elapsed time = 7.144554853439331\n",
"100_Example/Mision 4_DJI_0079.jpg\n",
"Elapsed time = 7.273373126983643\n",
"100_Example/Mision 9_DJI_0013.jpg\n",
"Elapsed time = 6.812521457672119\n",
"100_Example/Mision 5_DJI_0081.jpg\n",
"Elapsed time = 7.042137622833252\n",
"100_Example/Mision 9_DJI_0065.jpg\n",
"Elapsed time = 7.287776231765747\n",
"100_Example/Mision 4_DJI_0044.jpg\n",
"Elapsed time = 7.068741798400879\n",
"100_Example/Mision 10_DJI_0140.jpg\n",
"Elapsed time = 6.873102903366089\n",
"100_Example/Mision 10_DJI_0151.jpg\n",
"Elapsed time = 7.133445501327515\n",
"100_Example/Mision 10_DJI_0028.jpg\n",
"Elapsed time = 6.867727279663086\n",
"100_Example/Mision 4_DJI_0066.jpg\n",
"Elapsed time = 6.939803123474121\n",
"100_Example/Mision 4_DJI_0046.jpg\n",
"Elapsed time = 6.948658227920532\n",
"100_Example/Mision 5_DJI_0083.jpg\n",
"Elapsed time = 7.099925994873047\n",
"100_Example/Mision 6_DJI_0059.jpg\n",
"Elapsed time = 6.925538063049316\n",
"100_Example/Mision 1_DJI_0031.jpg\n",
"Elapsed time = 6.821932315826416\n",
"100_Example/Mision 9_DJI_0015.jpg\n",
"Elapsed time = 7.032159328460693\n",
"100_Example/Mision 5_DJI_0048.jpg\n",
"Elapsed time = 7.372926712036133\n",
"100_Example/Mision 10_DJI_0092.jpg\n",
"Elapsed time = 7.052095174789429\n",
"100_Example/Mision 4_DJI_0078.jpg\n",
"Elapsed time = 6.999572277069092\n",
"100_Example/Mision 11_DJI_0004.jpg\n",
"Elapsed time = 7.106813192367554\n"
]
}
],
"source": [
"for image_path in image_paths:\n",
" image = cv2.imread(image_path)\n",
" print(image_path)\n",
" start = time.time()\n",
" # predict the bounding boxes\n",
" boxes_soiling = get_yolo_boxes(infer_model_soiling, [image], net_h, net_w, config_soiling['model']['anchors'], obj_thresh, nms_thresh)[0]\n",
" boxes_diode = get_yolo_boxes(infer_model_diode, [image], net_h, net_w, config_diode['model']['anchors'], obj_thresh, nms_thresh)[0]\n",
" boxes_cellD = get_yolo_boxes(infer_model_cellD, [image], net_h, net_w, config_cellD['model']['anchors'], obj_thresh, nms_thresh)[0]\n",
" boxes_panel = get_yolo_boxes(infer_model_panel, [image], net_h, net_w, config_panel['model']['anchors'], obj_thresh, nms_thresh_panel)[0]\n",
" boxes_panel = [box for box in boxes_panel if box.get_score() > obj_thresh]\n",
" boxes_disc = disconnect(image, boxes_panel, z_thresh = 1.8)\n",
" print('Elapsed time = {}'.format(time.time() - start))\n",
" times.append(time.time() - start)\n",
" # Draw boxes\n",
" draw_boxes(image, boxes_soiling, config_soiling['model']['labels'], obj_thresh, number_color = 0)\n",
" draw_boxes(image, boxes_diode, config_diode['model']['labels'], obj_thresh, number_color = 2)\n",
" draw_boxes(image, boxes_cellD, config_cellD['model']['labels'], obj_thresh, number_color = 4)\n",
" draw_boxes(image, boxes_disc, ['disc'], obj_thresh, number_color = 5)\n",
" \n",
" # write the image with bounding boxes to file\n",
" cv2.imwrite(output_path + image_path.split('/')[-1], np.uint8(image))\n",
"\n",
"file = open(output_path + 'time.txt','w')\n",
"file.write('Tiempo promedio:' + str(np.mean(times)))\n",
"file.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example One image"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"100_Example/Mision 10_DJI_0027.jpg\n",
"Elapsed time = 5.347564220428467\n",
"Elapsed time = 5.349539756774902\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f596cdf96d0>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"image_path = image_paths[55]\n",
"\n",
"image = cv2.imread(image_path)\n",
"plt.figure(figsize=(12, 10))\n",
"plt.imshow(image)\n",
"print(image_path)\n",
"\n",
"start = time.time()\n",
"# predict the bounding boxes\n",
"boxes_soiling = get_yolo_boxes(infer_model_soiling, [image], net_h, net_w, config_soiling['model']['anchors'], obj_thresh, nms_thresh)[0]\n",
"boxes_diode = get_yolo_boxes(infer_model_diode, [image], net_h, net_w, config_diode['model']['anchors'], obj_thresh, nms_thresh)[0]\n",
"boxes_cellD = get_yolo_boxes(infer_model_cellD, [image], net_h, net_w, config_cellD['model']['anchors'], obj_thresh, nms_thresh)[0]\n",
"boxes_panel = get_yolo_boxes(infer_model_panel, [image], net_h, net_w, config_panel['model']['anchors'], obj_thresh, nms_thresh_panel)[0]\n",
"boxes_panel = [box for box in boxes_panel if box.get_score() > obj_thresh]\n",
"boxes_disc = disconnect(image, boxes_panel, z_thresh = 1.8)\n",
"print('Elapsed time = {}'.format(time.time() - start))\n",
"times.append(time.time() - start)\n",
"# Draw boxes\n",
"draw_boxes(image, boxes_soiling, config_soiling['model']['labels'], obj_thresh, number_color = 0)\n",
"draw_boxes(image, boxes_diode, config_diode['model']['labels'], obj_thresh, number_color = 2)\n",
"draw_boxes(image, boxes_cellD, config_cellD['model']['labels'], obj_thresh, number_color = 4)\n",
"draw_boxes(image, boxes_disc, ['disc'], obj_thresh, number_color = 5)\n",
"\n",
"print('Elapsed time = {}'.format(time.time() - start))\n",
"times.append(time.time() - start)\n",
"plt.figure(figsize=(12, 10))\n",
"plt.imshow(image)\n"
]
},
{
"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": 4
}