当前位置: 首页 > article >正文

CUB-200-2011数据集及该格式自己数据集制作

CUB-200-2011

CUB-200-2011是一个用于鸟类图像分类的知名数据集,全称是"Caltech-UCSD Birds-200-2011"。它由加州理工学院和加州大学圣地亚哥分校联合创建,主要用于研究细粒度图像分类问题。

CUB-200-2011数据集的特点包括:

  1. 种类丰富:数据集包含200种不同种类的鸟类,每种鸟类的图像数量大致相等。

  2. 数据量大:整个数据集中有11,788张图像,其中训练集有5,994张图像,测试集有5,794张图像。

  3. 细粒度标注:除了类别标签外,数据集还提供了鸟类的多个细粒度标注信息,包括15个关键点(如嘴、眼睛、翅膀等)、312个二值属性(如颜色、形状等)和鸟类所在的边界框。

  4. 挑战性:由于图像的细粒度特征,CUB-200-2011是一个非常具有挑战性的数据集,常用于测试和评估细粒度分类算法的性能。

这个数据集广泛应用于计算机视觉研究中,特别是在深度学习的图像分类、物体检测以及领域适应等任务中。

如何制作自己的CUB-200-2011格式的数据集

制作一个类似于CUB-200-2011格式的数据集,需要遵循该数据集的基本结构和标注格式。以下是一个基本的步骤指南:

1. 收集图像数据
   - 收集目标类别的图像。确保图像数量足够,并且每个类别的图像分布相对均匀。
   - 对于每个类别,建立一个文件夹,以便管理图像。

2. 准备数据集目录结构
   CUB-200-2011的数据集结构通常如下:

dataset/
├── images/
│   ├── class_001/
│   │   ├── image_001.jpg
│   │   ├── image_002.jpg
│   ├── class_002/
│   │   ├── image_001.jpg
│   │   ├── image_002.jpg
├── images.txt
├── image_class_labels.txt
├── train_test_split.txt
├── bounding_boxes.txt (可选)
├── parts/
│   ├── part_locs.txt (可选)
├── attributes/
│   ├── attributes.txt (可选)

3. 生成文件标注
   你需要为数据集生成以下几个文件:

  -images.txt: 包含每张图像的编号和相对路径,例如:

1 001.image_001.jpg
2 001.image_002.jpg
...

   
   - image_class_labels.txt: 包含图像编号和类别标签,例如:
   

1 1
2 1
...

  
   - train_test_split.txt: 指定图像是用于训练还是测试的文件,例如:
  

1 1
2 0
...


     其中1表示训练,0表示测试。

   - **bounding_boxes.txt (可选)**: 如果你想为图像提供边界框信息,可以生成这个文件。每行格式为:
     ```
     image_id x_min y_min width height
     ```

   - **parts/part_locs.txt (可选)**: 如果你有关键点标注信息,可以生成这个文件。每行格式为:
     ```
     image_id part_id x y visible
     ```
     其中`visible`为0或1,表示该关键点是否可见。

   - **attributes/attributes.txt (可选)**: 如果你有属性标注,可以在这里指定每张图像的属性。格式为:
     ```
     image_id attribute_id is_present certainty_time visible
     ```

### 4. **划分训练和测试集**
   使用`train_test_split.txt`来指定哪些图像用于训练,哪些用于测试。你可以按类别、随机或其他策略进行划分。

### 5. **验证数据集**
   在完成数据集构建后,确保检查所有文件的格式和内容是否正确,路径是否一致,标注信息是否准确。

### 6. **使用数据集**
   你可以像使用CUB-200-2011一样加载和使用这个自制的数据集,通常需要自定义数据加载器或使用现有的工具(如PyTorch、TensorFlow等)进行数据预处理。

这样,你就可以创建一个类似于CUB-200-2011格式的数据集,用于自己的研究或项目中。

如何完成数据集的标注呢

数据集标注是创建高质量数据集的关键步骤,包括图像分类标签、边界框、关键点、属性等。以下是如何完成这些标注的详细步骤:

### 1. **图像分类标签标注**
   - **工具**: 可以使用LabelImg、LabelMe、CVAT、VGG Image Annotator (VIA)等工具。
   - **过程**:
     1. 为每个类别创建相应的文件夹。
     2. 将属于该类别的图像放入对应的文件夹中。
     3. 使用脚本生成`images.txt`和`image_class_labels.txt`文件。

### 2. **边界框标注**
   - **工具**: LabelImg、CVAT、VIA等工具支持手动绘制边界框。
   - **过程**:
     1. 打开标注工具并加载图像。
     2. 使用工具中的矩形标注功能手动绘制边界框,覆盖目标对象。
     3. 为每个标注保存其对应的坐标信息(x_min, y_min, width, height)。
     4. 导出标注数据,生成`bounding_boxes.txt`文件,格式如下:
        ```
        image_id x_min y_min width height
        ```

### 3. **关键点标注**
   - **工具**: CVAT、VIA等支持关键点标注的工具。
   - **过程**:
     1. 加载图像并选择关键点标注工具。
     2. 为每个图像中的目标对象标注所需的关键点(如眼睛、嘴巴、翅膀等)。
     3. 记录每个关键点的坐标,并标记其是否可见。
     4. 导出标注数据,生成`parts/part_locs.txt`文件,格式如下:
        ```
        image_id part_id x y visible
        ```

### 4. **属性标注**
   - **工具**: VIA等支持属性标注的工具。
   - **过程**:
     1. 为每张图像或对象分配属性(如颜色、形状、纹理等)。
     2. 使用工具的属性标注功能为每个对象标注相应的属性。
     3. 记录每个属性的值,并生成`attributes/attributes.txt`文件,格式如下:
        ```
        image_id attribute_id is_present certainty visible
        ```

### 5. **自动化标注**
   - **预训练模型**: 可以使用预训练的深度学习模型(如YOLO、Faster R-CNN等)进行自动标注,尤其是边界框和关键点标注。
   - **流程**:
     1. 训练或使用现有的模型对你的数据进行预测。
     2. 根据预测结果生成标注文件,手动检查并纠正错误。
     3. 将最终标注保存到对应的文件中。

### 6. **标注质量控制**
   - **多次检查**: 手动检查标注结果,确保没有漏标、错标。
   - **交叉验证**: 如果团队中有多个人进行标注,可以进行交叉检查以提高标注质量。
   - **标注一致性**: 确保不同标注人员的标准一致,可以通过制定详细的标注指南来实现。

### 7. **生成最终数据集**
   - 将所有标注信息与图像数据整理好,并按照CUB-200-2011的数据结构格式生成最终数据集。
   - 通过脚本或手动方式整合标注文件,确保路径和标注信息的正确性。

通过这些步骤,你可以创建一个高质量、细粒度的标注数据集,类似于CUB-200-2011。


http://www.kler.cn/a/294074.html

相关文章:

  • 图像处理之cornerdetection(角点检测)综述
  • 数字孪生乡村:数字乡村智慧化营建思路
  • 云原生周刊:Istio 1.24.0 正式发布
  • Ceph的pool有两种类型
  • 机器学习、深度学习面试知识点汇总
  • 服务jar包增加高斯数据库驱动jar包
  • 好用的AI编程助手MarsCode[豆包]
  • 分类预测|基于CNN-LSTM-Attention卷积-长短时记忆-注意力数据分类Matlab程序 直接运行程序或替换数据集运行程序
  • 基于IMX6ULL的Cortex-A中断原理讲解,以及编写其中断向量表
  • 算法图解(8~10贪心,动态规划,K最近邻算法)
  • 代码随想录训练营day36|1049.最后一块石头的重量II,494.目标和,474.一和零
  • WEB服务与虚拟主机/IIS中间件部署
  • 【kafka】在Linux系统中部署配置Kafka的详细用法教程分享
  • Leetcode面试经典150题-210.课程表II
  • 如何让linux程序在后台执行
  • CSP-J 之C++常用英文缩写
  • 【亲测有效】nginx负载均衡指定ip端口转发,做自动切换
  • 用Python实现时间序列模型实战——Day 13: 自回归条件异方差模型 (ARCH/GARCH)
  • 《深度学习》OpenCV轮廓检测 轮廓近似 解析及实现
  • Linux date命令 日期格式化与计算
  • VScode 的下载安装及常见插件 + Git的下载和安装
  • 2024年四川省安全员A证证考试题库及四川省安全员A证试题解析
  • 数据结构(1)数据结构基础(单向链表)
  • 双雄并肩:Tesla P40 GTX 1650 AI工作站搭建指南
  • redis之缓存淘汰策略
  • Keysight U8031A DC power supply