import os
import cv2
from DeepFace import functions,analyze
from keras.callbacks import ModelCheckpoint
import numpy as np
from sklearn import metrics
import tensorflow as tf
from sklearn.utils.class_weight import compute_class_weight, compute_sample_weight
tf_version = int(tf.__version__.split(".")[0])
print('tf_version:',tf_version)
if tf_version == 1:
import keras
from keras.models import Model, Sequential
from keras.layers import Conv2D, MaxPooling2D, AveragePooling2D, Flatten, Dense, Dropout
from keras.optimizers import SGD
from keras.preprocessing.image import ImageDataGenerator
elif tf_version == 2:
from tensorflow import keras
from tensorflow.keras.models import Model, Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, AveragePooling2D, Flatten, Dense, Dropout
from tensorflow.keras.optimizers import SGD
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.applications.resnet import ResNet50
# num_classes = 7
model = ResNet50(weights=None,classes=7)
#
def get_img(img_paths, img_size):
X = np.zeros((len(img_paths),img_size,img_size,3),dtype=np.uint8)
labellist = []
i = 0
for img_path in img_paths:
img = cv2.imread(img_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = cv2.resize(img,(img_size,img_size),interpolation=cv2.INTER_AREA)
X[i,:,:,:] = img
i += 1
return label,X
def get_X_batch(X_paths,labels, batch_size, img_size):
while 1:
for i in range(0, len(X_paths), batch_size):
X = get_img(X_paths[i:i+batch_size], img_size)
label = labels[i:i+batch_size]
yield label,X
##########################################计算样本权重
root_path = 'dataset/train/'
filelist = []
labellist = []
for root, dirs, files in os.walk(root_path, topdown=False):
for name in files:
filepath = os.path.join(root, name)
label = root.split('/')[2][0]
filelist.append(filepath)
labellist.append(label)
# print(filelist)
iterbatch = get_X_batch(filelist,labellist,32,224)
label,images = next(iterbatch)
print(label,images)
tensorflow生成器读取图像数据
最新推荐文章于 2022-07-28 23:20:40 发布