ResNet-50 训练猫狗分类

ResNet-50 训练猫狗分类


这里介绍一下怎么搭建ResNet网络,并说明一下残差网络的结构,并使用ResNet来训练一个二分类问题

1.ResNet网络

对于ResNet网络的讲解可以参考这个链接(https://blog.csdn.net/koala_tree/article/details/78583979)这里说的已经很清楚了,对于视频讲解可以到网易云课堂里面搜索吴恩达的《深度学习工程师》微专业课程
使用tf2的keras代码

2.猫狗数据

猫狗图片数据可以在这里下载cats and dogs
提取码:uve0

下载后解压,然后解压里面的 train.zip 加压后的图片为猫狗图片,命名规则为cat.num.jpg,dog.num.jpg,可以将train目录更名为train_total,然后执行脚本allocation_picture.py
将数据集分为train,val,test

3.训练

运行训练脚本脚本train.py,训练模型
其中

# 训练集
train_dir = "datasets/train"
# 验证集
val_dir = "datasets/val"
# 批次大小
batch_size = 2048
# 输入图片大小
image_size = 224
# 加载数据集为 Dataset
def load_image(path, batch, size):
    def _decode_and_resize(filename, label):
    	# 读取文件
        image_string = tf.io.read_file(filename)
        # 解码图片为jpeg
        image = tf.image.decode_jpeg(image_string)
        # 数据增强 左右随机增强
        image = tf.image.random_flip_left_right(image)
        # 数据增强
        image = tf.image.random_contrast(image, lower=0.8, upper=1.2)
        image = tf.image.random_saturation(image, lower=0.8, upper=1.2)
        # resize 图片,保持原图比例
        image_resized = tf.image.resize_with_pad(image, size, size) / 255.0
        return image_resized, label

    cats_dir = path + "/cat/"
    dogs_dir = path + "/dog/"

    cat_filenames = tf.constant([cats_dir + filename for filename in os.listdir(cats_dir)])
    dog_filenames = tf.constant([dogs_dir + filename for filename in os.listdir(dogs_dir)])
    filenames = tf.concat([cat_filenames, dog_filenames], axis=-1)
    labels = tf.concat([
        tf.zeros(cat_filenames.shape, dtype=tf.int32),
        tf.ones(dog_filenames.shape, dtype=tf.int32)],
        axis=-1)

    datasets = tf.data.Dataset.from_tensor_slices((filenames, labels))
    datasets = datasets.map(
        map_func=_decode_and_resize,
        num_parallel_calls=tf.data.experimental.AUTOTUNE)

    datasets = datasets.shuffle(buffer_size=batch * 100)
    datasets = datasets.batch(batch)
    datasets = datasets.prefetch(tf.data.experimental.AUTOTUNE)

    return datasets

4.测试

模型训练完后,计算 accuracy, recall,precision

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值