Python----目标检测(PASCAL VOC数据集)

发布于:2025-05-20 ⋅ 阅读:(20) ⋅ 点赞:(0)

一、PASCAL VOC数据集

        PASCAL VOC(Visual Object Classes)数据集是计算机视觉领域中广泛使用的一个 标准数据集,用于目标检测、图像分割、图像分类、动作识别等任务。该数据集由 PASCAL(Pattern Analysis, Statistical Modelling and Computational Learning) 网络主办的年度挑战赛推出,旨在推动视觉对象识别技术的发展。

PASCAL VOC 数据集可以通过官方网站下载,每个版本的图像和标注文件都可以独立获取:

The PASCAL Visual Object Classes Homepage

2012年数据集下载

        2012 年 PASCAL 视觉对象类挑战赛 (VOC2012)

1.1、数据集的版本

        PASCAL VOC 数据集从2005年开始发布,最常用的版本包括2007、2010和2012年 版本。每个版本包含不同数量的图像和注释。

VOC2007:包括5011张训练图像和4952张测试图像,总共9963张图像。包含20 个类别。

VOC2010:图像数量比VOC2007更多,并增加了更多复杂的场景。

VOC2012:进一步增加了数据集的大小和多样性,包含11530张训练和验证图像 (未公开test)。

1.2、数据集类别

PASCAL VOC 数据集包括以下20个类别(其他类、动物类、交通工具类、家具 类):

1. Person(人)

2. Bird(鸟)

3. Cat(猫)

4. Cow(牛)

5. Dog(狗)

6. Horse(马)

7. Sheep(羊)

8. Aeroplane(飞机)

9. Bicycle(自行车)

10. Boat(船)

11. Bus(公共汽车)

12. Car(汽车)

13. Motorbike(摩托车)

14. Train(火车)

15. Bottle(瓶子)

16. Chair(椅子)

17. Dining table(餐桌)

18. Potted plant(盆栽植物)

19. Sofa(沙发)

20. TV/monitor(电视/监视器)

1.3、 PASCAL VOC任务

1. 目标检测:识别图像中的所有目标,并给出每个目标的类别和边界框。

2. 图像分类:给出整幅图像的类别标签。

3. 语义分割:对图像中的每个像素进行分类,标注其所属类别。

4. 动作识别:识别图像中人物的动作类别。

1.3.1、分类/检测图像示例

1.3.2、语义分割

定义:

        语义分割的目标是将图像中的每个像素分类到预定义的类别中,而不区分同一类别中 的不同个体。

特点:

        类别级别分类:每个像素被分配到一个类别,例如,所有的汽车像素被分类为“汽 车”。

        不区分实例:同一类别的不同个体在结果中不区分,例如,图像中所有的汽车像 素都被标记为“汽车”,而不会区分它们属于不同的汽车。

例子:

        在一张包含两只猫和一只狗的图片中,语义分割的结果是将所有猫的像素标记为 “猫”,将狗的像素标记为“狗”,而不会区分两只不同的猫。

应用:

        自动驾驶汽车中的道路和障碍物检测。

        医学图像处理中的组织和器官分割。

1.3.3、实例分割 

定义:

        实例分割的目标是将图像中的每个像素不仅分类到预定义的类别中,还要区分同一类 别中的不同个体。

特点:

        类别级别和实例级别分类:每个像素不仅被分配到一个类别,还被分配到一个实 例,例如,不仅区分“汽车”,还区分每辆不同的汽车。

        区分实例:同一类别的不同个体在结果中被区分开来,例如,图像中两辆不同的 汽车会被标记为“汽车1”和“汽车2”。

例子:

        在一张包含两只猫和一只狗的图片中,实例分割的结果是将两只猫分别标记为“猫1” 和“猫2”,并将狗标记为“狗”。

应用:

        机器人视觉中的对象识别和抓取。

        计算机视觉中的多对象跟踪和分析。

1.4、数据集结构 

PASCAL VOC 数据集的文件结构通常包括以下几个部分:

        JPEGImages:存放所有图像文件,格式为JPEG。

        Annotations:存放图像的标注文件,格式为XML。每个XML文件对应一张图 像,包含图像中每个对象的类别、边界框坐标等信息。

        ImageSets:包含不同任务(如Main、Segmentation、Layout、Action)下的 训练、验证和测试集的划分文件。

                 Main:用于分类和检测任务。

                Segmentation:用于分割任务。

                Layout:用于物体布局任务。

                Action:用于动作识别任务。

1.5、标注文件示例

<annotation>  
    <!-- 文件夹名称 -->  
    <folder>VOC2012</folder>  
    <!-- 图像文件名 -->  
    <filename>2007_000033.jpg</filename>  
    <!-- 图像来源信息 -->  
    <source>  
        <database>The VOC2007 Database</database> <!-- 数据库名称 -->  
        <annotation>PASCAL VOC2007</annotation> <!-- 数据集名称 -->  
        <image>flickr</image> <!-- 图像来源平台 -->  
    </source>  
    <!-- 图像尺寸信息 -->  
    <size>  
        <width>500</width> <!-- 图像宽度 -->  
        <height>366</height> <!-- 图像高度 -->  
        <depth>3</depth> <!-- 图像深度(RGB三通道) -->  
    </size>  
    <!-- 是否进行过分割,1表示是 -->  
    <segmented>1</segmented>  
    
    <!-- 第一个对象(飞机) -->  
    <object>  
        <name>aeroplane</name> <!-- 对象类别:飞机 -->  
        <pose>Unspecified</pose> <!-- 姿态:未指定 -->  
        <truncated>0</truncated> <!-- 未截断 -->  
        <difficult>0</difficult> <!-- 不是难以识别的对象 -->  
        <bndbox>  
            <xmin>9</xmin> <!-- 边界框左上角X坐标 -->  
            <ymin>107</ymin> <!-- 边界框左上角Y坐标 -->  
            <xmax>499</xmax> <!-- 边界框右下角X坐标 -->  
            <ymax>263</ymax> <!-- 边界框右下角Y坐标 -->  
        </bndbox>  
    </object>  

    <!-- 第二个对象(飞机) -->  
    <object>  
        <name>aeroplane</name> <!-- 对象类别:飞机 -->  
        <pose>Left</pose> <!-- 姿态:向左 -->  
        <truncated>0</truncated> <!-- 未截断 -->  
        <difficult>0</difficult> <!-- 不是难以识别的对象 -->  
        <bndbox>  
            <xmin>421</xmin> <!-- 边界框左上角X坐标 -->  
            <ymin>200</ymin> <!-- 边界框左上角Y坐标 -->  
            <xmax>482</xmax> <!-- 边界框右下角X坐标 -->  
            <ymax>226</ymax> <!-- 边界框右下角Y坐标 -->  
        </bndbox>  
    </object>  
    
    <!-- 第三个对象(飞机,部分被截断) -->  
    <object>  
        <name>aeroplane</name> <!-- 对象类别:飞机 -->  
        <pose>Left</pose> <!-- 姿态:向左 -->  
        <truncated>1</truncated> <!-- 被截断 -->  
        <difficult>0</difficult> <!-- 不是难以识别的对象 -->  
        <bndbox>  
            <xmin>325</xmin> <!-- 边界框左上角X坐标 -->  
            <ymin>188</ymin> <!-- 边界框左上角Y坐标 -->  
            <xmax>411</xmax> <!-- 边界框右下角X坐标 -->  
            <ymax>223</ymax> <!-- 边界框右下角Y坐标 -->  
        </bndbox>  
    </object>  
</annotation>  

网站公告

今日签到

点亮在社区的每一天
去签到