keras示例-Image classification from scratch猫狗二分类

Image classification from scratch

介绍

此示例显示了如何从磁盘上的JPEG图像文件开始从头开始图像分类,而无需利用预先训练的权重或预先构建的Keras应用程序模型。我们在Kaggle Cats vs Dogs二进制分类数据集中展示了工作流程。

我们使用该image_dataset_from_directory实用程序生成数据集,并使用Keras图像预处理层进行图像标准化和数据增强。

设置

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

加载数据:“猫与狗”数据集

原始数据下载
首先,让我们下载原始数据的786M ZIP归档文件:
curl是在linux上的命令行工具,用在http很好用

!curl -O https://download.microsoft.com/download/3/E/1/3E1C3F21-ECDB-4869-8368-6DEBA77B919F/kagglecatsanddogs_3367a.zip
!unzip -q kagglecatsanddogs_3367a.zip
!ls

现在我们有一个PetImages包含两个子文件夹的文件夹,Cat和Dog。每个子文件夹包含每个类别的图像文件。

!ls PetImages
Cat  Dog

筛选出损坏的图像

当使用大量真实世界的图像数据时,损坏的图像是经常发生的情况。让我们过滤掉标题中不包含字符串“ JFIF”的错误编码的图像。

import os

num_skipped = 0
for folder_name in ("Cat", "Dog"):
    folder_path = os.path.join("PetImages", folder_name)
    for fname in os.listdir(folder_path):
        fpath = os.path.join(folder_path, fname)
        try:
            fobj = open(fpath, "rb")
            is_jfif = tf.compat.as_bytes("JFIF") in fobj.peek(10)
        finally:
            fobj.close()

        if not is_jfif:
            num_skipped += 1
            # Delete corrupted image
            os.remove(fpath)

print("Deleted %d images" % num_skipped)
Deleted 1590 images

产生一个 Dataset

image_size = (180, 180)
batch_size = 32

train_ds = tf.keras.preprocessing.image_dataset_from_directory(
    "PetImages",
    validation_split=0.2,
    subset="training",
    seed=1337,
    image_size=image_size,
    batch_size=batch_size,
)
val_ds 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值