【图像分类】基于Pascal VOC2012增强数据的多标签图像分类实战

VOC2007与VOC2012数据集百度云下载指南及使用场景解析 本文提供了VOC2007与VOC2012数据集的百度云下载链接与详细使用指南。作为计算机视觉领域的经典数据集,VOC是目标检测、图像分类和语义分割等任务的核心基准,尤其适合算法学习与验证。文章还分享了数据整合、环境配置及模型训练的最佳实践与避坑技巧。 阅读详情

接着上一次的多标签分类综述,本文主要以Pascal VOC2012增强数据集进行多标签图像分类训练,详细介绍增强数据集制作、训练以及指标计算过程,并通过代码进行详细阐述,希望能为大家提供一定的帮助!

作者&编辑 | 郭冰洋

上一期多标签图像分类文章,也是本文的基础,点击可以阅读:【技术综述】多标签图像分类综述

1 简介

基于image-level的弱监督图像语义分割大多数以传统分类网络作为基础,从分类网络中提取物体的位置信息,作为初始标注。

Pascal VOC2012的原始分割数据集仅包含1464个train图片和1449张val图片(共2913张),对于分类网络来说其数据量过小。而benchmark_RELEASE分割数据集包括8498张train图片和2857张val图片(共11355张)。因此,许多论文中均选择使用二者融合后的增强数据集。

近期在复现论文过程中发现,使用增强数据集进行多标签分类时,某些图片缺少对应的标记,需要对照原始Pascal VOC2012数据集的标注方法,重新获取各类物体的标注信息,并完成多标签分类任务以及相应的指标评价。现将相关细节和部分代码进行解读,以帮助大家理解多标签分类的流程和相关注意事项。

2 Pascal VOC2012数据集介绍

Pascal VOC2012数据集包括五个文件夹:

1、Annotation:存放xml格式的标注信息

2、JPEGImages:存放所有图片,包括训练图片和测试图片

3、SegmentationClass:语义分割任务中用到的label图片

4、SegmentationObject:实例分割任务用到的label图片

5、ImageSets:存放每一种任务对应的数据,其又划分为四个文件夹

(1) Action:存放人体动作的txt文件

(2) Layout:存放人体部位的txt文件

(3) Main:存放类别信息的txt文件

(4) Segmentation:存放分割训练的txt文件

本次实战是关于图片多标签分类任务的介绍,因此主要关注的为Annotation文件夹和ImageSets下的Main文件夹。

Main文件夹中包含了20类物体的训练、验证标签文件,其命名格式为class_train.txt、class_trainval.txt或class_val.txt。其中,每个txt文件中均包含对应的标记信息,若图中存在对应标签,则为1,反之则为-1

3 benchmark_RELEAS数据集介绍

benchmark_RELEASE数据集包括两个文件夹:

1、benchmark_code_RELEASE:相关评价指标的matlab文件

2、dataset:包括cls、img、inst三个文件夹和train.txt、val.txt两个文件

(1) cls:语义分割的mat标注文件

(2) img:分割图像

(3) inst:实例分割的mat标注文件

mat格式为matlab文件的一种,其中文件中主要包含了物体的类别、边界、分割标注三类信息。

4 增强数据集介绍

所谓增强数据集,共包含两个步骤:

1、将上述两个数据集中的语义分割训练数据进行融合并剔除重复部分。即将"/benchmark_RELEASE/dataset/"路径下的train和val文件与"/ImageSets/Segmentation/"路径下的train和val文件进行融合,获取最终的train.txt和val.txt文件,共12031个数据(8829+3202)。代码及注释如下(为了清晰展示步骤,将函数拆分,直接进行了书写):

import os

from os.path import join as pjoin

import collectionsimport numpy as np

# PascalVOC2012路径

voc_path = '/VOC/VOCdevkit/VOC2012/'

# benchmark_RELEASE路径

sbd_path = '/VOC/benchmark_RELEASE/'

# 构建内置字典,用于存放train、val、trainval数据

files = collections.defaultdict(list)

# 填充files

for split in ["train", "val", "trainval"]:    

# 获取原始txt文件    

      path = pjoin(voc_path, 

      "ImageSets/Segmentation", split + ".txt") 

    # 以元组形式打开文件     

      file_list = tuple(open(path, "r"))    

    # rstrip清除换行符号/n,并构成列表    

      file_list = [id_.rstrip() for id_ in file_list]    

    # 不同阶段对应不同列表    

      files[split] = file_list

# benchmark_RELEASE的train文件获取

path = pjoin(sbd_path, "dataset/train.txt")

sbd_train_list = tuple(open(path, "r"))

sbd_train_list = [id_.rstrip() for id_ in sbd_train_list]

# benchmark_RELEASE与Pascal VOC2012训练数据融合

train_aug = files["train"] + sbd_train_list

# 清除重复数据

train_aug = [train_aug[i] 

for i in sorted(np.unique(train_aug,

return_index=True)[1])]

# 获取最终train数据files["train_aug"] = train_aug

# benchmark_RELEASE的val文件获取

path = pjoin(sbd_path, "dataset/val.txt")

sbd_val_list = tuple(open(path, "r"))

sbd_val_list = [id_.rstrip() for id_ in sbd_val_list]

# benchmark_RELEASE与Pascal VOC2012训练数据融合

val_aug = files["val"] + sbd_val_list

# 清除重复数据

val_aug = [val_aug[i] 

for i in sorted(np.unique(val_aug, return_index=True)[1])]

# 清除val中与train数据重复的内容

set_diff = set(val_aug) - set(train_aug)

files["train_aug_val"] = list(set_diff)

2、将"/benchmark_RELEASE/dataset/cls"下mat格式的语义标签解析成图片,并与SegmentationClass文件夹下的图片进行融合。此部分代码可参考下述网址中的setup_annotation模块。

https://github.com/meetshah1995/pytorchsemseg/blob/master/ptsemseg/loader/pascal_voc_loader.py

至此,增强数据集的train.txt、val.txt以及分割标注图片均已获得,可以愉快地用更大容量的数据集进行训练啦!

5 标签文件制作

前一小节主要介绍了Pascal VOC2012数据集的文件夹构成,在ImageSets/Main文件夹下包含了20类物体的标注文档,包括train、val和trainval三种划分。我们打开aeroplane_train.txt文档可以看到,共有5717个训练数据,每个图像名称后面均对应了1或者-1,其中1表示图片中存在该类别的物体,-1则表示图片中不存在该类别的物体。增强数据集的train.txt和val.txt文件并没有各类别的标注信息,因此,我们需要仿照原有的格式,构建每个类别的标注文档。

Annotation文件夹下包含了所有图片标注信息的xml格式文件,其中<name>子项目下代表途中的类别信息。打开其中的一个xml文件我们可以看到,一个图中包含了多个类别信息,其中还有重复项,即图中存在相同类别的物体。我的思路是遍历train.txt和val.txt文档中每个图片对应的xml文件,获取其中的类别信息,然后判定类别信息是否包含当前类别,若包含则赋值1,反之赋值-1。对20个类别进行循环后,即可获得相应的标注文档。

接下来我将以训练标注文档的制作为展示,拆分步骤并结合代码进行详细的描述。

步骤1:读取train.txt文件获取训练图片

# 获取训练txt文件

def _GetImageSet():    

        # txt路径   

        image_set_path = '/train.txt'    

        with open(image_set_path, 'r') as f:        

            return [line.split()[0] for line in f.readlines()]

# 训练图片合集

img_set = _GetImageSet()

步骤2:读取对应的xml文件

# xml标注文件路径 

annotation='/VOC/VOCdevkit/VOC2012/Annotations' 

# 构建xml列表 

xml = [] 

for img in img_set:    

        xml_path = os.path.join(annotation,img + '.xml')   

        xml.append(xml_path)

步骤3:根据xml中的<name>项,判定图片中是否存在该类别。读取<name>项之后,一定通过set()函数,清除其中的重复类别名称,否则会出现标签重复的情况

# 类别 

VOC_CLASSES = ['aeroplane', 'bicycle', 'bird', 'boat','bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse','motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor'] 

for x in xml:    

    # 获取每个name的地址     

    elem_list = minidom.parse(x).

                      getElementsByTagName('name')

    name = []    

    # 读取每个地址的内容    

     for elem in elem_list:         

                cat_name = elem.firstChild.data         

                # 获取name         

                name.append(cat_name)    

        # 删除重复标记    

        name = list(set(name))    

        # 根据类别写入标签文件    

        for cls in VOC_CLASSES:        

                txt = '/gt/%s_train.txt' % cls        

                if cls in name:            

                        file_write_obj = open(txt, 'a')            

                        gt = x[-15:-4] + ' ' +' '+ '1'            

                        file_write_obj.writelines(gt)            

                        file_write_obj.write('\n')        

                else:            

                        file_write_obj = open(txt, 'a')            

                        gt = x[-15:-4] + ' '  + '-1'            

                        file_write_obj.writelines(gt)           

                        file_write_obj.write('\n')

通过以上三个步骤,就可以生成train.txt在20个类别下的标注文档。标签文件的制作是为了后续计算相应的评价指标,以更好的评价分类网络的性能。

6 增强数据集多标签文件制作

根据标签文件的制作,我们已经获取图片在每个类别下对应标签,如何将其转化成对应的矩阵形式,是我们的下一步工作。

在多标签分类任务中,我们可以构建一个1x20的矩阵作为图片的标签,其中对应的类别若存在,则置1,反之则置0。例如,如果图片中含有aeroplane和bicycle两个类别,其对应的标签矩阵应该为[1,1,......,0,0]。同样的,我们仍然可以根据xml文件信息,进行矩阵的搭建。

在本节中,我仍将通过步骤拆分,结合代码展示这一过程。

准备工作:设置文件夹名称,类别信息名称及其对应的数字

# 图片文件夹 

IMG_FOLDER_NAME = "JPEGImages" 

# 标签文件夹 

ANNOT_FOLDER_NAME = "Annotations" 

# 标签名称(不含背景) 

CAT_LIST = ['aeroplane', 'bicycle', 'bird', 'boat','bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse','motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor'] 

# 标签转换为数字 

CAT_NAME_TO_NUM = /

    dict(zip(CAT_LIST,range(len(CAT_LIST))))

步骤1:构建单张图片对应的标签矩阵

# 从xml文件中读取图片标签 

def load_image_label_from_xml(img, voc12_root):    

        # 获取xml中的name项      

        el_list=minidom.parse(os.path.join(voc12_root,

        ANNOT_FOLDER_NAME,img + '.xml'))

        .getElementsByTagName('name')    

        # 构建标签空矩阵    

        multi_cls_lab = np.zeros((20), np.float32)   

        # 对xml中的name项进行操作    

        for el in el_list:        

                # 读取name        

                cat_name = el.firstChild.data        

                if cat_name in CAT_LIST:           

                # 转换为数字标签            

                    cat_num =/

                        CAT_NAME_TO_NUM[cat_name]            

                        # 将标签矩阵中对应的位置赋1            

                    multi_cls_lab[cat_num] = 1.0    

        # 返回标签矩阵    

        return multi_cls_lab

步骤2:遍历所有的图片,生成对应的标签矩阵

# 从.txt文件中载入所有xml文件对应的标签 

def load_image_label_list_from_xml(img_name_list, voc12_root):    

        # 返回所有标签矩阵    

       return [load_image_label_from_xml(img_name, voc12_root) for img_name in img_name_list]

步骤3:生成含有所有标签矩阵的npy文件

# 加载图片list 

def load_img_name_list(dataset_path):    

        # 获取.txt文件中的图片(含png和jpg,以及路径文件)  

        img_gt_name_list = /

            open(dataset_path).read().splitlines()    

        # 读取图片名字    

        img_name_list = /

        [img_gt_name.split(' ')[0][-15:-4] 

        for img_gt_name in img_gt_name_list]     

        # 返回值   

        return img_name_list 

# 获取训练图片列表 

img_name_list = load_img_name_list(args.train_list) 

# 获取标签列表 

label_list=load_image_label_list_from_xml(img_name_list,args.voc12_root) 

# 通过字典保存图片及其对应的标签 

d = dict() 

for img, lbl in zip(img_name_list, label_list):    

    d[img_name] = label 

# 保存文件 

np.save(args.out, d)

至此,所有的标签矩阵便构建完成了。

7 评价指标计算

多标签图像分类网络的性能需要根据平均准确率精度(mAP)来进行分析,而平均精度准确率均值需要先对每个类别的平均准确率进行计算。

results = 

{‘aeroplane’:{‘2007_000032’:[0.7,0.8,......0.9],

                        ......

                        '2011_003276':[1.2,0.8,......0.3]}

    ......

  'tvmonitor':{‘2007_000032’:[0.1,-0.8,......0.2],

                        ......

                        '2011_003276':[1.1,0.4,......0.8]}}

随后我们载入每个图像对应的类别标签,具体形式如下:

ground_truth = 

{‘aeroplane’:{‘2007_000032’:[0,1,......0],

                        ......

                        '2011_003276':[1,0,......1]}

    ......

  'tvmonitor':{‘2007_000032’:[1,0,......0],

                        ......

                        '2011_003276':[1,0,......1]}}

通过上述两个集合,我们可以分别计算每个类别的平均准确率,计算平均准确率的方法Pascal VOC官方已经给出,可以参照具体标准进行计算。具体代码如下:

# 每个类别的计算

def EvaluateClass(self, cls, cls_results):

计算出每个类别的平均准确率后,则对所有类别的平均准确率求均值即可求得mAP值,在python代码中可以直接使用mean函数实现。

8 训练细节

在进行训练前需要注意一点,数据读取时我们需要同时获取图片名字、图片、标签三个信息,也是为了后续的评价指标计算做基础,这一点与传统单标签分类只读取图片和标签的方法不同,需要格外注意。读取数据集的代码在此不再拆分详细解释。

本文以Pytorch框架进行编写,进行了两种策略的训练方式。

1、选择ModelA1作为训练网络(即resnet38),并使用对应的预训练数据,同时将全连接层转换为卷积层,学习率设置为0.01,batch_size为4,损失函数选用hanming loss,采用SGD优化,在AMD 2600X + GTX 1070Ti搭建的平台,训练了约30个小时。

2、选择Resnet50作为训练网络,同时将全连接层转换为卷积层,学习率设置为0.01,batch_size为16,损失函数选用hanming loss,采用SGD优化,在AMD 2600X + GTX 1070Ti搭建的平台,训练了约2个小时。

9 结果分析

通过训练我们发现,ModelA1取得的最优准确率为91.8%,Resnet50取得的最优准确率为90.3%,故此次结果分析暂时以ModelA1为准。


1、平均准确率均值(mAP)

640?wx_fmt=jpeg

2、各类别平均准确率曲线

640?wx_fmt=jpeg

3、每个类别的最高准确率

640?wx_fmt=jpeg

总结

以上就是整个多标签图像分类实战的过程,由于时间限制,本次实战并没有进行详细的调参工作,因此准确率还有一定的提升空间。

有三AI夏季划

640?wx_fmt=png

有三AI夏季划进行中,欢迎了解并加入,系统性成长为中级CV算法工程师。

转载文章请后台联系

侵权必究

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

往期精选

Tencent ML-Images: A Large-Scale Multi-Label Image Database for Visual Representation Learning 摘要: 现有的视觉表达学习任务中,深度神经网络通常由单个标签的图像训练而来,例如ImageNet。然而单个标签很难描述样本中所有的重要内容,有些有用的视觉信息在训练时可能会浪费掉了。本文中,我们期望利用多标签的图像训练CNNs,从而增强训练出来的CNN模型的表达质量。为了达到目的,我们建立一个包含18M图像,11K类别的大规模多标签样本集,称为Tencent ML-Images。我们高效的利用大... 阅读详情

相关推荐

目标检测YOLO系列从入门到精通技术详解100篇-【图像处理】图像分类

图像识别是利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对象的技术,是应用深度学习算法的一种实践应用。图像分类是根据图像的语义信息对不同类别图像进行区分,是计算机视觉的核心,是物体检测、图像分割、物体跟踪、行为分析、人脸识别等其他高层次视觉任务的基础。图像识别与分类在许多领域都有着广泛的应用。

getusushu的博客 1241

Python 数据可视化-3对坐标图添加标签、颜色、线型、标记等操作

数据可视化-3对坐标图添加标签、颜色、线型、标记等操作

YuZhou的博客 4694

前端实现微信扫一扫的思路

本篇文章的关键点就是讲解了我在实现处理多张二维码的场景时的思路,利用canvas遮挡识别过的二维码这个思路是pbk-bin大佬最先想到的,在实现这个需求以后还是很感叹这个思路的巧妙。👏pbk-bin🎁~如果文章对你有帮助,不妨赠人玫瑰,手有余香,预计将会在下篇更新较为完整的微信扫一扫界面和功能。

fang_my的博客 2489

PASCAL 5i(PASCAL VOC 2012 Aug)数据集构建:小样本语义分割复现踩坑总结

本文介绍了PASCAL 5i数据集的组成、下载、处理,10582张训练图片如何获得,或5923张训练图片如何获得,以及处理过程中的一系列问题,解释了为什么使用PASCAL 5i数据集对小样本语义分割模型(如PFENet)复现结果不佳

RossoCorsa的博客 3539

ROS激光雷达动态避障算法优化(C++实战)

本文深入探讨了ROS激光雷达动态避障算法的C++实战优化。针对动态环境的核心挑战,文章系统性地介绍了从激光数据预处理(降噪、瘦身)、动态障碍物检测与跟踪,到基于动态窗口法(DWA)的智能决策与调优的全流程。重点分享了如何将障碍物速度预测融入DWA打分函数,以实现更安全、流畅的避障,并提供了工程架构、性能优化及真机调试的实用建议。

weixin_29192141的博客 948

如何构建高质量的 QA 问答知识库

NLP 技术落地最普遍的场景就是智能客服,如阿里的”小蜜“,京东的“JIMI”等等。NLP 技术也广泛应用于搜索系统。无论是“智能客服”,还是“搜索系统”,构建的前提是拥有“高质量的QA知识库”。今天聊聊“如何构建高质量QA知识库。”。 历史对话数据分布分析 基于公司现有系统积累的大规模对话文本数据,需要对文本数据进行归类处理,分析每个部分数据的占比,挖掘出有价值的文本通过 NLP 相关技术进行商业价值转化。下文以医疗领域来举例说明,通过输入对象,可以将文本分为客服输入和用户输入两部分。挖掘相关问题,主要从

Jiassheng的博客 2153

python不同曲线设置标签_python高级绘图-线条及标签样式设置

import matplotlib.pyplot as pltimport numpy as npfig = plt.figure()ax = fig.add_subplot(111)font = {'family':'monospace','color':'maroon','weight':'bold','size':16}x = np.linspace(0,2*np.pi,500)y = np...

weixin_39865625的博客 4074

别再让CPU干GPU的活了:CST Studio Suite GPU加速深度调优指南(从驱动版本到任务管理器监控)

本文深入探讨了CST Studio Suite的GPU加速深度调优方法,从NVIDIA驱动版本选择到系统级资源管理,再到实时监控与瓶颈诊断技术。通过科学的驱动优化、GPU资源管理策略和高级调优技巧,显著提升仿真效率,特别适合电磁仿真工程师和硬件加速需求的专业用户。

weixin_28740299的博客 167

语义分割数据集制作一条龙(pascal voc aug)

pascal voc aug数据集制作全流程

戏言的博客 1599

倍加福(P+F)R2000修改雷达IP

在调试车子的时候,用到了倍加福R2000的一款雷达,设备启动建图时发现建不了图,于是查看/scan发现话题无数据,尝试ping雷达接口发现ping不通,应该是IP地址与上位机端口的IP地址不对。首先查看雷达的IP地址,这个在雷达上有两个按键,按下后可以显示IP: 按两下右边的键再按一下左边的键雷达上会显示出IP号,这里拍的不是很清楚。查看到开始时雷达IP地址为192.168.111.10,而上位机ping的IP地址为192.168.188.50.与实际不同,所以需要对雷达进行配置。一台windows笔记本

YiYeZhiNian的博客 5891

safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer解决方案

本文主要介绍了safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer解决方案,希望能对使用Python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 Windows 2.2 Linux

weixin_43178406的博客 15万+

ggplot2设置坐标轴范围_Python语言plotnine VS R语言ggplot2

ggplot2包是由Hadley Wickham在2005年创造。相对于R中的基础可视化包,是基于图形语法的绘图包,一经提出就迅速受到广大R语言使用者的喜爱。ggplot2包利用图层叠加的绘图方式,往图像上不断的添加图形元素、注释、统计结果等内容。plotnine库可以看作是在Python中对ggplot2包的一种实现,方便Python对数据可视化的应用。本文章会分别介绍在R和Python中,如何...

weixin_39859055的博客 808

PyTorch实战(19)——变分自编码器(Variational Autoencoder,VAE)

变分自编码器 (Variational Autoencoder, VAE) 是一种结合了自编码器和概率建模的生成模型,通过编码器将输入数据映射到潜在空间中的概率分布,并通过解码器将从潜在空间采样得到的潜在变量映射回原始数据空间,实现了数据的生成和特征学习。本节中,将介绍变分自编码器的基本概念,并使用 PyTorch 实现变分自编码器生成新图像。

盼小辉丶的博客 2934

python不同曲线设置标签_【图像分类】基于Pascal VOC2012增强数据的多标签图像分类实战...

接着上一次的多标签分类综述,本文主要以Pascal VOC2012增强数据集进行多标签图像分类训练,详细介绍增强数据集制作、训练以及指标计算过程,并通过代码进行详细阐述,希望能为大家提供一定的帮助!作者&编辑 | 郭冰洋上一期多标签图像分类文章,也是本文的基础,点击可以阅读:【技术综述】多标签图像分类综述1 简介基于image-level的弱监督图像语义分割大多数以传统分类网络作...

weixin_34581040的博客 374

利用 SAP Joule 提升 ABAP 开发效率的前提条件与限制全解析

综上,想要在 ABAP Development Tools 中顺利使用 SAP Joule,既要准备好 BTP、IAS、ABAP 系统与 ADT 的版本与信任链,也要理解许可证、配额、语法范围等限制。只有在这些前提全部满足后,Joule 才能真正发挥生成式 AI 的价值,帮助 ABAP 开发者从繁琐模板中解放出来,把注意力投入在业务创新与 Clean Core 改造之上。未来 SAP 还将扩展中文语境、自动修复建议以及跨系统智能代理等功能,值得持续关注。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 665

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

基于 PASCAL VOC 2012 的多标签图像分类实验:ConvNeXt V2 Base 模型优化与鲁棒性分析

VOC2012 图像分类共 20 类:本文完成了 PASCAL VOC 2012 多标签图像分类任务,核心流程如下:使用 VOC 官方标签文件构建 20 维 multi-hot 标签。使用 timm ConvNeXtV2-Tiny 作为图像分类 backbone。加载 ImageNet 预训练权重进行微调。使用 Focal Loss 处理多标签分类中的难样本。使用 mAP、AUC、F1、Precision、Recall 等指标评估模型。

wlsjy的博客 882

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

bert 是单标签还是多标签 的分类_【图像分类】Pytorch多标签图像分类简明教程...

简介基于image-level的弱监督图像语义分割大多数以传统分类网络作为基础,从分类网络中提取物体的位置信息,作为初始标注。Pascal VOC2012的原始分割数据集仅包含1464个train图片和1449张val图片(共2913张),对于分类网络来说其数据量过小。而benchmark_RELEASE分割数据集包括8498张train图片和2857张val图片(共11355张)。因此,许多论文...

weixin_42514750的博客 791

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

img标签 文件不存在_【图像分类】Pytorch多标签图像分类简明教程

简介基于image-level的弱监督图像语义分割大多数以传统分类网络作为基础,从分类网络中提取物体的位置信息,作为初始标注。Pascal VOC2012的原始分割数据集仅包含1464个train图片和1449张val图片(共2913张),对于分类网络来说其数据量过小。而benchmark_RELEASE分割数据集包括8498张train图片和2857张val图片(共11355张)。因此,许多论文...

weixin_39759589的博客 788

一篇看懂图像分类基础知识

基础知识 1. 具体领域划分 (1)多类别图像分类 (2)细粒度图像分类 (3)多标签图像分类 (4)弱监督与无监督图像分类 (5)零样本图像分类

学姐带你玩AI的博客 2970

计算机视觉课程综合实践项目

本文为计算机视觉综合实践项目实战分享,针对轻量化视觉模型精度与算力难以兼顾的痛点,基于 RTX 3060 6G 显卡,在 PASCAL VOC2012 数据集完成多标签分类 + 目标检测双任务落地。分类采用 MobileNetV2,mAP 达 82%;检测用 YOLOv5n/s 双模型对比,mAP@0.5 分别达 50.5%、60%,均超额完成基线要求。全文覆盖数据预处理、模型微调、算力适配全流程,含鲁棒性深度分析与踩坑指南,代码可复现,适合 CV 入门、课程设计、低算力调优的同学参考。

weixin_62870309的博客 710

计算机视觉-----图像分类综述

计算机视觉-----图像分类综述计算机视觉-----图像分类综述图像分类介绍应用场景传统图像分类算法深度学习算法1、CNN2、VGG3、GoogLeNet4、ResNet 计算机视觉-----图像分类综述 图像分类介绍 什么是图像分类,核心是从给定的分类集合中给图像分配一个标签的任务。实际上,这意味着我们的任务是分析一个输入图像并返回一个将图像分类的标签。标签来自预定义的可能类别集。 示例:我们假定一个可能的类别集categories = {dog, cat, eagle},之后我们提供一张图1给分类系统:

Avery123123的博客 2万+

图像分类研究方向数据集介绍

图像分类是计算机视觉的核心任务,旨在为图像分配语义标签。随着深度学习的进步,研究在多个方向深化:从传统特征提取方法到深度学习模型架构(如CNN、Transformer),再到小样本学习、细粒度分类、多标签分类等。研究还涉及对抗鲁棒性、无监督/自监督学习、模型压缩与加速、跨域与迁移学习等。常用数据集如MNIST、CIFAR、ImageNet等,为模型训练和评估提供了基础。未来趋势将聚焦于少样本学习、跨域泛化及模型轻量化,以满足实际应用需求。

qq_54556560的博客 926

图像分类综述

什么是图像分类,核心是从给定的分类集合中给图像分配一个标签的任务。实际上,这意味着我们的任务是分析一个输入图像并返回一个将图像分类的标签。标签来自预定义的可能类别集。示例:我们假定一个可能的类别集categories = {dog, cat, eagle},之后我们提供一张图1给分类系统:这里的目标是根据输入图像,从类别集中分配一个类别,这里为dog,我们的分类系统也可以根据概率给图像分配多个标签,如dog:95%,cat:4%,eagle:1%。

2222

使用caffe训练一个多标签分类/回归模型

前言这篇博客和上一篇性质差不多,都是旨在说明使用caffe训练图像分类模型的大概流程。不同的是,上篇博客讲的单标签图像分类问题,顾名思义,其输入和输出都是单标签或者可以说是单类别的,而此篇则把重点放在如何处理多标签分类/回归问题的输入和输出上。多标签分类/回归问题和单标签的工作流程比较类似,大致分为以下几个步骤,然后本博客再对各个环节做进一步解释。 准备数据(图像整理好放到合适的文件夹中,对应的gr

无空ty的博客 6094

图像分类技术:从传统方法到深度学习

图像分类是计算机视觉的基础任务,旨在将图像自动归类到预定义的语义类别中。其技术原理经历了从传统机器学习到深度学习的演进,核心在于特征提取与分类决策。传统方法如SVM和随机森林依赖人工特征工程,而现代CNN和Transformer架构通过自动学习层次化特征,显著提升了分类准确率。图像分类技术在医疗影像分析、智能相册管理等场景具有广泛应用价值。随着自监督学习和多模态融合的发展,基于ResNet、ViT等模型的图像分类系统正不断突破性能边界,为工业界提供了可靠的视觉解决方案。

weixin_30420305的博客 417
上一篇: 【知识星球】Attention网络结构上新,聚焦才能赢
下一篇: 【知识星球】数据集板块重磅发布,海量数据集介绍与下载
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

言有三

三人行必有AI

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

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

打赏作者

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

抵扣说明:

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

余额充值