diff --git a/.DS_Store b/.DS_Store index 4f6eca8..ec1d9d8 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0608b9b --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# cache +.DS_Store +*/.DS_Store +.vscode/ +*/__pycache__ + +# Pytorch +*.pth +*.py~ +*.sh~ \ No newline at end of file diff --git a/1.png b/1.png new file mode 100644 index 0000000..55b256c Binary files /dev/null and b/1.png differ diff --git a/BaseML/Classification.py b/BaseML/Classification.py index 75fa2b5..a5b57f3 100644 --- a/BaseML/Classification.py +++ b/BaseML/Classification.py @@ -1,18 +1,26 @@ import pandas as pd import numpy as np import os -from sklearn.metrics import accuracy_score, mean_squared_error +import matplotlib.pyplot as plt +import seaborn +from sklearn.metrics import accuracy_score, mean_squared_error, precision_score, recall_score, confusion_matrix from sklearn.naive_bayes import GaussianNB from sklearn.ensemble import AdaBoostClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.neural_network import MLPClassifier +from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score, silhouette_samples import joblib +import cv2 import random +from skimage.feature import hog +from scipy.spatial.distance import cdist + +from demo.face import extract_hog_features class cls: def __init__(self, algorithm='KNN', n_neighbors=5, n_estimators=100, N_CLUSTERS=5): @@ -23,6 +31,8 @@ def __init__(self, algorithm='KNN', n_neighbors=5, n_estimators=100, N_CLUSTERS= self.test_size = 0.2 self.test_set = ' ' self.x_train, self.x_test, self.y_train, self.y_test = 0, 0, 0, 0 + self.X = 0 + self.Y = 0 if self.algorithm == 'KNN': self.model = KNeighborsClassifier(n_neighbors=n_neighbors) elif self.algorithm == 'SVM': @@ -38,6 +48,8 @@ def __init__(self, algorithm='KNN', n_neighbors=5, n_estimators=100, N_CLUSTERS= self.model = KMeans(self.n) elif self.algorithm == 'MLP': self.model = MLPClassifier(solver='lbfgs') + elif self.algorithm == 'RandomForest': + self.model == RandomForestClassifier(n_estimators=n_estimators,random_state=0) def train(self, seed=0, data_type='csv'): if self.algorithm in ['AdaBoost','SVM','NaiveBayes', 'MLP']: @@ -72,14 +84,19 @@ def train(self, seed=0, data_type='csv'): self.x_train = np.delete(self.x_train, delete_list, axis=1) self.model.fit(self.x_train) + + elif self.algorithm == 'RandomForest': + self.x_train, self.x_test, self.y_train, self.y_test = train_test_split(self.X, self.Y, test_size=0.25, random_state=42) + self.model.fit(self.x_train, self.y_train) + def inference(self, data = np.nan): if data is not np.nan: # 对data进行了指定 self.x_test = data - if self.algorithm in ['AdaBoost','SVM','NaiveBayes', 'MLP','KNN','CART']: - pred = self.model.predict(self.x_test) - return pred + if self.algorithm in ['AdaBoost','SVM','NaiveBayes', 'MLP','KNN','CART', 'RandomForest']: + self.pred = self.model.predict(self.x_test) + return self.pred elif self.algorithm == 'Kmeans': labels = self.model.labels_ # 获取聚类标签 @@ -166,3 +183,98 @@ def get_data(self,X,y,x_column,y_column): self.y_train = y[:,y_column] if self.y_train.shape[0]: self.dataset = np.concatenate((self.x_train,self.y_train),axis=1) # 按列进行拼接 + + def extract_hog_features(self, X): + image_descriptors = [] + for i in range(len(X)): # 此处的X为之前训练部分所有图像的矩阵形式拼接而来, + # print(i) # 所以len(X)实为X中矩阵的个数,即训练部分图像的个数 + fd, _ = hog(X[i], orientations=9, pixels_per_cell=(16, 16), cells_per_block=(16, 16), + block_norm='L2-Hys', visualize=True) # 此处的参数细节详见其他文章 + image_descriptors.append(fd) # 拼接得到所有图像的hog特征 + return image_descriptors # 返回的是训练部分所有图像的hog特征 + + + def extract_hog_features_single(self, X): + image_descriptors_single = [] + fd, _ = hog(X, orientations=9, pixels_per_cell=(16, 16), cells_per_block=(16, 16), + block_norm='L2-Hys', visualize=True) + image_descriptors_single.append(fd) + return image_descriptors_single + + + def read_data_and_pre(self, label2id, path): + X = [] + Y = [] + path =r'../dataset/JAFFE/training_set' + for label in os.listdir(path): + for img_file in os.listdir(os.path.join(path, label)): # 遍历 + image = cv2.imread(os.path.join(path, label, img_file)) # 读取图像 + result = image/255.0 # 图像归一化 + res = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 转灰度 + # cv2.waitKey(0) + cv2.destroyAllWindows() + X.append(res) # 将读取到的所有图像的矩阵形式拼接在一起 + Y.append(label2id[label]) # 将读取到的所有图像的标签拼接在一起 + self.X = self.extract_hog_features(X) + self.Y = Y + return self.extract_hog_features(X), Y # 返回的X,Y分别是图像的矩阵表达和图像的标签 + + + def plot(self): + acc = accuracy_score(self.y_test, self.pred) + precision = precision_score(self.y_test, self.pred, average='macro') + recall = recall_score(self.y_test, self.pred, average='macro') + cm = confusion_matrix(self.y_test, self.pred) + print(cm) + print('Acc: ', acc) + print('Precision: ', precision) + print('Recall: ', recall) + + xtick = ['angry', 'disgust', 'fear', 'happy', 'neutral', 'sad', 'surprise'] + ytick = xtick + + f, ax = plt.subplots(figsize=(7, 5)) + ax.tick_params(axis='y', labelsize=15) + ax.tick_params(axis='x', labelsize=15) + + seaborn.set(font_scale=1.2) + plt.rc('font',family='Times New Roman', size=15) + + seaborn.heatmap(cm,fmt='g', cmap='Blues', annot=True, cbar=True,xticklabels=xtick, yticklabels=ytick, ax=ax) + + plt.title('Confusion Matrix', fontsize='x-large') + + plt.show() + + + def test(self, path): + # 下面为同一文件夹下多张图片的表情识别 + # labelid2 = {0:'angry',1: 'disgust',2: 'fear',3:'happy',4:'neutral',5:'sad',6:'surprise'} + path=path + i = 1 + for dir in os.listdir((path)): + temp_path = os.path.join(path, dir) + for image_file in os.listdir(temp_path): + image = cv2.imread(os.path.join(temp_path,image_file)) + # result = image/255.0 + # cv2.waitKey(1000) + # cv2.destroyAllWindows() + result = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) + X_Single = self.extract_hog_features_single(result) + predict = self.model.predict(X_Single) # 可以在这里选择分类器的类别 + print(i) + i += 1 + if predict == 0: + print('angry') + elif predict == 1: + print('disgust') + elif predict == 2: + print('fear') + elif predict == 3: + print('happy') + elif predict == 4: + print('neutral') + elif predict == 5: + print('sad') + elif predict == 6: + print('surprise') diff --git a/BaseNN/__init__.py b/BaseNN/__init__.py new file mode 100644 index 0000000..6965f89 --- /dev/null +++ b/BaseNN/__init__.py @@ -0,0 +1 @@ +from .ops import * diff --git a/BaseNN/models/1.log b/BaseNN/models/1.log new file mode 100644 index 0000000..4406be1 --- /dev/null +++ b/BaseNN/models/1.log @@ -0,0 +1,274 @@ +MMDataParallel( + (module): Detector( + (backbone): ResNetWrapper( + (model): ResNet( + (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False) + (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False) + (layer1): Sequential( + (0): BasicBlock( + (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (1): BasicBlock( + (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (2): BasicBlock( + (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (layer2): Sequential( + (0): BasicBlock( + (conv1): Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (downsample): Sequential( + (0): Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2), bias=False) + (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (1): BasicBlock( + (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (2): BasicBlock( + (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (3): BasicBlock( + (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (layer3): Sequential( + (0): BasicBlock( + (conv1): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (downsample): Sequential( + (0): Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2), bias=False) + (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (1): BasicBlock( + (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (2): BasicBlock( + (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (3): BasicBlock( + (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (4): BasicBlock( + (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (5): BasicBlock( + (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (layer4): Sequential( + (0): BasicBlock( + (conv1): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (downsample): Sequential( + (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False) + (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (1): BasicBlock( + (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (2): BasicBlock( + (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False) + (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + ) + ) + (neck): SFPN( + (lateral_convs): ModuleList( + (0): ConvModule( + (conv): Conv2d(128, 64, kernel_size=(1, 1), stride=(1, 1)) + ) + (1): ConvModule( + (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1)) + ) + (2): ConvModule( + (conv): Conv2d(512, 64, kernel_size=(1, 1), stride=(1, 1)) + ) + ) + (fpn_convs): ModuleList( + (0): ConvModule( + (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + (1): ConvModule( + (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + (2): ConvModule( + (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (sfpn_conv1): SFMBlock1( + (upsample): UpsamplingBilinear2d(scale_factor=2.0, mode=bilinear) + (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) + (conv_block): ConvBlock( + (conv1): Conv2d(64, 64, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=64) + (conv2): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1)) + (conv3): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1)) + (norm): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (ac): GELU() + ) + ) + (sfpn_conv2): SFMBlock2( + (upsample): UpsamplingBilinear2d(scale_factor=2.0, mode=bilinear) + (dwsample): Conv2d(64, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)) + (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) + (conv_block): ConvBlock( + (conv1): Conv2d(64, 64, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=64) + (conv2): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1)) + (conv3): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1)) + (norm): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (ac): GELU() + ) + ) + (sfpn_conv3): SFMBlock3( + (dwsample): Conv2d(64, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)) + (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) + (conv_block): ConvBlock( + (conv1): Conv2d(64, 64, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=64) + (conv2): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1)) + (conv3): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1)) + (norm): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (ac): GELU() + ) + ) + ) + (heads): CLRHead( + (prior_embeddings): Embedding(192, 3) + (seg_decoder): SegDecoder( + (dropout): Dropout2d(p=0.1, inplace=False) + (conv): Conv2d(192, 7, kernel_size=(1, 1), stride=(1, 1)) + ) + (reg_modules): ModuleList( + (0): Linear(in_features=64, out_features=64, bias=True) + (1): ReLU(inplace=True) + (2): Linear(in_features=64, out_features=64, bias=True) + (3): ReLU(inplace=True) + ) + (cls_modules): ModuleList( + (0): Linear(in_features=64, out_features=64, bias=True) + (1): ReLU(inplace=True) + (2): Linear(in_features=64, out_features=64, bias=True) + (3): ReLU(inplace=True) + ) + (roi_gather): ROIGather( + (f_key): ConvModule( + (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False) + (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (activate): ReLU(inplace=True) + ) + (f_query): Sequential( + (0): Conv1d(192, 192, kernel_size=(1,), stride=(1,), groups=192) + (1): ReLU() + ) + (f_value): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) + (W): Conv1d(192, 192, kernel_size=(1,), stride=(1,), groups=192) + (resize): FeatureResize() + (convs): ModuleList( + (0): ConvModule( + (conv): Conv2d(64, 48, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0), bias=False) + (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (activate): ReLU(inplace=True) + ) + (1): ConvModule( + (conv): Conv2d(64, 48, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0), bias=False) + (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (activate): ReLU(inplace=True) + ) + (2): ConvModule( + (conv): Conv2d(64, 48, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0), bias=False) + (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (activate): ReLU(inplace=True) + ) + ) + (catconv): ModuleList( + (0): ConvModule( + (conv): Conv2d(48, 64, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0), bias=False) + (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (activate): ReLU(inplace=True) + ) + (1): ConvModule( + (conv): Conv2d(96, 64, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0), bias=False) + (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (activate): ReLU(inplace=True) + ) + (2): ConvModule( + (conv): Conv2d(144, 64, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0), bias=False) + (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (activate): ReLU(inplace=True) + ) + ) + (fc): Linear(in_features=2304, out_features=64, bias=True) + (fc_norm): LayerNorm((64,), eps=1e-05, elementwise_affine=True) + ) + (reg_layers): Linear(in_features=64, out_features=76, bias=True) + (cls_layers): Linear(in_features=64, out_features=2, bias=True) + (criterion): NLLLoss() + ) + ) +) \ No newline at end of file diff --git a/BaseNN/models/__init__.py b/BaseNN/models/__init__.py new file mode 100644 index 0000000..2193d57 --- /dev/null +++ b/BaseNN/models/__init__.py @@ -0,0 +1,46 @@ +from BaseNN.utils import Registry, build_from_cfg +import torch.nn as nn + +BACKBONES = Registry('backbones') +AGGREGATORS = Registry('aggregators') +HEADS = Registry('heads') +NECKS = Registry('necks') +NETS = Registry('nets') + + +def build(cfg, registry, default_args=None): + if isinstance(cfg, list): + modules = [ + build_from_cfg(cfg_, registry, default_args) for cfg_ in cfg + ] + return nn.Sequential(*modules) + else: + return build_from_cfg(cfg, registry, default_args) + + +def build_backbones(cfg): + return build(cfg.backbone, BACKBONES, default_args=dict(cfg=cfg)) + + +def build_necks(cfg): + return build(cfg.necks, NECKS, default_args=dict(cfg=cfg)) + + +def build_aggregator(cfg): + return build(cfg.aggregator, AGGREGATORS, default_args=dict(cfg=cfg)) + + +def build_heads(cfg): + return build(cfg.heads, HEADS, default_args=dict(cfg=cfg)) + + +def build_head(split_cfg, cfg): + return build(split_cfg, HEADS, default_args=dict(cfg=cfg)) + + +def build_net(cfg): + return build(cfg.net, NETS, default_args=dict(cfg=cfg)) + + +def build_necks(cfg): + return build(cfg.neck, NECKS, default_args=dict(cfg=cfg)) diff --git a/BaseNN/models/backbbone/eduNet.py b/BaseNN/models/backbbone/eduNet.py new file mode 100644 index 0000000..f262e8e --- /dev/null +++ b/BaseNN/models/backbbone/eduNet.py @@ -0,0 +1,43 @@ +import torch +from torch import nn +import torch.nn.functional as F +from cnblock import CNBlock +# from torch.hub import load_state_dict_from_url + +from models.registry import BACKBONES + +@BACKBONES.register_module +class eduNet(nn.Module): + def __init__(self, + resnet='resnet18', + pretrained=True, + replace_stride_with_dilation=[False, False, False], + out_conv=False, + fea_stride=8, + out_channel=128, + in_channels=[64, 128, 256, 512], + cfg=None): + super(eduNet, self).__init__() + self.cfg = cfg + self.in_channels = in_channels + self.cnblock = CNBlock(64, 512, 3, 1, 1) + + self.model = eval(resnet)( + pretrained=pretrained, + replace_stride_with_dilation=replace_stride_with_dilation, + in_channels=self.in_channels) + self.out = None + if out_conv: + out_channel = 512 + for chan in reversed(self.in_channels): + if chan < 0: continue + out_channel = chan + break + self.out = self.cnblock(out_channel * self.model.expansion, + cfg.featuremap_out_channel) + + def forward(self, x): + x = self.model(x) + if self.out: + x[-1] = self.out(x[-1]) + return x \ No newline at end of file diff --git a/BaseNN/models/cnblock.py b/BaseNN/models/cnblock.py new file mode 100644 index 0000000..a11ba6a --- /dev/null +++ b/BaseNN/models/cnblock.py @@ -0,0 +1,40 @@ +from turtle import forward +from pyparsing import Forward +import torch.nn as nn +import torch +from mmcv.cnn import ConvModule + +class CNBlock(nn.Module): + def __init__(self, + in_dim, + out_dim, + kernel_size=3, + stride=1, + padding=1, + norm_cfg=dict(type='SyncBN'), + ac_cfg=dict(type='ReLU'), + groups=0, + dilation=0) -> None: + super().__init__() + self.in_dim = in_dim + self.out_dim = out_dim + self.norm = norm_cfg + self.ac = ac_cfg + self.group = groups + self.dilation = dilation + self.kernel_size = kernel_size + self.stride = stride + self.padding = padding + + self.cnblock = ConvModule(self.in_dim, + self.out_dim, + kernel_size=self.kernel_size, + stride=self.stride, + padding=self.padding, + norm_cfg = self.norm, + ac_cfg = self.ac) + + def forward(self, input): + res = self.cnblock(input) + + return res diff --git a/BaseNN/models/registry.py b/BaseNN/models/registry.py new file mode 100644 index 0000000..65a2386 --- /dev/null +++ b/BaseNN/models/registry.py @@ -0,0 +1,46 @@ +from clrnet.utils import Registry, build_from_cfg +import torch.nn as nn + +BACKBONES = Registry('backbones') +AGGREGATORS = Registry('aggregators') +HEADS = Registry('heads') +NECKS = Registry('necks') +NETS = Registry('nets') + + +def build(cfg, registry, default_args=None): + if isinstance(cfg, list): + modules = [ + build_from_cfg(cfg_, registry, default_args) for cfg_ in cfg + ] + return nn.Sequential(*modules) + else: + return build_from_cfg(cfg, registry, default_args) + + +def build_backbones(cfg): + return build(cfg.backbone, BACKBONES, default_args=dict(cfg=cfg)) + + +def build_necks(cfg): + return build(cfg.necks, NECKS, default_args=dict(cfg=cfg)) + + +def build_aggregator(cfg): + return build(cfg.aggregator, AGGREGATORS, default_args=dict(cfg=cfg)) + + +def build_heads(cfg): + return build(cfg.heads, HEADS, default_args=dict(cfg=cfg)) + + +def build_head(split_cfg, cfg): + return build(split_cfg, HEADS, default_args=dict(cfg=cfg)) + + +def build_net(cfg): + return build(cfg.net, NETS, default_args=dict(cfg=cfg)) + + +def build_necks(cfg): + return build(cfg.neck, NECKS, default_args=dict(cfg=cfg)) diff --git a/BaseNN/utils/__init__.py b/BaseNN/utils/__init__.py new file mode 100644 index 0000000..eb99ab0 --- /dev/null +++ b/BaseNN/utils/__init__.py @@ -0,0 +1,2 @@ +from .config import Config +from .registry import Registry, build_from_cfg diff --git a/BaseNN/utils/config.py b/BaseNN/utils/config.py new file mode 100644 index 0000000..1ef3747 --- /dev/null +++ b/BaseNN/utils/config.py @@ -0,0 +1,418 @@ +# Copyright (c) Open-MMLab. All rights reserved. +import ast +import os.path as osp +import shutil +import sys +import tempfile +from argparse import Action, ArgumentParser +from collections import abc +from importlib import import_module + +from addict import Dict +from yapf.yapflib.yapf_api import FormatCode + +BASE_KEY = '_base_' +DELETE_KEY = '_delete_' +RESERVED_KEYS = ['filename', 'text', 'pretty_text'] + + +def check_file_exist(filename, msg_tmpl='file "{}" does not exist'): + if not osp.isfile(filename): + raise FileNotFoundError(msg_tmpl.format(filename)) + + +class ConfigDict(Dict): + def __missing__(self, name): + raise KeyError(name) + + def __getattr__(self, name): + try: + value = super(ConfigDict, self).__getattr__(name) + except KeyError: + ex = AttributeError(f"'{self.__class__.__name__}' object has no " + f"attribute '{name}'") + except Exception as e: + ex = e + else: + return value + raise ex + + +def add_args(parser, cfg, prefix=''): + for k, v in cfg.items(): + if isinstance(v, str): + parser.add_argument('--' + prefix + k) + elif isinstance(v, int): + parser.add_argument('--' + prefix + k, type=int) + elif isinstance(v, float): + parser.add_argument('--' + prefix + k, type=float) + elif isinstance(v, bool): + parser.add_argument('--' + prefix + k, action='store_true') + elif isinstance(v, dict): + add_args(parser, v, prefix + k + '.') + elif isinstance(v, abc.Iterable): + parser.add_argument('--' + prefix + k, type=type(v[0]), nargs='+') + else: + print(f'cannot parse key {prefix + k} of type {type(v)}') + return parser + + +class Config: + """A facility for config and config files. + It supports common file formats as configs: python/json/yaml. The interface + is the same as a dict object and also allows access config values as + attributes. + Example: + >>> cfg = Config(dict(a=1, b=dict(b1=[0, 1]))) + >>> cfg.a + 1 + >>> cfg.b + {'b1': [0, 1]} + >>> cfg.b.b1 + [0, 1] + >>> cfg = Config.fromfile('tests/data/config/a.py') + >>> cfg.filename + "/home/kchen/projects/mmcv/tests/data/config/a.py" + >>> cfg.item4 + 'test' + >>> cfg + "Config [path: /home/kchen/projects/mmcv/tests/data/config/a.py]: " + "{'item1': [1, 2], 'item2': {'a': 0}, 'item3': True, 'item4': 'test'}" + """ + @staticmethod + def _validate_py_syntax(filename): + with open(filename) as f: + content = f.read() + try: + ast.parse(content) + except SyntaxError: + raise SyntaxError('There are syntax errors in config ' + f'file {filename}') + + @staticmethod + def _file2dict(filename): + filename = osp.abspath(osp.expanduser(filename)) + check_file_exist(filename) + if filename.endswith('.py'): + with tempfile.TemporaryDirectory() as temp_config_dir: + temp_config_file = tempfile.NamedTemporaryFile( + dir=temp_config_dir, suffix='.py') + temp_config_name = osp.basename(temp_config_file.name) + shutil.copyfile(filename, + osp.join(temp_config_dir, temp_config_name)) + temp_module_name = osp.splitext(temp_config_name)[0] + sys.path.insert(0, temp_config_dir) + Config._validate_py_syntax(filename) + mod = import_module(temp_module_name) + sys.path.pop(0) + cfg_dict = { + name: value + for name, value in mod.__dict__.items() + if not name.startswith('__') + } + # delete imported module + del sys.modules[temp_module_name] + # close temp file + temp_config_file.close() + elif filename.endswith(('.yml', '.yaml', '.json')): + import mmcv + cfg_dict = mmcv.load(filename) + else: + raise IOError('Only py/yml/yaml/json type are supported now!') + + cfg_text = '' + with open(filename, 'r') as f: + cfg_text += f.read() + + if BASE_KEY in cfg_dict: + cfg_dir = osp.dirname(filename) + base_filename = cfg_dict.pop(BASE_KEY) + base_filename = base_filename if isinstance( + base_filename, list) else [base_filename] + + cfg_dict_list = list() + cfg_text_list = list() + for f in base_filename: + _cfg_dict, _cfg_text = Config._file2dict(osp.join(cfg_dir, f)) + cfg_dict_list.append(_cfg_dict) + cfg_text_list.append(_cfg_text) + + base_cfg_dict = dict() + for c in cfg_dict_list: + if len(base_cfg_dict.keys() & c.keys()) > 0: + raise KeyError('Duplicate key is not allowed among bases') + base_cfg_dict.update(c) + + base_cfg_dict = Config._merge_a_into_b(cfg_dict, base_cfg_dict) + cfg_dict = base_cfg_dict + + # merge cfg_text + cfg_text_list.append(cfg_text) + cfg_text = '\n'.join(cfg_text_list) + + return cfg_dict, cfg_text + + @staticmethod + def _merge_a_into_b(a, b): + # merge dict `a` into dict `b` (non-inplace). values in `a` will + # overwrite `b`. + # copy first to avoid inplace modification + b = b.copy() + for k, v in a.items(): + if isinstance(v, dict) and k in b and not v.pop(DELETE_KEY, False): + if not isinstance(b[k], dict): + raise TypeError( + f'{k}={v} in child config cannot inherit from base ' + f'because {k} is a dict in the child config but is of ' + f'type {type(b[k])} in base config. You may set ' + f'`{DELETE_KEY}=True` to ignore the base config') + b[k] = Config._merge_a_into_b(v, b[k]) + else: + b[k] = v + return b + + @staticmethod + def fromfile(filename): + cfg_dict, cfg_text = Config._file2dict(filename) + return Config(cfg_dict, cfg_text=cfg_text, filename=filename) + + @staticmethod + def auto_argparser(description=None): + """Generate argparser from config file automatically (experimental) + """ + partial_parser = ArgumentParser(description=description) + partial_parser.add_argument('config', help='config file path') + cfg_file = partial_parser.parse_known_args()[0].config + cfg = Config.fromfile(cfg_file) + parser = ArgumentParser(description=description) + parser.add_argument('config', help='config file path') + add_args(parser, cfg) + return parser, cfg + + def __init__(self, cfg_dict=None, cfg_text=None, filename=None): + if cfg_dict is None: + cfg_dict = dict() + elif not isinstance(cfg_dict, dict): + raise TypeError('cfg_dict must be a dict, but ' + f'got {type(cfg_dict)}') + for key in cfg_dict: + if key in RESERVED_KEYS: + raise KeyError(f'{key} is reserved for config file') + + super(Config, self).__setattr__('_cfg_dict', ConfigDict(cfg_dict)) + super(Config, self).__setattr__('_filename', filename) + if cfg_text: + text = cfg_text + elif filename: + with open(filename, 'r') as f: + text = f.read() + else: + text = '' + super(Config, self).__setattr__('_text', text) + + @property + def filename(self): + return self._filename + + @property + def text(self): + return self._text + + @property + def pretty_text(self): + + indent = 4 + + def _indent(s_, num_spaces): + s = s_.split('\n') + if len(s) == 1: + return s_ + first = s.pop(0) + s = [(num_spaces * ' ') + line for line in s] + s = '\n'.join(s) + s = first + '\n' + s + return s + + def _format_basic_types(k, v, use_mapping=False): + if isinstance(v, str): + v_str = f"'{v}'" + else: + v_str = str(v) + + if use_mapping: + k_str = f"'{k}'" if isinstance(k, str) else str(k) + attr_str = f'{k_str}: {v_str}' + else: + attr_str = f'{str(k)}={v_str}' + attr_str = _indent(attr_str, indent) + + return attr_str + + def _format_list(k, v, use_mapping=False): + # check if all items in the list are dict + if all(isinstance(_, dict) for _ in v): + v_str = '[\n' + v_str += '\n'.join( + f'dict({_indent(_format_dict(v_), indent)}),' + for v_ in v).rstrip(',') + if use_mapping: + k_str = f"'{k}'" if isinstance(k, str) else str(k) + attr_str = f'{k_str}: {v_str}' + else: + attr_str = f'{str(k)}={v_str}' + attr_str = _indent(attr_str, indent) + ']' + else: + attr_str = _format_basic_types(k, v, use_mapping) + return attr_str + + def _contain_invalid_identifier(dict_str): + contain_invalid_identifier = False + for key_name in dict_str: + contain_invalid_identifier |= \ + (not str(key_name).isidentifier()) + return contain_invalid_identifier + + def _format_dict(input_dict, outest_level=False): + r = '' + s = [] + + use_mapping = _contain_invalid_identifier(input_dict) + if use_mapping: + r += '{' + for idx, (k, v) in enumerate(input_dict.items()): + is_last = idx >= len(input_dict) - 1 + end = '' if outest_level or is_last else ',' + if isinstance(v, dict): + v_str = '\n' + _format_dict(v) + if use_mapping: + k_str = f"'{k}'" if isinstance(k, str) else str(k) + attr_str = f'{k_str}: dict({v_str}' + else: + attr_str = f'{str(k)}=dict({v_str}' + attr_str = _indent(attr_str, indent) + ')' + end + elif isinstance(v, list): + attr_str = _format_list(k, v, use_mapping) + end + else: + attr_str = _format_basic_types(k, v, use_mapping) + end + + s.append(attr_str) + r += '\n'.join(s) + if use_mapping: + r += '}' + return r + + cfg_dict = self._cfg_dict.to_dict() + text = _format_dict(cfg_dict, outest_level=True) + # copied from setup.cfg + yapf_style = dict(based_on_style='pep8', + blank_line_before_nested_class_or_def=True, + split_before_expression_after_opening_paren=True) + text, _ = FormatCode(text, style_config=yapf_style, verify=True) + + return text + + def __repr__(self): + return f'Config (path: {self.filename}): {self._cfg_dict.__repr__()}' + + def __len__(self): + return len(self._cfg_dict) + + def __getattr__(self, name): + return getattr(self._cfg_dict, name) + + def __getitem__(self, name): + return self._cfg_dict.__getitem__(name) + + def __setattr__(self, name, value): + if isinstance(value, dict): + value = ConfigDict(value) + self._cfg_dict.__setattr__(name, value) + + def __setitem__(self, name, value): + if isinstance(value, dict): + value = ConfigDict(value) + self._cfg_dict.__setitem__(name, value) + + def __iter__(self): + return iter(self._cfg_dict) + + def haskey(self, name): + return hasattr(self._cfg_dict, name) + + def dump(self, file=None): + cfg_dict = super(Config, self).__getattribute__('_cfg_dict').to_dict() + if self.filename.endswith('.py'): + if file is None: + return self.pretty_text + else: + with open(file, 'w') as f: + f.write(self.pretty_text) + else: + import mmcv + if file is None: + file_format = self.filename.split('.')[-1] + return mmcv.dump(cfg_dict, file_format=file_format) + else: + mmcv.dump(cfg_dict, file) + + def has_attr_in_cfg(self, name): + return hasattr(self._cfg_dict, name) + + def merge_from_dict(self, options): + """Merge list into cfg_dict + Merge the dict parsed by MultipleKVAction into this cfg. + Examples: + >>> options = {'model.backbone.depth': 50, + ... 'model.backbone.with_cp':True} + >>> cfg = Config(dict(model=dict(backbone=dict(type='ResNet')))) + >>> cfg.merge_from_dict(options) + >>> cfg_dict = super(Config, self).__getattribute__('_cfg_dict') + >>> assert cfg_dict == dict( + ... model=dict(backbone=dict(depth=50, with_cp=True))) + Args: + options (dict): dict of configs to merge from. + """ + option_cfg_dict = {} + for full_key, v in options.items(): + d = option_cfg_dict + key_list = full_key.split('.') + for subkey in key_list[:-1]: + d.setdefault(subkey, ConfigDict()) + d = d[subkey] + subkey = key_list[-1] + d[subkey] = v + + cfg_dict = super(Config, self).__getattribute__('_cfg_dict') + super(Config, self).__setattr__( + '_cfg_dict', Config._merge_a_into_b(option_cfg_dict, cfg_dict)) + + +class DictAction(Action): + """ + argparse action to split an argument into KEY=VALUE form + on the first = and append to a dictionary. List options should + be passed as comma separated values, i.e KEY=V1,V2,V3 + """ + @staticmethod + def _parse_int_float_bool(val): + try: + return int(val) + except ValueError: + pass + try: + return float(val) + except ValueError: + pass + if val.lower() in ['true', 'false']: + return True if val.lower() == 'true' else False + return val + + def __call__(self, parser, namespace, values, option_string=None): + options = {} + for kv in values: + key, val = kv.split('=', maxsplit=1) + val = [self._parse_int_float_bool(v) for v in val.split(',')] + if len(val) == 1: + val = val[0] + options[key] = val + setattr(namespace, self.dest, options) diff --git a/BaseNN/utils/registry.py b/BaseNN/utils/registry.py new file mode 100644 index 0000000..54ba615 --- /dev/null +++ b/BaseNN/utils/registry.py @@ -0,0 +1,82 @@ +import inspect + +import six + +# borrow from mmdetection + + +def is_str(x): + """Whether the input is an string instance.""" + return isinstance(x, six.string_types) + + +class Registry(object): + def __init__(self, name): + self._name = name + self._module_dict = dict() + + def __repr__(self): + format_str = self.__class__.__name__ + '(name={}, items={})'.format( + self._name, list(self._module_dict.keys())) + return format_str + + @property + def name(self): + return self._name + + @property + def module_dict(self): + return self._module_dict + + def get(self, key): + return self._module_dict.get(key, None) + + def _register_module(self, module_class): + """Register a module. + + Args: + module (:obj:`nn.Module`): Module to be registered. + """ + if not inspect.isclass(module_class): + raise TypeError('module must be a class, but got {}'.format( + type(module_class))) + module_name = module_class.__name__ + if module_name in self._module_dict: + raise KeyError('{} is already registered in {}'.format( + module_name, self.name)) + self._module_dict[module_name] = module_class + + def register_module(self, cls): + self._register_module(cls) + return cls + + +def build_from_cfg(cfg, registry, default_args=None): + """Build a module from config dict. + + Args: + cfg (dict): Config dict. It should at least contain the key "type". + registry (:obj:`Registry`): The registry to search the type from. + default_args (dict, optional): Default initialization arguments. + + Returns: + obj: The constructed object. + """ + assert isinstance(cfg, dict) and 'type' in cfg + assert isinstance(default_args, dict) or default_args is None + args = cfg.copy() + obj_type = args.pop('type') + if is_str(obj_type): + obj_cls = registry.get(obj_type) + if obj_cls is None: + raise KeyError('{} is not in the {} registry'.format( + obj_type, registry.name)) + elif inspect.isclass(obj_type): + obj_cls = obj_type + else: + raise TypeError('type must be a str or valid type, but got {}'.format( + type(obj_type))) + if default_args is not None: + for name, value in default_args.items(): + args.setdefault(name, value) + return obj_cls(**args) diff --git a/dataset/JAFFE/testing_set/angry/UY.AN1.146.tiff b/dataset/JAFFE/testing_set/angry/UY.AN1.146.tiff new file mode 100644 index 0000000..b3a70bc Binary files /dev/null and b/dataset/JAFFE/testing_set/angry/UY.AN1.146.tiff differ diff --git a/dataset/JAFFE/testing_set/angry/UY.AN2.147.tiff b/dataset/JAFFE/testing_set/angry/UY.AN2.147.tiff new file mode 100644 index 0000000..e957dae Binary files /dev/null and b/dataset/JAFFE/testing_set/angry/UY.AN2.147.tiff differ diff --git a/dataset/JAFFE/testing_set/angry/UY.AN3.148.tiff b/dataset/JAFFE/testing_set/angry/UY.AN3.148.tiff new file mode 100644 index 0000000..add6998 Binary files /dev/null and b/dataset/JAFFE/testing_set/angry/UY.AN3.148.tiff differ diff --git a/dataset/JAFFE/testing_set/angry/YM.AN1.61.tiff b/dataset/JAFFE/testing_set/angry/YM.AN1.61.tiff new file mode 100644 index 0000000..7429301 Binary files /dev/null and b/dataset/JAFFE/testing_set/angry/YM.AN1.61.tiff differ diff --git a/dataset/JAFFE/testing_set/angry/YM.AN2.62.tiff b/dataset/JAFFE/testing_set/angry/YM.AN2.62.tiff new file mode 100644 index 0000000..abb1c7e Binary files /dev/null and b/dataset/JAFFE/testing_set/angry/YM.AN2.62.tiff differ diff --git a/dataset/JAFFE/testing_set/angry/YM.AN3.63.tiff b/dataset/JAFFE/testing_set/angry/YM.AN3.63.tiff new file mode 100644 index 0000000..359047c Binary files /dev/null and b/dataset/JAFFE/testing_set/angry/YM.AN3.63.tiff differ diff --git a/dataset/JAFFE/testing_set/disgust/UY.DI1.149.tiff b/dataset/JAFFE/testing_set/disgust/UY.DI1.149.tiff new file mode 100644 index 0000000..629aadd Binary files /dev/null and b/dataset/JAFFE/testing_set/disgust/UY.DI1.149.tiff differ diff --git a/dataset/JAFFE/testing_set/disgust/UY.DI2.150.tiff b/dataset/JAFFE/testing_set/disgust/UY.DI2.150.tiff new file mode 100644 index 0000000..117a508 Binary files /dev/null and b/dataset/JAFFE/testing_set/disgust/UY.DI2.150.tiff differ diff --git a/dataset/JAFFE/testing_set/disgust/UY.DI3.151.tiff b/dataset/JAFFE/testing_set/disgust/UY.DI3.151.tiff new file mode 100644 index 0000000..eb0766d Binary files /dev/null and b/dataset/JAFFE/testing_set/disgust/UY.DI3.151.tiff differ diff --git a/dataset/JAFFE/testing_set/disgust/YM.DI1.64.tiff b/dataset/JAFFE/testing_set/disgust/YM.DI1.64.tiff new file mode 100644 index 0000000..e950b2d Binary files /dev/null and b/dataset/JAFFE/testing_set/disgust/YM.DI1.64.tiff differ diff --git a/dataset/JAFFE/testing_set/disgust/YM.DI2.65.tiff b/dataset/JAFFE/testing_set/disgust/YM.DI2.65.tiff new file mode 100644 index 0000000..642794d Binary files /dev/null and b/dataset/JAFFE/testing_set/disgust/YM.DI2.65.tiff differ diff --git a/dataset/JAFFE/testing_set/disgust/YM.DI3.66.tiff b/dataset/JAFFE/testing_set/disgust/YM.DI3.66.tiff new file mode 100644 index 0000000..a7ed146 Binary files /dev/null and b/dataset/JAFFE/testing_set/disgust/YM.DI3.66.tiff differ diff --git a/dataset/JAFFE/testing_set/disgust/YM.FE1.67.tiff b/dataset/JAFFE/testing_set/disgust/YM.FE1.67.tiff new file mode 100644 index 0000000..9418dcd Binary files /dev/null and b/dataset/JAFFE/testing_set/disgust/YM.FE1.67.tiff differ diff --git a/dataset/JAFFE/testing_set/fear/UY.FE1.152.tiff b/dataset/JAFFE/testing_set/fear/UY.FE1.152.tiff new file mode 100644 index 0000000..9a8cd85 Binary files /dev/null and b/dataset/JAFFE/testing_set/fear/UY.FE1.152.tiff differ diff --git a/dataset/JAFFE/testing_set/fear/UY.FE2.153.tiff b/dataset/JAFFE/testing_set/fear/UY.FE2.153.tiff new file mode 100644 index 0000000..b0cf28e Binary files /dev/null and b/dataset/JAFFE/testing_set/fear/UY.FE2.153.tiff differ diff --git a/dataset/JAFFE/testing_set/fear/UY.FE3.154.tiff b/dataset/JAFFE/testing_set/fear/UY.FE3.154.tiff new file mode 100644 index 0000000..642491b Binary files /dev/null and b/dataset/JAFFE/testing_set/fear/UY.FE3.154.tiff differ diff --git a/dataset/JAFFE/testing_set/fear/YM.FE2.68.tiff b/dataset/JAFFE/testing_set/fear/YM.FE2.68.tiff new file mode 100644 index 0000000..ca8971a Binary files /dev/null and b/dataset/JAFFE/testing_set/fear/YM.FE2.68.tiff differ diff --git a/dataset/JAFFE/testing_set/fear/YM.FE3.69.tiff b/dataset/JAFFE/testing_set/fear/YM.FE3.69.tiff new file mode 100644 index 0000000..daf936f Binary files /dev/null and b/dataset/JAFFE/testing_set/fear/YM.FE3.69.tiff differ diff --git a/dataset/JAFFE/testing_set/fear/YM.FE4.70.tiff b/dataset/JAFFE/testing_set/fear/YM.FE4.70.tiff new file mode 100644 index 0000000..a5f72bb Binary files /dev/null and b/dataset/JAFFE/testing_set/fear/YM.FE4.70.tiff differ diff --git a/dataset/JAFFE/testing_set/happy/UY.HA1.137.tiff b/dataset/JAFFE/testing_set/happy/UY.HA1.137.tiff new file mode 100644 index 0000000..5c68857 Binary files /dev/null and b/dataset/JAFFE/testing_set/happy/UY.HA1.137.tiff differ diff --git a/dataset/JAFFE/testing_set/happy/UY.HA2.138.tiff b/dataset/JAFFE/testing_set/happy/UY.HA2.138.tiff new file mode 100644 index 0000000..a8009c8 Binary files /dev/null and b/dataset/JAFFE/testing_set/happy/UY.HA2.138.tiff differ diff --git a/dataset/JAFFE/testing_set/happy/UY.HA3.139.tiff b/dataset/JAFFE/testing_set/happy/UY.HA3.139.tiff new file mode 100644 index 0000000..2cec283 Binary files /dev/null and b/dataset/JAFFE/testing_set/happy/UY.HA3.139.tiff differ diff --git a/dataset/JAFFE/testing_set/happy/YM.HA1.52.tiff b/dataset/JAFFE/testing_set/happy/YM.HA1.52.tiff new file mode 100644 index 0000000..98cefc4 Binary files /dev/null and b/dataset/JAFFE/testing_set/happy/YM.HA1.52.tiff differ diff --git a/dataset/JAFFE/testing_set/happy/YM.HA2.53.tiff b/dataset/JAFFE/testing_set/happy/YM.HA2.53.tiff new file mode 100644 index 0000000..eddc430 Binary files /dev/null and b/dataset/JAFFE/testing_set/happy/YM.HA2.53.tiff differ diff --git a/dataset/JAFFE/testing_set/happy/YM.HA3.54.tiff b/dataset/JAFFE/testing_set/happy/YM.HA3.54.tiff new file mode 100644 index 0000000..6155133 Binary files /dev/null and b/dataset/JAFFE/testing_set/happy/YM.HA3.54.tiff differ diff --git a/dataset/JAFFE/testing_set/neutral/UY.NE1.134.tiff b/dataset/JAFFE/testing_set/neutral/UY.NE1.134.tiff new file mode 100644 index 0000000..71a9a8d Binary files /dev/null and b/dataset/JAFFE/testing_set/neutral/UY.NE1.134.tiff differ diff --git a/dataset/JAFFE/testing_set/neutral/UY.NE2.135.tiff b/dataset/JAFFE/testing_set/neutral/UY.NE2.135.tiff new file mode 100644 index 0000000..bc0c509 Binary files /dev/null and b/dataset/JAFFE/testing_set/neutral/UY.NE2.135.tiff differ diff --git a/dataset/JAFFE/testing_set/neutral/UY.NE3.136.tiff b/dataset/JAFFE/testing_set/neutral/UY.NE3.136.tiff new file mode 100644 index 0000000..fb20fcf Binary files /dev/null and b/dataset/JAFFE/testing_set/neutral/UY.NE3.136.tiff differ diff --git a/dataset/JAFFE/testing_set/neutral/YM.NE1.49.tiff b/dataset/JAFFE/testing_set/neutral/YM.NE1.49.tiff new file mode 100644 index 0000000..96cf3de Binary files /dev/null and b/dataset/JAFFE/testing_set/neutral/YM.NE1.49.tiff differ diff --git a/dataset/JAFFE/testing_set/neutral/YM.NE2.50.tiff b/dataset/JAFFE/testing_set/neutral/YM.NE2.50.tiff new file mode 100644 index 0000000..1ca03ff Binary files /dev/null and b/dataset/JAFFE/testing_set/neutral/YM.NE2.50.tiff differ diff --git a/dataset/JAFFE/testing_set/neutral/YM.NE3.51.tiff b/dataset/JAFFE/testing_set/neutral/YM.NE3.51.tiff new file mode 100644 index 0000000..658a1be Binary files /dev/null and b/dataset/JAFFE/testing_set/neutral/YM.NE3.51.tiff differ diff --git a/dataset/JAFFE/testing_set/sad/UY.SA1.140.tiff b/dataset/JAFFE/testing_set/sad/UY.SA1.140.tiff new file mode 100644 index 0000000..1fc6f92 Binary files /dev/null and b/dataset/JAFFE/testing_set/sad/UY.SA1.140.tiff differ diff --git a/dataset/JAFFE/testing_set/sad/UY.SA2.141.tiff b/dataset/JAFFE/testing_set/sad/UY.SA2.141.tiff new file mode 100644 index 0000000..deddc30 Binary files /dev/null and b/dataset/JAFFE/testing_set/sad/UY.SA2.141.tiff differ diff --git a/dataset/JAFFE/testing_set/sad/UY.SA3.142.tiff b/dataset/JAFFE/testing_set/sad/UY.SA3.142.tiff new file mode 100644 index 0000000..e4a960c Binary files /dev/null and b/dataset/JAFFE/testing_set/sad/UY.SA3.142.tiff differ diff --git a/dataset/JAFFE/testing_set/sad/YM.SA1.55.tiff b/dataset/JAFFE/testing_set/sad/YM.SA1.55.tiff new file mode 100644 index 0000000..5626f70 Binary files /dev/null and b/dataset/JAFFE/testing_set/sad/YM.SA1.55.tiff differ diff --git a/dataset/JAFFE/testing_set/sad/YM.SA2.56.tiff b/dataset/JAFFE/testing_set/sad/YM.SA2.56.tiff new file mode 100644 index 0000000..b6e456c Binary files /dev/null and b/dataset/JAFFE/testing_set/sad/YM.SA2.56.tiff differ diff --git a/dataset/JAFFE/testing_set/sad/YM.SA3.57.tiff b/dataset/JAFFE/testing_set/sad/YM.SA3.57.tiff new file mode 100644 index 0000000..45e5d02 Binary files /dev/null and b/dataset/JAFFE/testing_set/sad/YM.SA3.57.tiff differ diff --git a/dataset/JAFFE/testing_set/surprise/UY.SU1.143.tiff b/dataset/JAFFE/testing_set/surprise/UY.SU1.143.tiff new file mode 100644 index 0000000..df5b5d9 Binary files /dev/null and b/dataset/JAFFE/testing_set/surprise/UY.SU1.143.tiff differ diff --git a/dataset/JAFFE/testing_set/surprise/UY.SU2.144.tiff b/dataset/JAFFE/testing_set/surprise/UY.SU2.144.tiff new file mode 100644 index 0000000..c9e257e Binary files /dev/null and b/dataset/JAFFE/testing_set/surprise/UY.SU2.144.tiff differ diff --git a/dataset/JAFFE/testing_set/surprise/UY.SU3.145.tiff b/dataset/JAFFE/testing_set/surprise/UY.SU3.145.tiff new file mode 100644 index 0000000..badb1d4 Binary files /dev/null and b/dataset/JAFFE/testing_set/surprise/UY.SU3.145.tiff differ diff --git a/dataset/JAFFE/testing_set/surprise/YM.SU1.58.tiff b/dataset/JAFFE/testing_set/surprise/YM.SU1.58.tiff new file mode 100644 index 0000000..e135723 Binary files /dev/null and b/dataset/JAFFE/testing_set/surprise/YM.SU1.58.tiff differ diff --git a/dataset/JAFFE/testing_set/surprise/YM.SU2.59.tiff b/dataset/JAFFE/testing_set/surprise/YM.SU2.59.tiff new file mode 100644 index 0000000..3621405 Binary files /dev/null and b/dataset/JAFFE/testing_set/surprise/YM.SU2.59.tiff differ diff --git a/dataset/JAFFE/testing_set/surprise/YM.SU3.60.tiff b/dataset/JAFFE/testing_set/surprise/YM.SU3.60.tiff new file mode 100644 index 0000000..e78af80 Binary files /dev/null and b/dataset/JAFFE/testing_set/surprise/YM.SU3.60.tiff differ diff --git a/dataset/JAFFE/training_set/angry/KA.AN1.39.tiff b/dataset/JAFFE/training_set/angry/KA.AN1.39.tiff new file mode 100644 index 0000000..9737ac6 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/KA.AN1.39.tiff differ diff --git a/dataset/JAFFE/training_set/angry/KA.AN2.40.tiff b/dataset/JAFFE/training_set/angry/KA.AN2.40.tiff new file mode 100644 index 0000000..f3427a5 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/KA.AN2.40.tiff differ diff --git a/dataset/JAFFE/training_set/angry/KA.AN3.41.tiff b/dataset/JAFFE/training_set/angry/KA.AN3.41.tiff new file mode 100644 index 0000000..14ab669 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/KA.AN3.41.tiff differ diff --git a/dataset/JAFFE/training_set/angry/KL.AN1.167.tiff b/dataset/JAFFE/training_set/angry/KL.AN1.167.tiff new file mode 100644 index 0000000..cf3a42b Binary files /dev/null and b/dataset/JAFFE/training_set/angry/KL.AN1.167.tiff differ diff --git a/dataset/JAFFE/training_set/angry/KL.AN2.168.tiff b/dataset/JAFFE/training_set/angry/KL.AN2.168.tiff new file mode 100644 index 0000000..e6738c0 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/KL.AN2.168.tiff differ diff --git a/dataset/JAFFE/training_set/angry/KL.AN3.169.tiff b/dataset/JAFFE/training_set/angry/KL.AN3.169.tiff new file mode 100644 index 0000000..6285e4e Binary files /dev/null and b/dataset/JAFFE/training_set/angry/KL.AN3.169.tiff differ diff --git a/dataset/JAFFE/training_set/angry/KM.AN1.17.tiff b/dataset/JAFFE/training_set/angry/KM.AN1.17.tiff new file mode 100644 index 0000000..b656349 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/KM.AN1.17.tiff differ diff --git a/dataset/JAFFE/training_set/angry/KM.AN2.18.tiff b/dataset/JAFFE/training_set/angry/KM.AN2.18.tiff new file mode 100644 index 0000000..fe4edd3 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/KM.AN2.18.tiff differ diff --git a/dataset/JAFFE/training_set/angry/KM.AN3.19.tiff b/dataset/JAFFE/training_set/angry/KM.AN3.19.tiff new file mode 100644 index 0000000..c30e72d Binary files /dev/null and b/dataset/JAFFE/training_set/angry/KM.AN3.19.tiff differ diff --git a/dataset/JAFFE/training_set/angry/KR.AN1.83.tiff b/dataset/JAFFE/training_set/angry/KR.AN1.83.tiff new file mode 100644 index 0000000..f315c65 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/KR.AN1.83.tiff differ diff --git a/dataset/JAFFE/training_set/angry/KR.AN2.84.tiff b/dataset/JAFFE/training_set/angry/KR.AN2.84.tiff new file mode 100644 index 0000000..fd44250 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/KR.AN2.84.tiff differ diff --git a/dataset/JAFFE/training_set/angry/KR.AN3.85.tiff b/dataset/JAFFE/training_set/angry/KR.AN3.85.tiff new file mode 100644 index 0000000..a04e8a0 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/KR.AN3.85.tiff differ diff --git a/dataset/JAFFE/training_set/angry/MK.AN1.125.tiff b/dataset/JAFFE/training_set/angry/MK.AN1.125.tiff new file mode 100644 index 0000000..847d90a Binary files /dev/null and b/dataset/JAFFE/training_set/angry/MK.AN1.125.tiff differ diff --git a/dataset/JAFFE/training_set/angry/MK.AN2.126.tiff b/dataset/JAFFE/training_set/angry/MK.AN2.126.tiff new file mode 100644 index 0000000..72b21af Binary files /dev/null and b/dataset/JAFFE/training_set/angry/MK.AN2.126.tiff differ diff --git a/dataset/JAFFE/training_set/angry/MK.AN3.127.tiff b/dataset/JAFFE/training_set/angry/MK.AN3.127.tiff new file mode 100644 index 0000000..d083f22 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/MK.AN3.127.tiff differ diff --git a/dataset/JAFFE/training_set/angry/NA.AN1.211.tiff b/dataset/JAFFE/training_set/angry/NA.AN1.211.tiff new file mode 100644 index 0000000..ab3fe17 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/NA.AN1.211.tiff differ diff --git a/dataset/JAFFE/training_set/angry/NA.AN2.212.tiff b/dataset/JAFFE/training_set/angry/NA.AN2.212.tiff new file mode 100644 index 0000000..a837da0 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/NA.AN2.212.tiff differ diff --git a/dataset/JAFFE/training_set/angry/NA.AN3.213.tiff b/dataset/JAFFE/training_set/angry/NA.AN3.213.tiff new file mode 100644 index 0000000..ad87ec9 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/NA.AN3.213.tiff differ diff --git a/dataset/JAFFE/training_set/angry/NM.AN1.104.tiff b/dataset/JAFFE/training_set/angry/NM.AN1.104.tiff new file mode 100644 index 0000000..290c102 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/NM.AN1.104.tiff differ diff --git a/dataset/JAFFE/training_set/angry/NM.AN2.105.tiff b/dataset/JAFFE/training_set/angry/NM.AN2.105.tiff new file mode 100644 index 0000000..11ca05f Binary files /dev/null and b/dataset/JAFFE/training_set/angry/NM.AN2.105.tiff differ diff --git a/dataset/JAFFE/training_set/angry/NM.AN3.106.tiff b/dataset/JAFFE/training_set/angry/NM.AN3.106.tiff new file mode 100644 index 0000000..c9a5af8 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/NM.AN3.106.tiff differ diff --git a/dataset/JAFFE/training_set/angry/TM.AN1.190.tiff b/dataset/JAFFE/training_set/angry/TM.AN1.190.tiff new file mode 100644 index 0000000..cc4b2f0 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/TM.AN1.190.tiff differ diff --git a/dataset/JAFFE/training_set/angry/TM.AN2.191.tiff b/dataset/JAFFE/training_set/angry/TM.AN2.191.tiff new file mode 100644 index 0000000..5aa2a21 Binary files /dev/null and b/dataset/JAFFE/training_set/angry/TM.AN2.191.tiff differ diff --git a/dataset/JAFFE/training_set/angry/TM.AN3.192.tiff b/dataset/JAFFE/training_set/angry/TM.AN3.192.tiff new file mode 100644 index 0000000..6c778df Binary files /dev/null and b/dataset/JAFFE/training_set/angry/TM.AN3.192.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/KA.DI1.42.tiff b/dataset/JAFFE/training_set/disgust/KA.DI1.42.tiff new file mode 100644 index 0000000..5001ab7 Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/KA.DI1.42.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/KA.DI2.43.tiff b/dataset/JAFFE/training_set/disgust/KA.DI2.43.tiff new file mode 100644 index 0000000..18dcd2b Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/KA.DI2.43.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/KA.DI3.44.tiff b/dataset/JAFFE/training_set/disgust/KA.DI3.44.tiff new file mode 100644 index 0000000..64d0414 Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/KA.DI3.44.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/KL.DI1.170.tiff b/dataset/JAFFE/training_set/disgust/KL.DI1.170.tiff new file mode 100644 index 0000000..c17b0de Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/KL.DI1.170.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/KL.DI2.171.tiff b/dataset/JAFFE/training_set/disgust/KL.DI2.171.tiff new file mode 100644 index 0000000..552b6d1 Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/KL.DI2.171.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/KL.DI3.172.tiff b/dataset/JAFFE/training_set/disgust/KL.DI3.172.tiff new file mode 100644 index 0000000..828528b Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/KL.DI3.172.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/KL.DI4.173.tiff b/dataset/JAFFE/training_set/disgust/KL.DI4.173.tiff new file mode 100644 index 0000000..8c44e12 Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/KL.DI4.173.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/KM.DI1.20.tiff b/dataset/JAFFE/training_set/disgust/KM.DI1.20.tiff new file mode 100644 index 0000000..b9a632d Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/KM.DI1.20.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/KM.DI3.22.tiff b/dataset/JAFFE/training_set/disgust/KM.DI3.22.tiff new file mode 100644 index 0000000..d8f0d2f Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/KM.DI3.22.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/KR.DI1.86.tiff b/dataset/JAFFE/training_set/disgust/KR.DI1.86.tiff new file mode 100644 index 0000000..cc87c02 Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/KR.DI1.86.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/KR.DI2.87.tiff b/dataset/JAFFE/training_set/disgust/KR.DI2.87.tiff new file mode 100644 index 0000000..ed09ff0 Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/KR.DI2.87.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/KR.DI3.88.tiff b/dataset/JAFFE/training_set/disgust/KR.DI3.88.tiff new file mode 100644 index 0000000..6672081 Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/KR.DI3.88.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/MK.DI1.128.tiff b/dataset/JAFFE/training_set/disgust/MK.DI1.128.tiff new file mode 100644 index 0000000..e6a53ed Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/MK.DI1.128.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/MK.DI2.129.tiff b/dataset/JAFFE/training_set/disgust/MK.DI2.129.tiff new file mode 100644 index 0000000..7345365 Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/MK.DI2.129.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/MK.DI3.130.tiff b/dataset/JAFFE/training_set/disgust/MK.DI3.130.tiff new file mode 100644 index 0000000..07cfad5 Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/MK.DI3.130.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/NA.DI1.214.tiff b/dataset/JAFFE/training_set/disgust/NA.DI1.214.tiff new file mode 100644 index 0000000..075b13c Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/NA.DI1.214.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/NA.DI2.215.tiff b/dataset/JAFFE/training_set/disgust/NA.DI2.215.tiff new file mode 100644 index 0000000..44eaa85 Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/NA.DI2.215.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/NA.DI3.216.tiff b/dataset/JAFFE/training_set/disgust/NA.DI3.216.tiff new file mode 100644 index 0000000..026c244 Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/NA.DI3.216.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/NM.DI1.107.tiff b/dataset/JAFFE/training_set/disgust/NM.DI1.107.tiff new file mode 100644 index 0000000..c538ee6 Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/NM.DI1.107.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/NM.DI3.109.tiff b/dataset/JAFFE/training_set/disgust/NM.DI3.109.tiff new file mode 100644 index 0000000..b2839df Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/NM.DI3.109.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/TM.DI1.193.tiff b/dataset/JAFFE/training_set/disgust/TM.DI1.193.tiff new file mode 100644 index 0000000..a4c251c Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/TM.DI1.193.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/TM.DI2.194.tiff b/dataset/JAFFE/training_set/disgust/TM.DI2.194.tiff new file mode 100644 index 0000000..fd4a5b8 Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/TM.DI2.194.tiff differ diff --git a/dataset/JAFFE/training_set/disgust/TM.DI3.195.tiff b/dataset/JAFFE/training_set/disgust/TM.DI3.195.tiff new file mode 100644 index 0000000..d732b3e Binary files /dev/null and b/dataset/JAFFE/training_set/disgust/TM.DI3.195.tiff differ diff --git a/dataset/JAFFE/training_set/fear/KA.FE1.45.tiff b/dataset/JAFFE/training_set/fear/KA.FE1.45.tiff new file mode 100644 index 0000000..d818ad2 Binary files /dev/null and b/dataset/JAFFE/training_set/fear/KA.FE1.45.tiff differ diff --git a/dataset/JAFFE/training_set/fear/KA.FE2.46.tiff b/dataset/JAFFE/training_set/fear/KA.FE2.46.tiff new file mode 100644 index 0000000..4cfad26 Binary files /dev/null and b/dataset/JAFFE/training_set/fear/KA.FE2.46.tiff differ diff --git a/dataset/JAFFE/training_set/fear/KA.FE3.47.tiff b/dataset/JAFFE/training_set/fear/KA.FE3.47.tiff new file mode 100644 index 0000000..796a3bb Binary files /dev/null and b/dataset/JAFFE/training_set/fear/KA.FE3.47.tiff differ diff --git a/dataset/JAFFE/training_set/fear/KA.FE4.48.tiff b/dataset/JAFFE/training_set/fear/KA.FE4.48.tiff new file mode 100644 index 0000000..323aae1 Binary files /dev/null and b/dataset/JAFFE/training_set/fear/KA.FE4.48.tiff differ diff --git a/dataset/JAFFE/training_set/fear/KL.FE1.174.tiff b/dataset/JAFFE/training_set/fear/KL.FE1.174.tiff new file mode 100644 index 0000000..f2c5a13 Binary files /dev/null and b/dataset/JAFFE/training_set/fear/KL.FE1.174.tiff differ diff --git a/dataset/JAFFE/training_set/fear/KL.FE2.175.tiff b/dataset/JAFFE/training_set/fear/KL.FE2.175.tiff new file mode 100644 index 0000000..ee29d7e Binary files /dev/null and b/dataset/JAFFE/training_set/fear/KL.FE2.175.tiff differ diff --git a/dataset/JAFFE/training_set/fear/KL.FE3.176.tiff b/dataset/JAFFE/training_set/fear/KL.FE3.176.tiff new file mode 100644 index 0000000..dbe9f43 Binary files /dev/null and b/dataset/JAFFE/training_set/fear/KL.FE3.176.tiff differ diff --git a/dataset/JAFFE/training_set/fear/KM.FE1.23.tiff b/dataset/JAFFE/training_set/fear/KM.FE1.23.tiff new file mode 100644 index 0000000..6b4fa24 Binary files /dev/null and b/dataset/JAFFE/training_set/fear/KM.FE1.23.tiff differ diff --git a/dataset/JAFFE/training_set/fear/KM.FE2.24.tiff b/dataset/JAFFE/training_set/fear/KM.FE2.24.tiff new file mode 100644 index 0000000..bcb62ec Binary files /dev/null and b/dataset/JAFFE/training_set/fear/KM.FE2.24.tiff differ diff --git a/dataset/JAFFE/training_set/fear/KM.FE3.25.tiff b/dataset/JAFFE/training_set/fear/KM.FE3.25.tiff new file mode 100644 index 0000000..0146931 Binary files /dev/null and b/dataset/JAFFE/training_set/fear/KM.FE3.25.tiff differ diff --git a/dataset/JAFFE/training_set/fear/KR.FE1.89.tiff b/dataset/JAFFE/training_set/fear/KR.FE1.89.tiff new file mode 100644 index 0000000..dc02098 Binary files /dev/null and b/dataset/JAFFE/training_set/fear/KR.FE1.89.tiff differ diff --git a/dataset/JAFFE/training_set/fear/KR.FE2.90.tiff b/dataset/JAFFE/training_set/fear/KR.FE2.90.tiff new file mode 100644 index 0000000..832517d Binary files /dev/null and b/dataset/JAFFE/training_set/fear/KR.FE2.90.tiff differ diff --git a/dataset/JAFFE/training_set/fear/KR.FE3.91.tiff b/dataset/JAFFE/training_set/fear/KR.FE3.91.tiff new file mode 100644 index 0000000..448003e Binary files /dev/null and b/dataset/JAFFE/training_set/fear/KR.FE3.91.tiff differ diff --git a/dataset/JAFFE/training_set/fear/MK.FE1.131.tiff b/dataset/JAFFE/training_set/fear/MK.FE1.131.tiff new file mode 100644 index 0000000..0885f28 Binary files /dev/null and b/dataset/JAFFE/training_set/fear/MK.FE1.131.tiff differ diff --git a/dataset/JAFFE/training_set/fear/MK.FE2.132.tiff b/dataset/JAFFE/training_set/fear/MK.FE2.132.tiff new file mode 100644 index 0000000..f1909d2 Binary files /dev/null and b/dataset/JAFFE/training_set/fear/MK.FE2.132.tiff differ diff --git a/dataset/JAFFE/training_set/fear/MK.FE3.133.tiff b/dataset/JAFFE/training_set/fear/MK.FE3.133.tiff new file mode 100644 index 0000000..c391462 Binary files /dev/null and b/dataset/JAFFE/training_set/fear/MK.FE3.133.tiff differ diff --git a/dataset/JAFFE/training_set/fear/NA.FE1.217.tiff b/dataset/JAFFE/training_set/fear/NA.FE1.217.tiff new file mode 100644 index 0000000..3ff1319 Binary files /dev/null and b/dataset/JAFFE/training_set/fear/NA.FE1.217.tiff differ diff --git a/dataset/JAFFE/training_set/fear/NA.FE2.218.tiff b/dataset/JAFFE/training_set/fear/NA.FE2.218.tiff new file mode 100644 index 0000000..352527a Binary files /dev/null and b/dataset/JAFFE/training_set/fear/NA.FE2.218.tiff differ diff --git a/dataset/JAFFE/training_set/fear/NA.FE3.219.tiff b/dataset/JAFFE/training_set/fear/NA.FE3.219.tiff new file mode 100644 index 0000000..52b664f Binary files /dev/null and b/dataset/JAFFE/training_set/fear/NA.FE3.219.tiff differ diff --git a/dataset/JAFFE/training_set/fear/NM.FE1.110.tiff b/dataset/JAFFE/training_set/fear/NM.FE1.110.tiff new file mode 100644 index 0000000..ff247e3 Binary files /dev/null and b/dataset/JAFFE/training_set/fear/NM.FE1.110.tiff differ diff --git a/dataset/JAFFE/training_set/fear/NM.FE2.111.tiff b/dataset/JAFFE/training_set/fear/NM.FE2.111.tiff new file mode 100644 index 0000000..ae7e2ec Binary files /dev/null and b/dataset/JAFFE/training_set/fear/NM.FE2.111.tiff differ diff --git a/dataset/JAFFE/training_set/fear/NM.FE3.112.tiff b/dataset/JAFFE/training_set/fear/NM.FE3.112.tiff new file mode 100644 index 0000000..dca2edd Binary files /dev/null and b/dataset/JAFFE/training_set/fear/NM.FE3.112.tiff differ diff --git a/dataset/JAFFE/training_set/fear/TM.FE1.196.tiff b/dataset/JAFFE/training_set/fear/TM.FE1.196.tiff new file mode 100644 index 0000000..d57affe Binary files /dev/null and b/dataset/JAFFE/training_set/fear/TM.FE1.196.tiff differ diff --git a/dataset/JAFFE/training_set/fear/TM.FE2.197.tiff b/dataset/JAFFE/training_set/fear/TM.FE2.197.tiff new file mode 100644 index 0000000..7dedba4 Binary files /dev/null and b/dataset/JAFFE/training_set/fear/TM.FE2.197.tiff differ diff --git a/dataset/JAFFE/training_set/fear/TM.FE3.198.tiff b/dataset/JAFFE/training_set/fear/TM.FE3.198.tiff new file mode 100644 index 0000000..0bd2dea Binary files /dev/null and b/dataset/JAFFE/training_set/fear/TM.FE3.198.tiff differ diff --git a/dataset/JAFFE/training_set/happy/KA.HA1.29.tiff b/dataset/JAFFE/training_set/happy/KA.HA1.29.tiff new file mode 100644 index 0000000..95cb3ad Binary files /dev/null and b/dataset/JAFFE/training_set/happy/KA.HA1.29.tiff differ diff --git a/dataset/JAFFE/training_set/happy/KA.HA2.30.tiff b/dataset/JAFFE/training_set/happy/KA.HA2.30.tiff new file mode 100644 index 0000000..df4abba Binary files /dev/null and b/dataset/JAFFE/training_set/happy/KA.HA2.30.tiff differ diff --git a/dataset/JAFFE/training_set/happy/KA.HA3.31.tiff b/dataset/JAFFE/training_set/happy/KA.HA3.31.tiff new file mode 100644 index 0000000..443c45e Binary files /dev/null and b/dataset/JAFFE/training_set/happy/KA.HA3.31.tiff differ diff --git a/dataset/JAFFE/training_set/happy/KA.HA4.32.tiff b/dataset/JAFFE/training_set/happy/KA.HA4.32.tiff new file mode 100644 index 0000000..5967f24 Binary files /dev/null and b/dataset/JAFFE/training_set/happy/KA.HA4.32.tiff differ diff --git a/dataset/JAFFE/training_set/happy/KL.HA1.158.tiff b/dataset/JAFFE/training_set/happy/KL.HA1.158.tiff new file mode 100644 index 0000000..1bfb9b1 Binary files /dev/null and b/dataset/JAFFE/training_set/happy/KL.HA1.158.tiff differ diff --git a/dataset/JAFFE/training_set/happy/KL.HA2.159.tiff b/dataset/JAFFE/training_set/happy/KL.HA2.159.tiff new file mode 100644 index 0000000..113faa5 Binary files /dev/null and b/dataset/JAFFE/training_set/happy/KL.HA2.159.tiff differ diff --git a/dataset/JAFFE/training_set/happy/KL.HA3.160.tiff b/dataset/JAFFE/training_set/happy/KL.HA3.160.tiff new file mode 100644 index 0000000..ad45844 Binary files /dev/null and b/dataset/JAFFE/training_set/happy/KL.HA3.160.tiff differ diff --git a/dataset/JAFFE/training_set/happy/KM.HA1.4.tiff b/dataset/JAFFE/training_set/happy/KM.HA1.4.tiff new file mode 100644 index 0000000..47e0aa8 Binary files /dev/null and b/dataset/JAFFE/training_set/happy/KM.HA1.4.tiff differ diff --git a/dataset/JAFFE/training_set/happy/KM.HA2.5.tiff b/dataset/JAFFE/training_set/happy/KM.HA2.5.tiff new file mode 100644 index 0000000..628f8ea Binary files /dev/null and b/dataset/JAFFE/training_set/happy/KM.HA2.5.tiff differ diff --git a/dataset/JAFFE/training_set/happy/KM.HA3.6.tiff b/dataset/JAFFE/training_set/happy/KM.HA3.6.tiff new file mode 100644 index 0000000..ad75d12 Binary files /dev/null and b/dataset/JAFFE/training_set/happy/KM.HA3.6.tiff differ diff --git a/dataset/JAFFE/training_set/happy/KM.HA4.7.tiff b/dataset/JAFFE/training_set/happy/KM.HA4.7.tiff new file mode 100644 index 0000000..660564d Binary files /dev/null and b/dataset/JAFFE/training_set/happy/KM.HA4.7.tiff differ diff --git a/dataset/JAFFE/training_set/happy/KR.HA1.74.tiff b/dataset/JAFFE/training_set/happy/KR.HA1.74.tiff new file mode 100644 index 0000000..b87e917 Binary files /dev/null and b/dataset/JAFFE/training_set/happy/KR.HA1.74.tiff differ diff --git a/dataset/JAFFE/training_set/happy/KR.HA2.75.tiff b/dataset/JAFFE/training_set/happy/KR.HA2.75.tiff new file mode 100644 index 0000000..e2526ab Binary files /dev/null and b/dataset/JAFFE/training_set/happy/KR.HA2.75.tiff differ diff --git a/dataset/JAFFE/training_set/happy/KR.SA3.79.tiff b/dataset/JAFFE/training_set/happy/KR.SA3.79.tiff new file mode 100644 index 0000000..a78132b Binary files /dev/null and b/dataset/JAFFE/training_set/happy/KR.SA3.79.tiff differ diff --git a/dataset/JAFFE/training_set/happy/MK.HA1.116.tiff b/dataset/JAFFE/training_set/happy/MK.HA1.116.tiff new file mode 100644 index 0000000..de299db Binary files /dev/null and b/dataset/JAFFE/training_set/happy/MK.HA1.116.tiff differ diff --git a/dataset/JAFFE/training_set/happy/MK.HA2.117.tiff b/dataset/JAFFE/training_set/happy/MK.HA2.117.tiff new file mode 100644 index 0000000..8b54a99 Binary files /dev/null and b/dataset/JAFFE/training_set/happy/MK.HA2.117.tiff differ diff --git a/dataset/JAFFE/training_set/happy/MK.HA3.118.tiff b/dataset/JAFFE/training_set/happy/MK.HA3.118.tiff new file mode 100644 index 0000000..5d0669c Binary files /dev/null and b/dataset/JAFFE/training_set/happy/MK.HA3.118.tiff differ diff --git a/dataset/JAFFE/training_set/happy/NA.HA1.202.tiff b/dataset/JAFFE/training_set/happy/NA.HA1.202.tiff new file mode 100644 index 0000000..297ede0 Binary files /dev/null and b/dataset/JAFFE/training_set/happy/NA.HA1.202.tiff differ diff --git a/dataset/JAFFE/training_set/happy/NA.HA2.203.tiff b/dataset/JAFFE/training_set/happy/NA.HA2.203.tiff new file mode 100644 index 0000000..153104a Binary files /dev/null and b/dataset/JAFFE/training_set/happy/NA.HA2.203.tiff differ diff --git a/dataset/JAFFE/training_set/happy/NA.HA3.204.tiff b/dataset/JAFFE/training_set/happy/NA.HA3.204.tiff new file mode 100644 index 0000000..9d15f0b Binary files /dev/null and b/dataset/JAFFE/training_set/happy/NA.HA3.204.tiff differ diff --git a/dataset/JAFFE/training_set/happy/NM.HA1.95.tiff b/dataset/JAFFE/training_set/happy/NM.HA1.95.tiff new file mode 100644 index 0000000..e970a9f Binary files /dev/null and b/dataset/JAFFE/training_set/happy/NM.HA1.95.tiff differ diff --git a/dataset/JAFFE/training_set/happy/NM.HA2.96.tiff b/dataset/JAFFE/training_set/happy/NM.HA2.96.tiff new file mode 100644 index 0000000..8bae12a Binary files /dev/null and b/dataset/JAFFE/training_set/happy/NM.HA2.96.tiff differ diff --git a/dataset/JAFFE/training_set/happy/NM.HA3.97.tiff b/dataset/JAFFE/training_set/happy/NM.HA3.97.tiff new file mode 100644 index 0000000..10e50da Binary files /dev/null and b/dataset/JAFFE/training_set/happy/NM.HA3.97.tiff differ diff --git a/dataset/JAFFE/training_set/happy/TM.HA1.180.tiff b/dataset/JAFFE/training_set/happy/TM.HA1.180.tiff new file mode 100644 index 0000000..9cbbfb6 Binary files /dev/null and b/dataset/JAFFE/training_set/happy/TM.HA1.180.tiff differ diff --git a/dataset/JAFFE/training_set/happy/TM.HA2.181.tiff b/dataset/JAFFE/training_set/happy/TM.HA2.181.tiff new file mode 100644 index 0000000..40f8137 Binary files /dev/null and b/dataset/JAFFE/training_set/happy/TM.HA2.181.tiff differ diff --git a/dataset/JAFFE/training_set/happy/TM.HA3.182.tiff b/dataset/JAFFE/training_set/happy/TM.HA3.182.tiff new file mode 100644 index 0000000..1cafa6b Binary files /dev/null and b/dataset/JAFFE/training_set/happy/TM.HA3.182.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/KA.NE1.26.tiff b/dataset/JAFFE/training_set/neutral/KA.NE1.26.tiff new file mode 100644 index 0000000..e57ae46 Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/KA.NE1.26.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/KA.NE2.27.tiff b/dataset/JAFFE/training_set/neutral/KA.NE2.27.tiff new file mode 100644 index 0000000..26148f7 Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/KA.NE2.27.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/KA.NE3.28.tiff b/dataset/JAFFE/training_set/neutral/KA.NE3.28.tiff new file mode 100644 index 0000000..de31823 Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/KA.NE3.28.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/KL.NE1.155.tiff b/dataset/JAFFE/training_set/neutral/KL.NE1.155.tiff new file mode 100644 index 0000000..1ad92a3 Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/KL.NE1.155.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/KL.NE2.156.tiff b/dataset/JAFFE/training_set/neutral/KL.NE2.156.tiff new file mode 100644 index 0000000..151ca82 Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/KL.NE2.156.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/KL.NE3.157.tiff b/dataset/JAFFE/training_set/neutral/KL.NE3.157.tiff new file mode 100644 index 0000000..e5446c9 Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/KL.NE3.157.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/KM.NE1.1.tiff b/dataset/JAFFE/training_set/neutral/KM.NE1.1.tiff new file mode 100644 index 0000000..9609e1c Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/KM.NE1.1.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/KM.NE2.2.tiff b/dataset/JAFFE/training_set/neutral/KM.NE2.2.tiff new file mode 100644 index 0000000..5cbfcca Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/KM.NE2.2.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/KM.NE3.3.tiff b/dataset/JAFFE/training_set/neutral/KM.NE3.3.tiff new file mode 100644 index 0000000..34d18df Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/KM.NE3.3.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/KR.NE1.71.tiff b/dataset/JAFFE/training_set/neutral/KR.NE1.71.tiff new file mode 100644 index 0000000..3c115de Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/KR.NE1.71.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/KR.NE2.72.tiff b/dataset/JAFFE/training_set/neutral/KR.NE2.72.tiff new file mode 100644 index 0000000..d80ad49 Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/KR.NE2.72.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/KR.NE3.73.tiff b/dataset/JAFFE/training_set/neutral/KR.NE3.73.tiff new file mode 100644 index 0000000..f29e7eb Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/KR.NE3.73.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/MK.NE1.113.tiff b/dataset/JAFFE/training_set/neutral/MK.NE1.113.tiff new file mode 100644 index 0000000..b0d5a40 Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/MK.NE1.113.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/MK.NE2.114.tiff b/dataset/JAFFE/training_set/neutral/MK.NE2.114.tiff new file mode 100644 index 0000000..525c34b Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/MK.NE2.114.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/MK.NE3.115.tiff b/dataset/JAFFE/training_set/neutral/MK.NE3.115.tiff new file mode 100644 index 0000000..06a4491 Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/MK.NE3.115.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/NA.NE1.199.tiff b/dataset/JAFFE/training_set/neutral/NA.NE1.199.tiff new file mode 100644 index 0000000..eeb0169 Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/NA.NE1.199.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/NA.NE2.200.tiff b/dataset/JAFFE/training_set/neutral/NA.NE2.200.tiff new file mode 100644 index 0000000..5bcff86 Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/NA.NE2.200.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/NA.NE3.201.tiff b/dataset/JAFFE/training_set/neutral/NA.NE3.201.tiff new file mode 100644 index 0000000..d13f103 Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/NA.NE3.201.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/NM.NE1.92.tiff b/dataset/JAFFE/training_set/neutral/NM.NE1.92.tiff new file mode 100644 index 0000000..626ec1d Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/NM.NE1.92.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/NM.NE2.93.tiff b/dataset/JAFFE/training_set/neutral/NM.NE2.93.tiff new file mode 100644 index 0000000..11535bf Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/NM.NE2.93.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/NM.NE3.94.tiff b/dataset/JAFFE/training_set/neutral/NM.NE3.94.tiff new file mode 100644 index 0000000..eb6e3b7 Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/NM.NE3.94.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/TM.NE1.177.tiff b/dataset/JAFFE/training_set/neutral/TM.NE1.177.tiff new file mode 100644 index 0000000..ee8e27e Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/TM.NE1.177.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/TM.NE2.178.tiff b/dataset/JAFFE/training_set/neutral/TM.NE2.178.tiff new file mode 100644 index 0000000..ce1371d Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/TM.NE2.178.tiff differ diff --git a/dataset/JAFFE/training_set/neutral/TM.NE3.179.tiff b/dataset/JAFFE/training_set/neutral/TM.NE3.179.tiff new file mode 100644 index 0000000..fcea901 Binary files /dev/null and b/dataset/JAFFE/training_set/neutral/TM.NE3.179.tiff differ diff --git a/dataset/JAFFE/training_set/sad/KA.SA1.33.tiff b/dataset/JAFFE/training_set/sad/KA.SA1.33.tiff new file mode 100644 index 0000000..25cda22 Binary files /dev/null and b/dataset/JAFFE/training_set/sad/KA.SA1.33.tiff differ diff --git a/dataset/JAFFE/training_set/sad/KA.SA2.34.tiff b/dataset/JAFFE/training_set/sad/KA.SA2.34.tiff new file mode 100644 index 0000000..d27688e Binary files /dev/null and b/dataset/JAFFE/training_set/sad/KA.SA2.34.tiff differ diff --git a/dataset/JAFFE/training_set/sad/KA.SA3.35.tiff b/dataset/JAFFE/training_set/sad/KA.SA3.35.tiff new file mode 100644 index 0000000..b4c7bdf Binary files /dev/null and b/dataset/JAFFE/training_set/sad/KA.SA3.35.tiff differ diff --git a/dataset/JAFFE/training_set/sad/KL.SA1.161.tiff b/dataset/JAFFE/training_set/sad/KL.SA1.161.tiff new file mode 100644 index 0000000..c409008 Binary files /dev/null and b/dataset/JAFFE/training_set/sad/KL.SA1.161.tiff differ diff --git a/dataset/JAFFE/training_set/sad/KL.SA2.162.tiff b/dataset/JAFFE/training_set/sad/KL.SA2.162.tiff new file mode 100644 index 0000000..e2925f4 Binary files /dev/null and b/dataset/JAFFE/training_set/sad/KL.SA2.162.tiff differ diff --git a/dataset/JAFFE/training_set/sad/KL.SA3.163.tiff b/dataset/JAFFE/training_set/sad/KL.SA3.163.tiff new file mode 100644 index 0000000..32c7e85 Binary files /dev/null and b/dataset/JAFFE/training_set/sad/KL.SA3.163.tiff differ diff --git a/dataset/JAFFE/training_set/sad/KM.SA1.9.tiff b/dataset/JAFFE/training_set/sad/KM.SA1.9.tiff new file mode 100644 index 0000000..7a90ea0 Binary files /dev/null and b/dataset/JAFFE/training_set/sad/KM.SA1.9.tiff differ diff --git a/dataset/JAFFE/training_set/sad/KM.SA2.10.tiff b/dataset/JAFFE/training_set/sad/KM.SA2.10.tiff new file mode 100644 index 0000000..4abe405 Binary files /dev/null and b/dataset/JAFFE/training_set/sad/KM.SA2.10.tiff differ diff --git a/dataset/JAFFE/training_set/sad/KM.SA3.11.tiff b/dataset/JAFFE/training_set/sad/KM.SA3.11.tiff new file mode 100644 index 0000000..dfd7b9c Binary files /dev/null and b/dataset/JAFFE/training_set/sad/KM.SA3.11.tiff differ diff --git a/dataset/JAFFE/training_set/sad/KM.SA5.13.tiff b/dataset/JAFFE/training_set/sad/KM.SA5.13.tiff new file mode 100644 index 0000000..5f61a62 Binary files /dev/null and b/dataset/JAFFE/training_set/sad/KM.SA5.13.tiff differ diff --git a/dataset/JAFFE/training_set/sad/KR.SA1.77.tiff b/dataset/JAFFE/training_set/sad/KR.SA1.77.tiff new file mode 100644 index 0000000..cd5663a Binary files /dev/null and b/dataset/JAFFE/training_set/sad/KR.SA1.77.tiff differ diff --git a/dataset/JAFFE/training_set/sad/KR.SA2.78.tiff b/dataset/JAFFE/training_set/sad/KR.SA2.78.tiff new file mode 100644 index 0000000..431a2ff Binary files /dev/null and b/dataset/JAFFE/training_set/sad/KR.SA2.78.tiff differ diff --git a/dataset/JAFFE/training_set/sad/MK.SA1.119.tiff b/dataset/JAFFE/training_set/sad/MK.SA1.119.tiff new file mode 100644 index 0000000..cb00354 Binary files /dev/null and b/dataset/JAFFE/training_set/sad/MK.SA1.119.tiff differ diff --git a/dataset/JAFFE/training_set/sad/MK.SA2.120.tiff b/dataset/JAFFE/training_set/sad/MK.SA2.120.tiff new file mode 100644 index 0000000..45afdc9 Binary files /dev/null and b/dataset/JAFFE/training_set/sad/MK.SA2.120.tiff differ diff --git a/dataset/JAFFE/training_set/sad/MK.SA3.121.tiff b/dataset/JAFFE/training_set/sad/MK.SA3.121.tiff new file mode 100644 index 0000000..c16fe09 Binary files /dev/null and b/dataset/JAFFE/training_set/sad/MK.SA3.121.tiff differ diff --git a/dataset/JAFFE/training_set/sad/NA.SA1.205.tiff b/dataset/JAFFE/training_set/sad/NA.SA1.205.tiff new file mode 100644 index 0000000..c614fde Binary files /dev/null and b/dataset/JAFFE/training_set/sad/NA.SA1.205.tiff differ diff --git a/dataset/JAFFE/training_set/sad/NA.SA2.206.tiff b/dataset/JAFFE/training_set/sad/NA.SA2.206.tiff new file mode 100644 index 0000000..12792aa Binary files /dev/null and b/dataset/JAFFE/training_set/sad/NA.SA2.206.tiff differ diff --git a/dataset/JAFFE/training_set/sad/NA.SA3.207.tiff b/dataset/JAFFE/training_set/sad/NA.SA3.207.tiff new file mode 100644 index 0000000..ecbccf0 Binary files /dev/null and b/dataset/JAFFE/training_set/sad/NA.SA3.207.tiff differ diff --git a/dataset/JAFFE/training_set/sad/NM.SA1.98.tiff b/dataset/JAFFE/training_set/sad/NM.SA1.98.tiff new file mode 100644 index 0000000..1caa9f1 Binary files /dev/null and b/dataset/JAFFE/training_set/sad/NM.SA1.98.tiff differ diff --git a/dataset/JAFFE/training_set/sad/NM.SA2.99.tiff b/dataset/JAFFE/training_set/sad/NM.SA2.99.tiff new file mode 100644 index 0000000..1e13aaa Binary files /dev/null and b/dataset/JAFFE/training_set/sad/NM.SA2.99.tiff differ diff --git a/dataset/JAFFE/training_set/sad/NM.SA3.100.tiff b/dataset/JAFFE/training_set/sad/NM.SA3.100.tiff new file mode 100644 index 0000000..9a7a5bb Binary files /dev/null and b/dataset/JAFFE/training_set/sad/NM.SA3.100.tiff differ diff --git a/dataset/JAFFE/training_set/sad/TM.SA1.184.tiff b/dataset/JAFFE/training_set/sad/TM.SA1.184.tiff new file mode 100644 index 0000000..22a034e Binary files /dev/null and b/dataset/JAFFE/training_set/sad/TM.SA1.184.tiff differ diff --git a/dataset/JAFFE/training_set/sad/TM.SA2.185.tiff b/dataset/JAFFE/training_set/sad/TM.SA2.185.tiff new file mode 100644 index 0000000..0aea67f Binary files /dev/null and b/dataset/JAFFE/training_set/sad/TM.SA2.185.tiff differ diff --git a/dataset/JAFFE/training_set/sad/TM.SA3.186.tiff b/dataset/JAFFE/training_set/sad/TM.SA3.186.tiff new file mode 100644 index 0000000..47518e1 Binary files /dev/null and b/dataset/JAFFE/training_set/sad/TM.SA3.186.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/KA.SU1.36.tiff b/dataset/JAFFE/training_set/surprise/KA.SU1.36.tiff new file mode 100644 index 0000000..cd065c1 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/KA.SU1.36.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/KA.SU2.37.tiff b/dataset/JAFFE/training_set/surprise/KA.SU2.37.tiff new file mode 100644 index 0000000..9c4d403 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/KA.SU2.37.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/KA.SU3.38.tiff b/dataset/JAFFE/training_set/surprise/KA.SU3.38.tiff new file mode 100644 index 0000000..2b48c31 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/KA.SU3.38.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/KL.SU1.164.tiff b/dataset/JAFFE/training_set/surprise/KL.SU1.164.tiff new file mode 100644 index 0000000..215840f Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/KL.SU1.164.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/KL.SU2.165.tiff b/dataset/JAFFE/training_set/surprise/KL.SU2.165.tiff new file mode 100644 index 0000000..a6909b9 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/KL.SU2.165.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/KL.SU3.166.tiff b/dataset/JAFFE/training_set/surprise/KL.SU3.166.tiff new file mode 100644 index 0000000..1b2b428 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/KL.SU3.166.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/KM.SU1.14.tiff b/dataset/JAFFE/training_set/surprise/KM.SU1.14.tiff new file mode 100644 index 0000000..211c708 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/KM.SU1.14.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/KM.SU2.15.tiff b/dataset/JAFFE/training_set/surprise/KM.SU2.15.tiff new file mode 100644 index 0000000..3e308a8 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/KM.SU2.15.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/KM.SU3.16.tiff b/dataset/JAFFE/training_set/surprise/KM.SU3.16.tiff new file mode 100644 index 0000000..78c90e2 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/KM.SU3.16.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/KR.SU1.80.tiff b/dataset/JAFFE/training_set/surprise/KR.SU1.80.tiff new file mode 100644 index 0000000..6846fdd Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/KR.SU1.80.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/KR.SU2.81.tiff b/dataset/JAFFE/training_set/surprise/KR.SU2.81.tiff new file mode 100644 index 0000000..b529ec8 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/KR.SU2.81.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/KR.SU3.82.tiff b/dataset/JAFFE/training_set/surprise/KR.SU3.82.tiff new file mode 100644 index 0000000..61203ad Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/KR.SU3.82.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/MK.SU1.122.tiff b/dataset/JAFFE/training_set/surprise/MK.SU1.122.tiff new file mode 100644 index 0000000..be4db16 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/MK.SU1.122.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/MK.SU2.123.tiff b/dataset/JAFFE/training_set/surprise/MK.SU2.123.tiff new file mode 100644 index 0000000..6080876 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/MK.SU2.123.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/MK.SU3.124.tiff b/dataset/JAFFE/training_set/surprise/MK.SU3.124.tiff new file mode 100644 index 0000000..63df2c9 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/MK.SU3.124.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/NA.SU1.208.tiff b/dataset/JAFFE/training_set/surprise/NA.SU1.208.tiff new file mode 100644 index 0000000..9c91b66 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/NA.SU1.208.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/NA.SU2.209.tiff b/dataset/JAFFE/training_set/surprise/NA.SU2.209.tiff new file mode 100644 index 0000000..e6f8617 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/NA.SU2.209.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/NA.SU3.210.tiff b/dataset/JAFFE/training_set/surprise/NA.SU3.210.tiff new file mode 100644 index 0000000..405329e Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/NA.SU3.210.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/NM.SU1.101.tiff b/dataset/JAFFE/training_set/surprise/NM.SU1.101.tiff new file mode 100644 index 0000000..1047e8f Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/NM.SU1.101.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/NM.SU2.102.tiff b/dataset/JAFFE/training_set/surprise/NM.SU2.102.tiff new file mode 100644 index 0000000..70bcb03 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/NM.SU2.102.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/NM.SU3.103.tiff b/dataset/JAFFE/training_set/surprise/NM.SU3.103.tiff new file mode 100644 index 0000000..2c36aef Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/NM.SU3.103.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/TM.SU1.187.tiff b/dataset/JAFFE/training_set/surprise/TM.SU1.187.tiff new file mode 100644 index 0000000..67c952a Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/TM.SU1.187.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/TM.SU2.188.tiff b/dataset/JAFFE/training_set/surprise/TM.SU2.188.tiff new file mode 100644 index 0000000..604ad81 Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/TM.SU2.188.tiff differ diff --git a/dataset/JAFFE/training_set/surprise/TM.SU3.189.tiff b/dataset/JAFFE/training_set/surprise/TM.SU3.189.tiff new file mode 100644 index 0000000..506fb7b Binary files /dev/null and b/dataset/JAFFE/training_set/surprise/TM.SU3.189.tiff differ diff --git a/dataset/result.png b/dataset/result.png new file mode 100644 index 0000000..e923180 Binary files /dev/null and b/dataset/result.png differ diff --git a/dataset/test.png b/dataset/test.png new file mode 100644 index 0000000..435e79f Binary files /dev/null and b/dataset/test.png differ diff --git a/demo/data_csv.py b/demo/data_csv.py new file mode 100644 index 0000000..0e12753 --- /dev/null +++ b/demo/data_csv.py @@ -0,0 +1,139 @@ +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt + +data = pd.read_excel('dataset/1.xlsx') +file = np.array(data) + +am_1, am_2, am_3, am_4 = 0, 0, 0, 0 +em_1, em_2, em_3, em_4 = 0, 0, 0, 0 +ja_1, ja_2, ja_3, ja_4 = 0, 0, 0, 0 +ap_1, ap_2, ap_3, ap_4 = 0, 0, 0, 0 + +for item in file: + it_area = item[21] + if it_area == 'Americas': + it_quarter = item[7] + if it_quarter == 1: + am_1 += item[4] + elif it_quarter == 2: + am_2 += item[4] + elif it_quarter == 3: + am_3 += item[4] + elif it_quarter == 4: + am_4 += item[4] + elif it_area == 'EMEA': + it_quarter = item[7] + if it_quarter == 1: + em_1 += item[4] + elif it_quarter == 2: + em_2 += item[4] + elif it_quarter == 3: + em_3 += item[4] + elif it_quarter == 4: + em_4 += item[4] + elif it_area == 'APAC': + it_quarter = item[7] + if it_quarter == 1: + ap_1 += item[4] + elif it_quarter == 2: + ap_2 += item[4] + elif it_quarter == 3: + ap_3 += item[4] + elif it_quarter == 4: + ap_4 += item[4] + # data_ap.append(item) + elif it_area == 'Japan': + it_quarter = item[7] + if it_quarter == 1: + ja_1 += item[4] + elif it_quarter == 2: + ja_2 += item[4] + elif it_quarter == 3: + ja_3 += item[4] + elif it_quarter == 4: + ja_4 += item[4] + # data_ja.append(item) + +print([am_1, ja_1, ap_1, em_1]) +print([am_2, ja_2, ap_2, em_2]) +print([am_3, ja_3, ap_3, em_3]) +print([am_4, ja_4, ap_4, em_4]) +# color_list = ['y', 'b', 'r', 'g'] + +# labels = ['Americas', 'Japan', 'APAC', 'EMEA'] + +# # yellow = [am_1, ja_1, ap_1, em_1] +# # blue = [am_2, ja_2, ap_2, em_2] +# # green = [am_3, ja_3, ap_3, em_3] +# # red = [am_4, ja_4, ap_4, em_4] +# # err = [1, 1, 1, 1] + +# # width = 0.5 + +# fig, ax = plt.subplots() + +# # ax.bar(labels, blue, width, yerr=err, bottom=[yellow, blue, green, red], label='blue') +# # ax.bar(labels, yellow, width, yerr=err, bottom=[yellow, blue, green, red], label='yellow') +# # ax.bar(labels, red, width, yerr=err, bottom=[yellow, blue, green, red], label='red') +# # ax.bar(labels, green, width, yerr=err, bottom=[yellow, blue, green, red], label='green') +# # ax.set_ylabel('Territory') +# # ax.set_xlabel('Sales') +# # ax.legend() #显示图中左上角的标识区域 + +# # plt.show() + +# # import numpy as np +# # import matplotlib.pyplot as plt +# # Emp_data= np.loadtxt('Employedpopulation.csv',delimiter = ",", +# # usecols=(1,2,3,4,5,6,7,8,9,10),dtype=int) + +# # # 设置matplotlib正常显示中文和负号 +# # plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文 +# # plt.rcParams['axes.unicode_minus']=False # 正常显示负号 + +# #创建一个绘图对象, 并设置对象的宽度和高度 +# plt.figure(figsize=(12, 4)) +# #绘制全部就业人员柱状图 +# plt.bar(am_1, am_4, width = 0.3, color = 'red') +# #绘制城镇就业人员柱状图 +# plt.bar(ja_1, ja_4,width = 0.3, color = 'green') +# #绘制乡村就业人员柱状图 +# plt.bar(ap_1, ap_4, width = 0.3, color = 'blue') +# plt.bar(em_1, em_4, width = 0.3, color = 'blue') + +# # x = [i for i in labels] +# plt.xlabel('Sales') +# plt.ylabel('Territory') +# plt.ylim((30000,80000)) +# # plt.xticks(x) +# # plt.title("2007-2016年城镇、乡村和全部就业人员情况柱状图") +# #添加图例 +# plt.legend(('1','2','3','4')) +# plt.savefig('1.png') +# plt.show() + + + +x = ['Americas', 'Japan', 'APAC', 'EMEA'] +y1 = [am_1, ja_1, ap_1, em_1] +y2 = [am_2, ja_2, ap_2, em_2] +y3 = [am_3, ja_3, ap_3, em_3] +y4 = [am_4, ja_4, ap_4, em_4] + +plt.bar(x, y4, label="Q1", color='red') +plt.bar(x, y2, label="Q2",color='orange') +plt.bar(x, y3, label="Q3", color='lightgreen') +plt.bar(x, y1, label="Q4", color='yellow') + +plt.xticks(np.arange(len(x)), x, rotation=0, fontsize=10) # 数量多可以采用270度,数量少可以采用340度,得到更好的视图 +plt.legend(loc="upper left") # 防止label和图像重合显示不出来 +# plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 +plt.ylabel('Sales') +plt.xlabel('Territory') +plt.rcParams['savefig.dpi'] = 1600 # 图片像素 +plt.rcParams['figure.dpi'] = 1600 # 分辨率 +plt.rcParams['figure.figsize'] = (25.0, 15.0) # 尺寸 +plt.title("title") +plt.savefig('result.png') +plt.show() \ No newline at end of file diff --git a/demo/face.py b/demo/face.py new file mode 100644 index 0000000..1d719d0 --- /dev/null +++ b/demo/face.py @@ -0,0 +1,163 @@ +import os +import numpy as np +import cv2 +import matplotlib.pyplot as plt +import pickle +import sklearn +import seaborn + +from skimage.feature import hog +from sklearn.tree import DecisionTreeClassifier +from sklearn.cluster import KMeans +from scipy.spatial.distance import cdist +from sklearn.model_selection import train_test_split +from sklearn.neighbors import KNeighborsClassifier +from sklearn.metrics import accuracy_score, precision_score, recall_score, confusion_matrix +from sklearn.linear_model import LogisticRegression +from sklearn.ensemble import RandomForestClassifier +from skimage import io +from PIL import Image +from sklearn.naive_bayes import GaussianNB + + +def extract_hog_features(X): + image_descriptors = [] + for i in range(len(X)): # 此处的X为之前训练部分所有图像的矩阵形式拼接而来, + # print(i) # 所以len(X)实为X中矩阵的个数,即训练部分图像的个数 + fd, _ = hog(X[i], orientations=9, pixels_per_cell=(16, 16), cells_per_block=(16, 16), + block_norm='L2-Hys', visualize=True) # 此处的参数细节详见其他文章 + image_descriptors.append(fd) # 拼接得到所有图像的hog特征 + return image_descriptors # 返回的是训练部分所有图像的hog特征 + + +def extract_hog_features_single(X): + image_descriptors_single = [] + fd, _ = hog(X, orientations=9, pixels_per_cell=(16, 16), cells_per_block=(16, 16), + block_norm='L2-Hys', visualize=True) + image_descriptors_single.append(fd) + return image_descriptors_single + + +def read_data(label2id): + X = [] + Y = [] + path =r'/Users/jiayanhao/OpenBaseLab-Edu/dataset/JAFFE/training_set' + for label in os.listdir(path): + for img_file in os.listdir(os.path.join(path, label)): # 遍历 + image = cv2.imread(os.path.join(path, label, img_file)) # 读取图像 + result = image/255.0 # 图像归一化 + res = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 转灰度 + # cv2.waitKey(0) + cv2.destroyAllWindows() + X.append(res) # 将读取到的所有图像的矩阵形式拼接在一起 + Y.append(label2id[label]) # 将读取到的所有图像的标签拼接在一起 + return X, Y # 返回的X,Y分别是图像的矩阵表达和图像的标签 + + +''' +#svm算法 +#svm = sklearn.svm.SVC(C = 10, kernel='linear') # acc = 0.9 +svm =sklearn.svm.SVC(C=2, kernel='rbf', gamma=10, decision_function_shape='ovr') #acc=0.9534 +svm.fit(X_train, Y_train) +Y_predict = svm.predict(X_test) +''' + +''' +#knn算法 +knn = KNeighborsClassifier(n_neighbors=1) #0.93 +knn.fit(X_train,Y_train) +print(knn) +print('测试数据集得分:{:.2f}'.format(knn.score(X_test,Y_test))) +Y_predict = knn.predict(X_test) +''' + +''' +#决策树算法 0.3+ +tree_D = DecisionTreeClassifier() +tree_D.fit(X_train, Y_train) +Y_predict = tree_D.predict(X_test) +''' +''' +#朴素贝叶斯分类 0.67+ +mlt=GaussianNB() +mlt.fit(X_train, Y_train) +Y_predict = mlt.predict(X_test) +''' +''' +#逻辑回归分类 0.488 +logistic = LogisticRegression() +logistic.fit(X_train, Y_train) +Y_predict = logistic.predict(X_test) +''' + + +def train_and_infer(): + label2id = {'angry': 0, 'disgust': 1, 'fear': 2, 'happy': 3, 'neutral': 4, 'sad': 5, 'surprise': 6} + X, Y = read_data(label2id) + X_features = extract_hog_features(X) + X_train, X_test, Y_train, Y_test = train_test_split(X_features, Y, test_size=0.25, random_state=42) + + Forest = RandomForestClassifier(n_estimators=180,random_state=0) + Forest.fit(X_train, Y_train) + Y_predict = Forest.predict(X_test) + + acc = accuracy_score(Y_test, Y_predict) + precision = precision_score(Y_test, Y_predict, average='macro') + recall = recall_score(Y_test, Y_predict, average='macro') + cm = confusion_matrix(Y_test, Y_predict) + print(cm) + print('Acc: ', acc) + print('Precision: ', precision) + print('Recall: ', recall) + + xtick = ['angry', 'disgust', 'fear', 'happy', 'neutral', 'sad', 'surprise'] + ytick = xtick + + f, ax = plt.subplots(figsize=(7, 5)) + ax.tick_params(axis='y', labelsize=15) + ax.tick_params(axis='x', labelsize=15) + + seaborn.set(font_scale=1.2) + plt.rc('font',family='Times New Roman', size=15) + + seaborn.heatmap(cm,fmt='g', cmap='Blues', annot=True, cbar=True,xticklabels=xtick, yticklabels=ytick, ax=ax) + + plt.title('Confusion Matrix', fontsize='x-large') + + plt.show() + + + # 下面为同一文件夹下多张图片的表情识别 + # labelid2 = {0:'angry',1: 'disgust',2: 'fear',3:'happy',4:'neutral',5:'sad',6:'surprise'} + path=r'/Users/jiayanhao/OpenBaseLab-Edu/dataset/JAFFE/testing_set' + i = 1 + for dir in os.listdir((path)): + temp_path = os.path.join(path, dir) + for image_file in os.listdir(temp_path): + image = cv2.imread(os.path.join(temp_path,image_file)) + # result = image/255.0 + # cv2.waitKey(1000) + # cv2.destroyAllWindows() + result = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) + X_Single = extract_hog_features_single(result) + predict = Forest.predict(X_Single) # 可以在这里选择分类器的类别 + print(i) + i += 1 + if predict == 0: + print('angry') + elif predict == 1: + print('disgust') + elif predict == 2: + print('fear') + elif predict == 3: + print('happy') + elif predict == 4: + print('neutral') + elif predict == 5: + print('sad') + elif predict == 6: + print('surprise') + + +if __name__ == '__main__': + train_and_infer() diff --git a/demo/face_with_BaseML.py b/demo/face_with_BaseML.py new file mode 100644 index 0000000..4b8acee --- /dev/null +++ b/demo/face_with_BaseML.py @@ -0,0 +1,29 @@ +import os +from re import X +import numpy as np +import cv2 +import matplotlib.pyplot as plt +import pickle +import sklearn +import seaborn +from skimage.feature import hog +from sklearn.metrics import accuracy_score, precision_score, recall_score, confusion_matrix +from scipy.spatial.distance import cdist +from sklearn.model_selection import train_test_split +from BaseML import Classification, Regression + +def Face(): + label2id = {'angry': 0, 'disgust': 1, 'fear': 2, 'happy': 3, 'neutral': 4, 'sad': 5, 'surprise': 6} + data_path =r'../dataset/JAFFE/training_set' + test_path =r'../dataset/JAFFE/testing_set' + + Forest = Classification.cls('RandomForest', n_estimators=180) + Forest.read_data_and_pre(label2id, path=data_path) + Forest.train() + Forest.save() + Forest.inference() + Forest.plot() + Forest.test() + +if __name__ == '__main__': + Face() \ No newline at end of file diff --git a/demo/kmeans.py b/demo/kmeans.py index 94f3d45..f781498 100644 --- a/demo/kmeans.py +++ b/demo/kmeans.py @@ -2,7 +2,7 @@ import numpy as np N_CLUSTERS = 7 # 类簇的数量 -DATA_PATH = 'Downloads/China_cities.csv' # 数据集路径 +DATA_PATH = 'dataset/China_cities.csv' # 数据集路径 def city():