121 lines
3.2 KiB
Python
121 lines
3.2 KiB
Python
# -*- 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))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|