Amazing-Python-Scripts

Форк
0
/
Covid_19_Detection_using_Chest_X_Ray.ipynb 
502 строки · 58.0 Кб
1
{
2
  "nbformat": 4,
3
  "nbformat_minor": 0,
4
  "metadata": {
5
    "colab": {
6
      "name": "Covid 19 Detection using Chest X-Ray.ipynb",
7
      "provenance": [],
8
      "collapsed_sections": []
9
    },
10
    "kernelspec": {
11
      "name": "python3",
12
      "display_name": "Python 3"
13
    },
14
    "accelerator": "GPU"
15
  },
16
  "cells": [
17
    {
18
      "cell_type": "code",
19
      "metadata": {
20
        "id": "Baw_g4K12Dxj"
21
      },
22
      "source": [
23
        "TRAIN_PATH = \"CovidDataset/Train\"\n",
24
        "VAL_PATH = \"CovidDataset/Test\"\n"
25
      ],
26
      "execution_count": null,
27
      "outputs": []
28
    },
29
    {
30
      "cell_type": "code",
31
      "metadata": {
32
        "id": "c6p75jZs2Qq3"
33
      },
34
      "source": [
35
        "import numpy as np\n",
36
        "import matplotlib.pyplot as plt\n",
37
        "import keras\n",
38
        "from keras.layers import *\n",
39
        "from keras.models import * \n",
40
        "from keras.preprocessing import image"
41
      ],
42
      "execution_count": null,
43
      "outputs": []
44
    },
45
    {
46
      "cell_type": "code",
47
      "metadata": {
48
        "id": "uyPmmRtK2UaM"
49
      },
50
      "source": [
51
        "# CNN Based Model in Keras\n",
52
        "\n",
53
        "model = Sequential()\n",
54
        "model.add(Conv2D(32,kernel_size=(3,3),activation='relu',input_shape=(224,224,3)))\n",
55
        "model.add(Conv2D(64,(3,3),activation='relu'))\n",
56
        "model.add(MaxPooling2D(pool_size=(2,2)))\n",
57
        "model.add(Dropout(0.25))\n",
58
        "\n",
59
        "model.add(Conv2D(64,(3,3),activation='relu'))\n",
60
        "model.add(MaxPooling2D(pool_size=(2,2)))\n",
61
        "model.add(Dropout(0.25))\n",
62
        "\n",
63
        "model.add(Conv2D(128,(3,3),activation='relu'))\n",
64
        "model.add(MaxPooling2D(pool_size=(2,2)))\n",
65
        "model.add(Dropout(0.25))\n",
66
        "\n",
67
        "model.add(Flatten())\n",
68
        "model.add(Dense(64,activation='relu'))\n",
69
        "model.add(Dropout(0.5))\n",
70
        "model.add(Dense(1,activation='sigmoid'))\n",
71
        "\n",
72
        "model.compile(loss=keras.losses.binary_crossentropy,optimizer='adam',metrics=['accuracy'])"
73
      ],
74
      "execution_count": null,
75
      "outputs": []
76
    },
77
    {
78
      "cell_type": "code",
79
      "metadata": {
80
        "id": "Kwfab17B2YYY",
81
        "colab": {
82
          "base_uri": "https://localhost:8080/"
83
        },
84
        "outputId": "5b6eabb8-e17c-4142-bbb3-e21b96c9bc72"
85
      },
86
      "source": [
87
        "model.summary()"
88
      ],
89
      "execution_count": null,
90
      "outputs": [
91
        {
92
          "output_type": "stream",
93
          "text": [
94
            "Model: \"sequential\"\n",
95
            "_________________________________________________________________\n",
96
            "Layer (type)                 Output Shape              Param #   \n",
97
            "=================================================================\n",
98
            "conv2d (Conv2D)              (None, 222, 222, 32)      896       \n",
99
            "_________________________________________________________________\n",
100
            "conv2d_1 (Conv2D)            (None, 220, 220, 64)      18496     \n",
101
            "_________________________________________________________________\n",
102
            "max_pooling2d (MaxPooling2D) (None, 110, 110, 64)      0         \n",
103
            "_________________________________________________________________\n",
104
            "dropout (Dropout)            (None, 110, 110, 64)      0         \n",
105
            "_________________________________________________________________\n",
106
            "conv2d_2 (Conv2D)            (None, 108, 108, 64)      36928     \n",
107
            "_________________________________________________________________\n",
108
            "max_pooling2d_1 (MaxPooling2 (None, 54, 54, 64)        0         \n",
109
            "_________________________________________________________________\n",
110
            "dropout_1 (Dropout)          (None, 54, 54, 64)        0         \n",
111
            "_________________________________________________________________\n",
112
            "conv2d_3 (Conv2D)            (None, 52, 52, 128)       73856     \n",
113
            "_________________________________________________________________\n",
114
            "max_pooling2d_2 (MaxPooling2 (None, 26, 26, 128)       0         \n",
115
            "_________________________________________________________________\n",
116
            "dropout_2 (Dropout)          (None, 26, 26, 128)       0         \n",
117
            "_________________________________________________________________\n",
118
            "flatten (Flatten)            (None, 86528)             0         \n",
119
            "_________________________________________________________________\n",
120
            "dense (Dense)                (None, 64)                5537856   \n",
121
            "_________________________________________________________________\n",
122
            "dropout_3 (Dropout)          (None, 64)                0         \n",
123
            "_________________________________________________________________\n",
124
            "dense_1 (Dense)              (None, 1)                 65        \n",
125
            "=================================================================\n",
126
            "Total params: 5,668,097\n",
127
            "Trainable params: 5,668,097\n",
128
            "Non-trainable params: 0\n",
129
            "_________________________________________________________________\n"
130
          ],
131
          "name": "stdout"
132
        }
133
      ]
134
    },
135
    {
136
      "cell_type": "code",
137
      "metadata": {
138
        "id": "tzU5TZNP2bSU"
139
      },
140
      "source": [
141
        "# Train from scratch\n",
142
        "train_datagen = image.ImageDataGenerator(\n",
143
        "    rescale = 1./255,\n",
144
        "    shear_range = 0.2,\n",
145
        "    zoom_range = 0.2,\n",
146
        "    horizontal_flip = True,\n",
147
        ")\n",
148
        "\n",
149
        "test_dataset = image.ImageDataGenerator(rescale=1./255)"
150
      ],
151
      "execution_count": null,
152
      "outputs": []
153
    },
154
    {
155
      "cell_type": "code",
156
      "metadata": {
157
        "id": "2D0f8Mj32fMf",
158
        "colab": {
159
          "base_uri": "https://localhost:8080/"
160
        },
161
        "outputId": "b261c764-9f40-4f04-cf17-afc763be4ee0"
162
      },
163
      "source": [
164
        "train_generator = train_datagen.flow_from_directory(\n",
165
        "    'CovidDataset/Train',\n",
166
        "    target_size = (224,224),\n",
167
        "    batch_size = 32,\n",
168
        "    class_mode = 'binary')"
169
      ],
170
      "execution_count": null,
171
      "outputs": [
172
        {
173
          "output_type": "stream",
174
          "text": [
175
            "Found 224 images belonging to 2 classes.\n"
176
          ],
177
          "name": "stdout"
178
        }
179
      ]
180
    },
181
    {
182
      "cell_type": "code",
183
      "metadata": {
184
        "id": "Wkd-O74y2icT",
185
        "colab": {
186
          "base_uri": "https://localhost:8080/"
187
        },
188
        "outputId": "f81eb776-7474-4a61-de15-7d4867e4f0bc"
189
      },
190
      "source": [
191
        "train_generator.class_indices"
192
      ],
193
      "execution_count": null,
194
      "outputs": [
195
        {
196
          "output_type": "execute_result",
197
          "data": {
198
            "text/plain": [
199
              "{'Covid': 0, 'Normal': 1}"
200
            ]
201
          },
202
          "metadata": {
203
            "tags": []
204
          },
205
          "execution_count": 9
206
        }
207
      ]
208
    },
209
    {
210
      "cell_type": "code",
211
      "metadata": {
212
        "id": "3BGq9QNO2mqg",
213
        "colab": {
214
          "base_uri": "https://localhost:8080/"
215
        },
216
        "outputId": "c192a067-e13b-484b-ecb6-dfa93fe1ab50"
217
      },
218
      "source": [
219
        "validation_generator = test_dataset.flow_from_directory(\n",
220
        "    'CovidDataset/Val',\n",
221
        "    target_size = (224,224),\n",
222
        "    batch_size = 32,\n",
223
        "    class_mode = 'binary')"
224
      ],
225
      "execution_count": null,
226
      "outputs": [
227
        {
228
          "output_type": "stream",
229
          "text": [
230
            "Found 60 images belonging to 2 classes.\n"
231
          ],
232
          "name": "stdout"
233
        }
234
      ]
235
    },
236
    {
237
      "cell_type": "code",
238
      "metadata": {
239
        "id": "aUS2kLs436gY",
240
        "colab": {
241
          "base_uri": "https://localhost:8080/"
242
        },
243
        "outputId": "8ff5b848-de69-4c74-e082-c5c20200ce93"
244
      },
245
      "source": [
246
        "from keras.callbacks import ModelCheckpoint\n",
247
        "checkpoint = ModelCheckpoint('model-{epoch:03d}.model',monitor='val_loss',verbose=0,save_best_only=True,mode='auto')\n",
248
        "history = model.fit_generator(\n",
249
        "    train_generator,\n",
250
        "    steps_per_epoch=7,\n",
251
        "    epochs = 10,\n",
252
        "    validation_data = validation_generator,\n",
253
        "    validation_steps=2\n",
254
        ")"
255
      ],
256
      "execution_count": null,
257
      "outputs": [
258
        {
259
          "output_type": "stream",
260
          "text": [
261
            "WARNING:tensorflow:From <ipython-input-11-ed61e32a0044>:8: Model.fit_generator (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.\n",
262
            "Instructions for updating:\n",
263
            "Please use Model.fit, which supports generators.\n",
264
            "Epoch 1/10\n",
265
            "2/7 [=======>......................] - ETA: 0s - loss: 1.1741 - accuracy: 0.5312WARNING:tensorflow:Callbacks method `on_train_batch_end` is slow compared to the batch time (batch time: 0.0415s vs `on_train_batch_end` time: 0.0697s). Check your callbacks.\n",
266
            "7/7 [==============================] - 9s 1s/step - loss: 0.8993 - accuracy: 0.6116 - val_loss: 0.6670 - val_accuracy: 0.9500\n",
267
            "Epoch 2/10\n",
268
            "7/7 [==============================] - 8s 1s/step - loss: 0.5155 - accuracy: 0.7500 - val_loss: 0.3947 - val_accuracy: 0.9000\n",
269
            "Epoch 3/10\n",
270
            "7/7 [==============================] - 8s 1s/step - loss: 0.3506 - accuracy: 0.8438 - val_loss: 0.2920 - val_accuracy: 0.9833\n",
271
            "Epoch 4/10\n",
272
            "7/7 [==============================] - 8s 1s/step - loss: 0.2689 - accuracy: 0.8929 - val_loss: 0.4950 - val_accuracy: 0.9667\n",
273
            "Epoch 5/10\n",
274
            "7/7 [==============================] - 8s 1s/step - loss: 0.2235 - accuracy: 0.9330 - val_loss: 0.1036 - val_accuracy: 0.9667\n",
275
            "Epoch 6/10\n",
276
            "7/7 [==============================] - 8s 1s/step - loss: 0.2081 - accuracy: 0.9018 - val_loss: 0.1451 - val_accuracy: 0.9833\n",
277
            "Epoch 7/10\n",
278
            "7/7 [==============================] - 8s 1s/step - loss: 0.1556 - accuracy: 0.9688 - val_loss: 0.0973 - val_accuracy: 0.9833\n",
279
            "Epoch 8/10\n",
280
            "7/7 [==============================] - 8s 1s/step - loss: 0.1584 - accuracy: 0.9420 - val_loss: 0.1072 - val_accuracy: 0.9500\n",
281
            "Epoch 9/10\n",
282
            "7/7 [==============================] - 8s 1s/step - loss: 0.1744 - accuracy: 0.9420 - val_loss: 0.1272 - val_accuracy: 0.9667\n",
283
            "Epoch 10/10\n",
284
            "7/7 [==============================] - 8s 1s/step - loss: 0.1126 - accuracy: 0.9688 - val_loss: 0.0875 - val_accuracy: 0.9667\n"
285
          ],
286
          "name": "stdout"
287
        }
288
      ]
289
    },
290
    {
291
      "cell_type": "code",
292
      "metadata": {
293
        "id": "dGMJo-9B3-Dq"
294
      },
295
      "source": [
296
        "model.save(\"model_adv.h5\")"
297
      ],
298
      "execution_count": null,
299
      "outputs": []
300
    },
301
    {
302
      "cell_type": "code",
303
      "metadata": {
304
        "id": "ETGBju5H5Oky",
305
        "colab": {
306
          "base_uri": "https://localhost:8080/"
307
        },
308
        "outputId": "46d983a7-9ead-42ce-935f-2554ab24b73f"
309
      },
310
      "source": [
311
        "model.evaluate_generator(train_generator)"
312
      ],
313
      "execution_count": null,
314
      "outputs": [
315
        {
316
          "output_type": "stream",
317
          "text": [
318
            "WARNING:tensorflow:From <ipython-input-13-e4ade065aa26>:1: Model.evaluate_generator (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.\n",
319
            "Instructions for updating:\n",
320
            "Please use Model.evaluate, which supports generators.\n"
321
          ],
322
          "name": "stdout"
323
        },
324
        {
325
          "output_type": "execute_result",
326
          "data": {
327
            "text/plain": [
328
              "[0.10945357382297516, 0.9776785969734192]"
329
            ]
330
          },
331
          "metadata": {
332
            "tags": []
333
          },
334
          "execution_count": 13
335
        }
336
      ]
337
    },
338
    {
339
      "cell_type": "code",
340
      "metadata": {
341
        "id": "U5CkN30f5Wym",
342
        "colab": {
343
          "base_uri": "https://localhost:8080/"
344
        },
345
        "outputId": "8a4db8e1-1178-475f-c630-797eadbb3d9c"
346
      },
347
      "source": [
348
        "model.evaluate_generator(validation_generator)"
349
      ],
350
      "execution_count": null,
351
      "outputs": [
352
        {
353
          "output_type": "execute_result",
354
          "data": {
355
            "text/plain": [
356
              "[0.08746592700481415, 0.9666666388511658]"
357
            ]
358
          },
359
          "metadata": {
360
            "tags": []
361
          },
362
          "execution_count": 19
363
        }
364
      ]
365
    },
366
    {
367
      "cell_type": "code",
368
      "metadata": {
369
        "id": "bQt_0zxO83AB",
370
        "colab": {
371
          "base_uri": "https://localhost:8080/"
372
        },
373
        "outputId": "382cdb83-4df6-4eb9-bc39-3ee2909a9dd6"
374
      },
375
      "source": [
376
        "# make a prediction for a new image.\n",
377
        "from keras.preprocessing.image import load_img\n",
378
        "from keras.preprocessing.image import img_to_array\n",
379
        "from keras.models import load_model\n",
380
        " \n",
381
        "# load and prepare the image\n",
382
        "def load_image(filename):\n",
383
        "\t# load the image\n",
384
        "\timg = load_img(filename, target_size=(224, 224))\n",
385
        "\t# convert to array\n",
386
        "\timg = img_to_array(img)\n",
387
        "\t# reshape into a single sample with 3 channels\n",
388
        "\timg = img.reshape(1, 224, 224, 3)\n",
389
        "\t# center pixel data\n",
390
        "\timg = img.astype('float32')\n",
391
        "\timg = img - [123.68, 116.779, 103.939]\n",
392
        "\treturn img\n",
393
        " \n",
394
        "# load an image and predict the class\n",
395
        "def run_example():\n",
396
        "\t# load the image\n",
397
        "\timg = load_image('/content/CovidDataset/Train/Normal/IM-0221-0001.jpeg')\n",
398
        "\t# load model\n",
399
        "\tmodel = load_model('/content/model_adv.h5')\n",
400
        "\t# predict the class\n",
401
        "\tresult = model.predict(img)\n",
402
        "  \n",
403
        "\trun_example.num = result[0]\n",
404
        "\tprint(result[0])\n",
405
        "\n",
406
        " \n",
407
        "# entry point, run the example\n",
408
        "run_example()\n",
409
        "\n",
410
        "if(run_example.num == 0.):\n",
411
        "\tprint('Covid_19')\n",
412
        "else:\n",
413
        "\tprint('Normal')\n",
414
        "\n"
415
      ],
416
      "execution_count": null,
417
      "outputs": [
418
        {
419
          "output_type": "stream",
420
          "text": [
421
            "[1.]\n",
422
            "Normal\n"
423
          ],
424
          "name": "stdout"
425
        }
426
      ]
427
    },
428
    {
429
      "cell_type": "code",
430
      "metadata": {
431
        "id": "hyka0QA0wR7w",
432
        "colab": {
433
          "base_uri": "https://localhost:8080/",
434
          "height": 279
435
        },
436
        "outputId": "8801a243-157e-48be-a14a-aff79e27198b"
437
      },
438
      "source": [
439
        "from matplotlib import pyplot as plt\n",
440
        "\n",
441
        "plt.plot(history.history['loss'],'r',label='training loss')\n",
442
        "plt.plot(history.history['val_loss'],label='validation loss')\n",
443
        "plt.xlabel('# epochs')\n",
444
        "plt.ylabel('loss')\n",
445
        "plt.legend()\n",
446
        "plt.show()"
447
      ],
448
      "execution_count": null,
449
      "outputs": [
450
        {
451
          "output_type": "display_data",
452
          "data": {
453
            "image/png": "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\n",
454
            "text/plain": [
455
              "<Figure size 432x288 with 1 Axes>"
456
            ]
457
          },
458
          "metadata": {
459
            "tags": [],
460
            "needs_background": "light"
461
          }
462
        }
463
      ]
464
    },
465
    {
466
      "cell_type": "code",
467
      "metadata": {
468
        "id": "rb-uMMdNrJSO",
469
        "colab": {
470
          "base_uri": "https://localhost:8080/",
471
          "height": 282
472
        },
473
        "outputId": "bb7b996a-277b-4743-e1f3-e6068a2464f6"
474
      },
475
      "source": [
476
        "from matplotlib import pyplot as plt\n",
477
        "plt.plot(history.history['accuracy'],'r',label='training accuracy')\n",
478
        "plt.plot(history.history['val_accuracy'],label='validation accuracy')\n",
479
        "plt.xlabel('# epochs')\n",
480
        "plt.ylabel('loss')\n",
481
        "plt.legend()\n",
482
        "plt.show()"
483
      ],
484
      "execution_count": null,
485
      "outputs": [
486
        {
487
          "output_type": "display_data",
488
          "data": {
489
            "image/png": "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2LGDpk2b8txzz7FgwQI6dOhAt27daNDAdSbccccdtGjRgoYNGzJ27NiUc2vWrElMTAy7d++mfv36PPLIIzRs2JDOnTtz+vRpAB588EGmTJmScvxLL71E8+bNady4MVu2bAEgOjqaTp060bBhQ/r27UuNGjWIiYm5KNb+/fsTHh5Ow4YNeemll1K2r1y5krZt2xIWFkarVq2Ii4sjKSmJZ599lkaNGtGkSRPee++982IGiIiIoGPHjgC8/PLL3H///bRr147777+f3bt306FDB5o3b07z5s1ZsmRJyuv95z//oXHjxoSFhaW8f82bN0/Zv3379vOe+5vX01wLA3WBjkBVYKGINFbVo0ANVd0nIlcDP4rIelXdkfpkEekH9AOoXr26/6JctAiWL3erxgUF+e91jMlH3njjDTZs2MCaNWsAWLBgAatXr2bDhg0pUy3HjRtHhQoVOH36NC1btuTOO+8kJCTkvOts376dr776ig8//JCePXsydepU7kuj/lloaCirV69m9OjRDB8+nI8++ohXXnmFm266iSFDhvD999/z8ccfpxnr66+/ToUKFUhKSuLmm29m3bp11KtXj169ejFp0iRatmzJ8ePHKVGiBGPHjmX37t2sWbOGwoULExsbe8n3YtOmTSxatIgSJUpw6tQp5syZQ/Hixdm+fTu9e/cmIiKCWbNmMW3aNJYvX07JkiWJjY2lQoUKlCtXjjVr1tC0aVPGjx/PQw89lNX/FNnmzwSxD0h9o0BV37bUooDlqpoA7BKRbbiEsVJV9wGo6k4RWQA0A85LEKo6FhgLEB4erv74JQDXeggNhQcf9NtLGONX77zjdQQAtGrV6rx5+CNGjOCbb74BYO/evWzfvv2iBFGrVi2aNm0KQIsWLdi9e3ea1+7ha923aNGCr7/+GoBFixalXL9r164EBwenee7kyZMZO3YsiYmJHDhwgE2bNiEiVK5cmZYtWwJQtmxZAObOncujjz5K4cLu47NChQqX/L27detGiRIlAHcD4xNPPMGaNWsICgpi27ZtKdd96KGHKFmy5HnX7du3L+PHj+ett95i0qRJrFix4pKvl1P82cW0EqgrIrVEpChwD3DhbKRvca0HRCQU1+W0U0SCRaRYqu3tgE1+jDV9mzbBjBkwYAD4/sMZY7KnVKlSKY8XLFjA3LlzWbp0KWvXrqVZs2ZpztMv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\n",
490
            "text/plain": [
491
              "<Figure size 432x288 with 1 Axes>"
492
            ]
493
          },
494
          "metadata": {
495
            "tags": [],
496
            "needs_background": "light"
497
          }
498
        }
499
      ]
500
    }
501
  ]
502
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.