近期在学习迁移学习的相关内容,在网上参考了很多人的博客,深受启发。也想把自己得到的收获写出来,希望能给其他人带来一些收获。
主要分为以下三个部分:
1)数据的预处理
我选择将自己的图像文件转为h5格式,下面将代码贴出。
import h5py
import skimage
import PIL
import numpy as np
import os
import json
import cv2
import matplotlib.pyplot as plt
import random
def h5py_to_file(path_train_x, path_train_y):
'''
函数功能,将图片转为h5格式,path_train_y是根据图像分类生成的json文件,文件格式为[{"image_id": "1.jpg","classes":1},{"image_id": "2.jpg","classes":2}]
'''
# 定义两个存放train_x,train_y的列表
train_x = []
train_y = []
# 打开json文件
with open(path_train_y, 'r') as f:
label_file = json.load(f)
# 利用循环,读取json文件的
for i in range(len(label_file)):
disease_class = label_file[i]["classes"]
disease_name = label_file[i]["image_id"]
train_y.append(disease_class)
train_x_path = os.path.join(path_train_x, disease_name)
print(train_x_path)
# 修改图片大小
train_x_image = cv2.resize(cv2.imdecode(np.fromfile(train_x_path, dtype=np.uint8), cv2.IMREAD_COLOR),