作业所需数据 akti
作业参考答案
作业要求
本次作业是一个图像识别任务,要将所给的食物图片分类,共有十一种,图片对应的食物编号在图片名字的前缀上。本此作业需要用到的是卷积神经网络cnn,以pytorch实现,由于任务较简单,所以使用的网络结构并不复杂。
数据处理
先总结一下对数据的处理步骤。
读取文件,提取标签
def readfile(path, label):
# label 是一個 boolean variable,代表需不需要回傳 y 值
image_dir = sorted(os.listdir(path))
x = np.zeros((len(image_dir), 128, 128, 3), dtype=np.uint8)
y = np.zeros((len(image_dir)), dtype=np.uint8)
for i, file in enumerate(image_dir):
img = cv2.imread(os.path.join(path, file))
x[i, :, :] = cv2.resize(img,(128, 128))
if label:
y[i] = int(file.split("_")[0])
if label:
return x, y
else:
return x
数据增强,对图片随机翻转,旋转。
train_transform = transforms.Compose([
transforms.ToPILImage(),
transforms.RandomHorizontalFlip(), #隨機將圖片水平翻轉
transforms.RandomRotation(15