# -*- coding: utf-8 -*- """HOG&SVM.ipynb Automatically generated by Colaboratory. Original file is located at https://colab.research.google.com/drive/128Eq-6Qnnv2Q7qW3cs8YlUe_f2EdGps5 """ from __future__ import print_function, division import os import torch import pandas as pd from skimage import io, transform import numpy as np import matplotlib.pyplot as plt from torch.utils.data import Dataset, DataLoader import torchvision.transforms as transforms import torchvision import cv2 from sklearn.model_selection import train_test_split import numpy as np # linear algebra import json from matplotlib import pyplot as plt from skimage import color from skimage.feature import hog from sklearn import svm from sklearn.metrics import classification_report,accuracy_score # Ignore warnings import warnings warnings.filterwarnings("ignore") plt.ion() # interactive mode from google.colab import drive drive.mount('/content/drive') from numpy import genfromtxt labels = genfromtxt('/content/drive/MyDrive/insa 5/Datasets/celebA/labels.csv', delimiter=',') labels=np.where(labels==-1, 0, labels) print(labels) labels=np.delete(labels,0,0) labels=np.delete(labels,0,1) print(labels) labels_smil=[] for i in range(5002): labels_smil.append(labels[i,31]) print(labels_smil) import os #1)recuperation du contenu du dossier c:\dossier\ contenu=os.listdir('/content/drive/MyDrive/insa 5/Datasets/celebA/images/') #ça te donnera une liste du chemin complet de chaques fichiers du dossier, par exemple pour le fichier 001.jpg, ça ressemblerait à ça : 'c:/dossier/001.jpg' #2)recuperation des noms de fichiers (sans le chemin) qui sont des .jpg: contenu=[x.split('/')[-1] for x in contenu if '.jpg' in x.split('/')[-1]] #3)Maintenant on trie la liste contenu.sort() print(contenu) images=[] for i in range(len(contenu)): #print('/content/drive/MyDrive/insa 5/Datasets/celebA/images/'+str(contenu[i])) image=cv2.imread('/content/drive/MyDrive/insa 5/Datasets/celebA/images/'+str(contenu[i])) #print(image) images.append(image) hog_images=[] hog_features=[] for i in range(len(contenu)): fd, hog_img = hog(images[i], orientations=8, pixels_per_cell=(16, 16), cells_per_block=(4, 4), visualize=True) hog_images.append(hog_img) hog_features.append(fd) print(hog_features) print(hog_images) print(str(len(hog_features))) print(hog_images[0]) import matplotlib.pyplot as plt from skimage.feature import hog from skimage import data, exposure fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 4), sharex=True, sharey=True) ax1.axis('off') ax1.imshow(images[53], cmap=plt.cm.gray) ax1.set_title('Input image') # Rescale histogram for better display hog_image_rescaled = exposure.rescale_intensity(hog_images[53], in_range=(0, 10)) ax2.axis('off') ax2.imshow(hog_image_rescaled, cmap=plt.cm.gray) ax2.set_title('Histogram of Oriented Gradients') plt.show() clf = svm.SVC() x_train, x_test = hog_features[:4000], hog_features[4000:] y_train, y_test = labels_smil[:4000] , labels_smil[4000:] print(x_train) print(y_train) clf.fit(x_train,y_train) y_pred = clf.predict(x_test) print("Accuracy: "+str(accuracy_score(y_test, y_pred))) print('\n') print(classification_report(y_test, y_pred))