Browse Source

initial development for intel image classifier from kaggle

Douglas Andreani 4 years ago
parent
commit
de8b5fe25c
3 changed files with 115 additions and 0 deletions
  1. 4 0
      .gitignore
  2. 68 0
      classifier.py
  3. 43 0
      requirements.txt

+ 4 - 0
.gitignore

@@ -0,0 +1,4 @@
+data/*
+*.png
+*.jpg
+*.zip

+ 68 - 0
classifier.py

@@ -0,0 +1,68 @@
+#!/usr/bin/env python
+# coding: utf-8
+
+# In[29]:
+
+
+import itertools
+import os
+
+import matplotlib.pylab as plt
+import numpy as np
+
+import tensorflow as tf
+import tensorflow_hub as hub
+from tensorflow.keras import datasets, layers, models
+
+print("TF version:", tf.__version__)
+print("Hub version:", hub.__version__)
+print("GPU is", "available" if tf.test.is_gpu_available() else "NOT AVAILABLE")
+
+
+
+IMAGE_SIZE=(224, 224)
+BATCH_SIZE=32
+
+
+
+datagen_kwargs = dict(rescale=1./255, validation_split=.20)
+dataflow_kwargs = dict(target_size=IMAGE_SIZE, batch_size=BATCH_SIZE,
+                   interpolation="bilinear")
+train_datagen = tf.keras.preprocessing.image.ImageDataGenerator(
+    **datagen_kwargs)
+
+train_generator = train_datagen.flow_from_directory(
+    "data/seg_train/seg_train", subset="training", shuffle=True, **dataflow_kwargs)
+
+print(f"Data shape {train_generator[1][0].shape}")
+
+
+valid_generator = train_datagen.flow_from_directory(
+    "data/seg_test/seg_test", subset="validation", shuffle=False, **dataflow_kwargs)
+
+
+
+
+model = tf.keras.models.Sequential()
+model.add(layers.Conv2D(32, (3, 3), activation='relu'))
+model.add(layers.MaxPooling2D((2, 2)))
+model.add(layers.Conv2D(64, (3, 3), activation='relu'))
+model.add(layers.MaxPooling2D((2, 2)))
+model.add(layers.Conv2D(128, (3, 3), activation='relu'))
+model.add(layers.MaxPooling2D((2, 2)))
+model.add(layers.Flatten())
+model.add(layers.Dense(64, activation='relu'))
+model.add(layers.Dense(train_generator.num_classes, activation='softmax'))
+
+model.build(input_shape=(32, 224, 224, 3))
+print(f"Model summary: {model.summary()}")
+
+
+
+optmizer = tf.keras.optimizers.Adam(learning_rate=0.001)
+model.compile(optimizer=optmizer, loss=tf.keras.losses.MeanSquaredError(),
+              metrics=['accuracy'])
+
+history = model.fit(train_generator, batch_size=32,
+                    epochs=30, validation_data=valid_generator)
+

+ 43 - 0
requirements.txt

@@ -0,0 +1,43 @@
+absl-py==0.11.0
+astunparse==1.6.3
+cachetools==4.2.0
+certifi==2020.12.5
+chardet==4.0.0
+cycler==0.10.0
+flatbuffers==1.12
+gast==0.3.3
+google-auth==1.24.0
+google-auth-oauthlib==0.4.2
+google-pasta==0.2.0
+grpcio==1.32.0
+h5py==2.10.0
+idna==2.10
+importlib-metadata==3.4.0
+Keras-Preprocessing==1.1.2
+kiwisolver==1.3.1
+Markdown==3.3.3
+matplotlib==3.3.3
+numpy==1.19.5
+oauthlib==3.1.0
+opt-einsum==3.3.0
+Pillow==8.1.0
+protobuf==3.14.0
+pyasn1==0.4.8
+pyasn1-modules==0.2.8
+pyparsing==2.4.7
+python-dateutil==2.8.1
+requests==2.25.1
+requests-oauthlib==1.3.0
+rsa==4.7
+six==1.15.0
+tensorboard==2.4.1
+tensorboard-plugin-wit==1.7.0
+tensorflow==2.4.0
+tensorflow-estimator==2.4.0
+tensorflow-hub==0.11.0
+termcolor==1.1.0
+typing-extensions==3.7.4.3
+urllib3==1.26.2
+Werkzeug==1.0.1
+wrapt==1.12.1
+zipp==3.4.0