The Oxford-IIIT Pet Dataset-宠物图片(分割)数据集

We have created a 37 category pet dataset with roughly 200 images for each class. The images have a large variations in scale, pose and lighting. All images have an associated ground truth annotation of breed, head ROI, and pixel level trimap segmentation.

我们已经创建了一个37类pet数据集,每个类大约有200个图像。这些图像在比例、姿势和照明方面都有很大的变化。所有的图像都有一个相关的基本真相注释品种,头部ROI,和像素级trimap分割。

大家可以到官网地址下载数据集,我自己也在百度网盘分享了一份。可关注本人公众号,回复“2020081303”获取下载链接。

 


 

只要自己有时间,都尽量写写文章,与大家交流分享。

本人公众号:

CSDN博客地址:https://blog.csdn.net/ispeasant

 

### 使用 Oxford-IIIT Pet Dataset 构建图像分类模型 为了构建基于Oxford-IIIT Pet Dataset的图像分类模型,可以采用TensorFlow框架来加载并处理数据集。此数据集中包含了多种不同种类的宠物图片,非常适合用于训练多类别分类器。 #### 数据准备 首先需要安装`tensorflow-datasets`库以便于获取所需的数据源: ```bash pip install tensorflow_datasets ``` 接着通过Python脚本导入必要的模块,并下载指定版本的数据集: ```python import tensorflow as tf import tensorflow_datasets as tfds dataset, info = tfds.load('oxford_iiit_pet:3.*.*', with_info=True) train_dataset = dataset['train'] test_dataset = dataset['test'] ``` 上述代码片段会自动从网络上拉取最新的可用版本(至少为3.0.0),其中不仅包含原始RGB格式的照片文件,还包括了额外的信息如标注边界框等辅助材料[^2]。 #### 预处理函数定义 由于原始尺寸不统一,在实际操作前还需对输入样本做标准化调整;这里提供了一个简单的预处理方法供参考: ```python def preprocess(image, label): image = tf.cast(image, tf.float32) image = (image / 127.5) - 1 image = tf.image.resize(image, (128, 128)) return image, label ``` 这段程序实现了将像素值范围映射到[-1, 1]区间内,并重设分辨率为固定大小的操作,有助于提高后续计算效率的同时也利于保持各批次间的一致性。 #### 创建批处理迭代器 为了让GPU能够更高效地执行批量矩阵运算,通常建议设置合理的batch size参数以平衡内存占用率与收敛速度之间的关系: ```python BATCH_SIZE = 64 BUFFER_SIZE = 1000 train_batches = train_dataset.map(preprocess).cache().shuffle(BUFFER_SIZE).batch(BATCH_SIZE).prefetch(buffer_size=tf.data.experimental.AUTOTUNE) validation_batches = test_dataset.map(preprocess).batch(BATCH_SIZE) ``` 此处采用了缓存(cache),随机打乱(shuffle),分组(batching)以及提前读取(prefetching)等一系列优化措施来加速整个流程运行时间。 #### 模型搭建 考虑到目标是解决一个多类别的识别问题,可以选择卷积神经网络(Convolutional Neural Networks,CNNs)作为基础架构来进行特征提取工作。下面给出了一种较为常见的设计方案——MobileNetV2迁移学习方案的应用实例: ```python IMG_SHAPE = (128, 128, 3) base_model = tf.keras.applications.MobileNetV2(input_shape=IMG_SHAPE, include_top=False, weights='imagenet') base_model.trainable = False global_average_layer = tf.keras.layers.GlobalAveragePooling2D() prediction_layer = tf.keras.layers.Dense(37, activation="softmax") model = tf.keras.Sequential([ base_model, global_average_layer, prediction_layer ]) ``` 在此基础上,已经预先训练好的MobileNetV2被冻结其内部权重更新权限(`trainable=False`),仅保留顶层结构部分参与反向传播过程中的梯度下降调节活动。这样做既节省了大量的计算资源开销又能在一定程度上防止过拟合现象的发生。 #### 编译和训练模型 最后一步就是配置损失函数(loss function),评估指标(evaluation metrics)等相关超参设定项,并启动正式的学习周期循环直至达到预期性能水平为止: ```python base_learning_rate = 0.0001 model.compile(optimizer=tf.keras.optimizers.Adam(lr=base_learning_rate), loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) initial_epochs = 10 history = model.fit(train_batches, epochs=initial_epochs, validation_data=validation_batches) ``` 经过一段时间耐心等待之后,应该就能得到一个初步具备泛化能力的预测工具啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不务正业的猿

谢谢您的支持与鼓励!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值