# Tensorflow Computer Vision Helper
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import glob
import os
def plot_convolution(data,t,title=''):
fig, ax = plt.subplots(2,len(data)+1,figsize=(8,3))
fig.suptitle(title,fontsize=16)
tt = np.expand_dims(np.expand_dims(t,2),2)
for i,im in enumerate(data):
ax[0][i].imshow(im)
ximg = np.expand_dims(np.expand_dims(im,2),0)
cim = tf.nn.conv2d(ximg,tt,1,'SAME')
ax[1][i].imshow(cim[0][:,:,0])
ax[0][i].axis('off')
ax[1][i].axis('off')
ax[0,-1].imshow(t)
ax[0,-1].axis('off')
ax[1,-1].axis('off')
#plt.tight_layout()
plt.show()
def plot_results(hist):
fig,ax = plt.subplots(1,2,figsize=(15,3))
ax[0].set_title('Accuracy')
ax[1].set_title('Loss')
for x in ['acc','val_acc']:
ax[0].plot(hist.history[x])
for x in ['loss','val_loss']:
ax[1].plot(hist.history[x])
plt.show()
def display_dataset(dataset, labels=None, n=10, classes=None):
fig,ax = plt.subplots(1,n,figsize=(15,3))
for i in range(n):
ax[i].imshow(dataset[i])
ax[i].axis('off')
if classes is not None and labels is not None:
ax[i].set_title(classes[labels[i][0]])
def check_image(fn):
try:
im = Image.open(fn)
im.verify()
return im.format=='JPEG'
except:
return False
def check_image_dir(path):
for fn in glob.glob(path):
if not check_image(fn):
print("Corrupt image or wrong format: {}".format(fn))
os.remove(fn)
def load_cats_dogs_dataset(batch_size=64):
if not os.path.exists('data/PetImages'):
print("Extracting the dataset")
with zipfile.ZipFile('data/kagglecatsanddogs_3367a.zip', 'r') as zip_ref:
zip_ref.extractall('data')
print("Checking dataset")
check_image_dir('data/PetImages/Cat/*.jpg')
check_image_dir('data/PetImages/Dog/*.jpg')
data_dir = 'data/PetImages'
print("Loading dataset")
ds_train = keras.preprocessing.image_dataset_from_directory(
data_dir,
validation_split = 0.2,
subset = 'training',
seed = 13,
image_size = (224,224),
batch_size = batch_size
)
ds_test = keras.preprocessing.image_dataset_from_directory(
data_dir,
validation_split = 0.2,
subset = 'validation',
seed = 13,
image_size = (224,224),
batch_size = batch_size
)
return ds_train,ds_testmicrosoft/AI-For-Beginners
Publicmirrored fromhttps://github.com/microsoft/AI-For-BeginnersAvailable
4-ComputerVision/07-ConvNets/tfcv.py
86lines · modepreview