精华内容
下载资源
问答
  • 【技术综述】多标签图像分类综述

    千次阅读 2019-07-01 18:20:12
    本篇综述将带领大家了解多标签图像分类这一方向,了解更具难度的图像分类。 作者 | 郭冰洋 编辑 | 言有三 1 简介 随着科学技术的进步与发展,图像作为信息传播的重要媒介,在通信、无人驾驶、医学影像分析、...

    图像分类作为计算机视觉领域的基础任务,经过大量的研究与试验,已经取得了傲人的成绩。然而,现有的分类任务大多是以单标签分类展开研究的。当图片中有多个标签时,又该如何进行分类呢?本篇综述将带领大家了解多标签图像分类这一方向,了解更具难度的图像分类。

    作者 | 郭冰洋

    编辑 | 言有三

     

    1 简介

    随着科学技术的进步与发展,图像作为信息传播的重要媒介,在通信、无人驾驶、医学影像分析、航天、遥感等多个领域得到了广泛的研究,并在国民社会、经济生活中承担着更加重要的角色。人们对图像研究的愈发重视,也促使计算机视觉领域迎来了蓬勃发展的黄金时代。

    作为计算机视觉领域的基础性任务,图像分类是目标检测、语义分割的重要支撑,其目标是将不同的图像划分到不同的类别,并实现最小的分类误差。经过近30年的研究,图像分类已经成功应用至社会生活的方方面面。如今,在我们的生活中随处可见——智能手机的相册自动分类、产品缺陷识别、无人驾驶等等。

    根据分类任务的目标不同,可以将图像分类任务划分成两部分:(1)单标签图像分类;(2)多标签图像分类。

     

    单标签图像分类是指每张图片对应一个类别标签,根据物体类别的数量,又可以将单标签图像分类划分成二分类、多类别分类。如下图所示,可以将该图的标签记为海洋,通过单标签图像分类我们可以判定该图像中是否含有海洋。

    然而,现实生活中的图片中往往包含多个类别的物体,这也更加符合人的认知习惯。我们再来观察下图,可以发现图中不仅包含海洋,还包括了海豚。多标签图像分类可以告知我们图像中是否同时包含这些内容,这也能够更好地解决实际生活中的问题。

     

     

    2 传统机器学习算法

    机器学习算法主要包括两个解决思路:

    (1) 问题迁移,即将多标签分类问题转化为单标签分类问题,如将标签转化为向量、训练多个分类器等;

    (2) 根据多标签特点,提出新的适应性算法,包括ML-KNN、Ranking SVM、Multi-label Decision Tree等。现对其中具有代表性的算法进行总结。

    2.1 问题迁移

    问题迁移方法的主要思想是先将多标签数据集用某种方式转换成单标签数据集,然后运用单标签分类方法进行分类。该方法有可以包括基于标签转换和基于样本实例转换。

    2.1.1 基于标签转换

    针对每个标签,将属于这个标签的所有实例分为一类,不属于的分为另一类,将所有数据转换为多个单标签分类问题(如下图)。典型算法主要有Binary Relevance和Classifier Chain两种。

     

    2.1.2 基于样本实例转换

    这种方法是将多标签实例分解成多个单标签实例。如下图所示。实例E3对应标签y3和y4,则通过分解多标签方法法将E3分解成单独选中标签y3和y4的实例,然后对每一个标签作单独预测。

     

    2.2 适应性方法

    如上文所述,新的适应性算法是根据多标签分类的特殊性,改进现有的单标签分类算法,主要包括以下三种:

    2.2.1 ML-KNN

     

    ML-KNN由传统的KNN算法发展而来。首先通过KNN算法得到样本最接近的K个邻近样本,然后根据K个邻近样本的标签,统计属于某一标签的邻近样本个数,最后利用最大后验概率原则(MAP)决定测试样本含有的标签集合。

    2.2.2 Rank SVM

     

    Rank SVM是在SVM的基础上,加入Ranking Loss损失函数和相应的边际函数作为约束条件,并扩展目标函数而提出的一种多标签学习算法。该算法的简要思路是:首先定义函数s(x)是样本x的标签集的规模大小,然后定义rk(x)=wkTx+bk,如果求得的rk(x)值在最大的s(x)个元素(r1(x),...rQ(x))之间,则认为该样本x选中该标签k,否则就没被选中。在求解过程中定义新的排序函数rk(x)-rl(x)≥1,其中k表示被样本x选中的标签,l表示没有被选中的标签,并基于这个新的排序函来大间隔分类器,同时最小化Ranking Loss,从而推导出适合多标签分类的目标函数和限制条件。

    2.2.3 Multi-label Decision Tree

    该算法采用决策树技术处理多标签数据,利用基于多标签熵的信息增益准则递归地构建决策树。树形结构包括非叶结点、分支、叶节点。决策树模型用于分类时,特征属性用非叶节点表示,特征属性在某个值域上的输出用非叶节点之间的分支表示,而类别则用叶节点存放。

    计算思想如下:首先计算每个特征的信息增益,挑选增益最大的特征来划分样本为左右子集,递归下去,直到满足停止条件,完成决策树的构建。对新的测试样本,沿根节点遍历一条路径到叶子节点,计算叶子节点样本子集中每个标签为0和1的概率,概率超过0.5则表示含有该标签。当遍历所有路径到底不同的叶节点之后,则可判断涵盖的所有标签信息。

    除了上述三类主要算法外,还包括诸多以单标签分类进行改进的算法,在此不再赘述。

     

    3 深度学习算法

    深度学习的发展带动了图像分类精度的大幅提升,神经网络强大的非线性表征能力可以在大规模数据中学习到更加有效的特征。近年来,多标签图像分类也开始使用深度学习的思想展开研究。

     

    魏云超等在程明明教授提出的BING理论基础上,提出了Hypotheses-CNN-Pooling。首先对每张图片提取含有标签信息的候选区域(如上图中的Hypotheses Extraction过程),然后将每个候选区域送入CNN进行分类训练,最后利用cross-hypothesis max-pooling融合所有候选区域的分类结果,从而得到多个标签信息完整的图片。

    CNN具有强大的语义信息提取能力,而RNN则可以建立信息之间的关联。根据这一理论观点,Jiang Wang等提出了CNN-RNN联合的网络结构。首先利用CNN对输入图像进行训练,得到相应的特征,然后将图片对应的特征投影到与标签一致的空间中,在该空间利用RNN进行单词的搜索训练。该算法充分考虑了类别之间的相关性,可以有效对图像中具有一定关系的标签进行识别。

     

    在CNN-RNN结构的基础上,后续文章又加入Regional LSTM模块。该模块可以对CNN的特征进行导向处理,从而获取特征的位置信息,并计算位置信息和标签之间的相关性。在上文的结果上进一步考虑了特征、位置和标签之间潜在的依赖关系,可以有效计算图片中多个标签同时存在的可能性,并进行图片的分类。

    最近,诸多基于image-level进行弱监督分割研究的文章,充分利用了多标签分类网络的信息。其主要思想是将标签统一处理为向量形式,为每幅图片构建一个维度为1xN的矩阵标签(如[0,0,0,1,1,0]形式),并采用专门的损失函数(Hanming loss、Ranking loss等)进行训练。这一方法成功地将多标签的复杂问题,转化为单标签问题,从而可以利用传统的分类网络进行训练。

    多标签图像分类的相关算法仍然层出不穷,但不论是基于机器学习还是基于深度学习的算法,都有其优势和不足,如何根据实际应用需求选用合适的算法,才是我们应当关注的重点内容。

     

    4 评价指标

    单标签分类中通常采用准确率(Precision),召回率(Recall)、F值(F-measure)和AUC曲线对分类结果进行评价。然而,在多标签分类中一个图片与多个标签同时关联,其复杂程度远远高于单标签分类。因此,在继承单标签分类评价指标的基础上,许多关于多标签分类的评价指标也被提出。在这里只介绍多标签分类常用的指标,有关单标签分类的指标不再赘述。

    4.1 平均准确率(AP)和平均准确率均值(mAP)

    同单标签分类一样,当一张图片中的所有标记均预测正确时,准确率才可以置1,否则置零。每个类别下的标签分别进行计算后,取其平均值即可获得平均准确率,对所有平均准确率取均值即可获得平均准确率均值。平均准确率可以衡量模型在每个类别的好坏程度,而平均准确率均值则衡量的是在所有类别的好坏程度。

    4.2 汉明距离

    将预测的标签集合与实际的标签集合进行对比,按照汉明距离的相似度来衡量。汉明距离的相似度越高,即汉明损失函数越小,则模型的准确率越高。

    4.3 1-错误率

     

    1-错误率用来计算预测结果中排序第一的标签不属于实际标签集中的概率。其思想相当于单标签分类问题中的错误率评价指标。1-错误率越小,说明预测结果越接近实际标签,模型的预测结果也就越好。

    4.4 覆盖率

    覆盖率用来度量“排序好的标签列表”平均需要移动多少步数,才能覆盖真实的相关标签集合。对预测集合Y中的所有标签{y1,y2,… yi … yn}进行排序,并返回标签yi在排序表中的排名,排名越高,则相关性越差,反之,相关性越高。

    4.5 排序损失

     

    排序损失计算的是不相关标签比相关标签的相关性还要大的概率。

     

    5 数据集

    高质量的数据集是图像分类的基础,更是关键所在。随着人们对数据质量的重视程度越来越高,如今已有诸多完备的多标签图像分类数据集。

     

    5.1 Pascal VOC

    Pascal VOC数据集的主要任务是在真实场景中识别来自多个类别的目标。该数据集共有近两万张图片,共有20个类别组成。Pascal VOC官方对每张图片都进行了详细的信息标注,包括类别信息、边界框信息和语义信息,均保存在相应的xml格式文件中。通过读取xml文件中的<name>项,我们可以获取到单张图片中包含的多个物体类别信息,从而构建多标签信息集合并进行分类训练。

    5.2 COCO

    COCO(Common Objects in Context)数据集由微软公司赞助搭建。该数据集包含了91个类别,三十余万张图片以及近二百五十万个标签。与Pascal VOC相类似,COCO数据的标注信息均保存在图片对应的json格式文件中。通过读取json文件中的annotation字段,可以获取其中的category_id项,从而获取图片中的类别信息。同一json文件中包含多个category_id项,可以帮助我们构建多标签信息。COCO数据集的类别虽然远远大于Pascal VOC,而且每一类包含的图像更多,这也更有利于特定场景下的特征学习。

    除了上述两个个主流数据集之外,比较常用的还包括ImageNet数据集、NUS-WIDE数据集。近年来,诸多公司、科研机构也提出了诸多全新的数据集,如ML-Images等。这些标注完善的数据,为多标签图像分类的研究提供了有力的支持,同样也为图像处理领域的发展做出了巨大贡献。

     

    6 多标签图像分类面临的挑战

    (1) 多标签图像分类的可能性随着图片中标签类别的增加呈指数级增长,在现有的硬件基础上会加剧训练的负担和时间成本,如何有效的降低信息维度是面临的最大挑战。

    (2) 多标签分类往往没有考虑类别之间的相关性,如房子大概率不会出现老虎、海洋上不太可能出现汽车。对于人类来说,这些均是常识性的问题,但对于计算机却是非常复杂的过程,如何找到类别之间的相关性也能够更好的降低多标签图像分类的难度。

    古语有云:“纸上得来终觉浅,绝知此事要躬行”,理论知识的学习必须通过实践才能进一步强化,完成了综述内容的书写,后续将基于Pytorch框架以Pascal VOC2012增强数据集进行多标签图像分类实战,敬请期待哦!

    感谢各位看官的耐心阅读,不足之处希望多多指教。后续内容将会不定期奉上,欢迎大家关注有三公众号 有三AI

     

    展开全文
  • 图像分类作为计算机视觉领域的基础任务,经过大量的研究与试验,已经取得了傲人的成绩。然而,现有的分类任务大多是以单标签分类展开研究的。当图片中有标签时,又该如何进行分...
        
     

    图像分类作为计算机视觉领域的基础任务,经过大量的研究与试验,已经取得了傲人的成绩。然而,现有的分类任务大多是以单标签分类展开研究的。当图片中有多个标签时,又该如何进行分类呢?本篇综述将带领大家了解多标签图像分类这一方向,了解更具难度的图像分类。

    作者 | 郭冰洋

    编辑 | 言有三

    1 简介

    随着科学技术的进步与发展,图像作为信息传播的重要媒介,在通信、无人驾驶、医学影像分析、航天、遥感等多个领域得到了广泛的研究,并在国民社会、经济生活中承担着更加重要的角色。人们对图像研究的愈发重视,也促使计算机视觉领域迎来了蓬勃发展的黄金时代。

    作为计算机视觉领域的基础性任务,图像分类是目标检测、语义分割的重要支撑,其目标是将不同的图像划分到不同的类别,并实现最小的分类误差。经过近30年的研究,图像分类已经成功应用至社会生活的方方面面。如今,在我们的生活中随处可见——智能手机的相册自动分类、产品缺陷识别、无人驾驶等等。

    640?wx_fmt=png

    根据分类任务的目标不同,可以将图像分类任务划分成两部分:(1)单标签图像分类;(2)多标签图像分类。

    单标签图像分类是指每张图片对应一个类别标签,根据物体类别的数量,又可以将单标签图像分类划分成二分类、多类别分类。如下图所示,可以将该图的标签记为海洋,通过单标签图像分类我们可以判定该图像中是否含有海洋。

    然而,现实生活中的图片中往往包含多个类别的物体,这也更加符合人的认知习惯。我们再来观察下图,可以发现图中不仅包含海洋,还包括了海豚。多标签图像分类可以告知我们图像中是否同时包含这些内容,这也能够更好地解决实际生活中的问题。

    640?wx_fmt=jpeg

    2 传统机器学习算法

    机器学习算法主要包括两个解决思路:

    (1) 问题迁移,即将多标签分类问题转化为单标签分类问题,如将标签转化为向量、训练多个分类器等;

    (2) 根据多标签特点,提出新的适应性算法,包括ML-KNN、Ranking SVM、Multi-label Decision Tree等。现对其中具有代表性的算法进行总结。

    2.1 问题迁移

    问题迁移方法的主要思想是先将多标签数据集用某种方式转换成单标签数据集,然后运用单标签分类方法进行分类。该方法有可以包括基于标签转换和基于样本实例转换。

    2.1.1 基于标签转换

    针对每个标签,将属于这个标签的所有实例分为一类,不属于的分为另一类,将所有数据转换为多个单标签分类问题(如下图)。典型算法主要有Binary Relevance和Classifier Chain两种。

    640?wx_fmt=jpeg

    2.1.2 基于样本实例转换

    这种方法是将多标签实例分解成多个单标签实例。如下图所示。实例E3对应标签y3y4,则通过分解多标签方法法将E3分解成单独选中标y3y4的实例,然后对每一个标签作单独预测。

    640?wx_fmt=jpeg

    2.2 适应性方法

    如上文所述,新的适应性算法是根据多标签分类的特殊性,改进现有的单标签分类算法,主要包括以下三种:

    2.2.1 ML-KNN

    640?wx_fmt=jpeg

    ML-KNN由传统的KNN算法发展而来。首先通过KNN算法得到样本最接近的K个邻近样本,然后根据K个邻近样本的标签,统计属于某一标签的邻近样本个数,最后利用最大后验概率原则(MAP)决定测试样本含有的标签集合。

    2.2.2 Rank SVM

    640?wx_fmt=jpeg

    Rank SVM是在SVM的基础上,加入Ranking Loss损失函数和相应的边际函数作为约束条件,并扩展目标函数而提出的一种多标签学习算法。该算法的简要思路是:首先定义函数s(x)是样本x的标签集的规模大小,然后定义rk(x)=wkTx+bk,如果求得的rk(x)值在最大的s(x)个元素(r1(x),...rQ(x))之间,则认为该样本x选中该标签k,否则就没被选中。在求解过程中定义新的排序函数rk(x)-rl(x)≥1,其中k表示被样本x选中的标签,l表示没有被选中的标签,并基于这个新的排序函来大间隔分类器,同时最小化Ranking Loss,从而推导出适合多标签分类的目标函数和限制条件。

    2.2.3 Multi-label Decision Tree

    640?wx_fmt=jpeg

    该算法采用决策树技术处理多标签数据,利用基于多标签熵的信息增益准则递归地构建决策树。树形结构包括非叶结点、分支、叶节点。决策树模型用于分类时,特征属性用非叶节点表示,特征属性在某个值域上的输出用非叶节点之间的分支表示,而类别则用叶节点存放。

    计算思想如下:首先计算每个特征的信息增益,挑选增益最大的特征来划分样本为左右子集,递归下去,直到满足停止条件,完成决策树的构建。对新的测试样本,沿根节点遍历一条路径到叶子节点,计算叶子节点样本子集中每个标签为0和1的概率,概率超过0.5则表示含有该标签。当遍历所有路径到底不同的叶节点之后,则可判断涵盖的所有标签信息。

    除了上述三类主要算法外,还包括诸多以单标签分类进行改进的算法,在此不再赘述。

    3 深度学习算法

    深度学习的发展带动了图像分类精度的大幅提升,神经网络强大的非线性表征能力可以在大规模数据中学习到更加有效的特征。近年来,多标签图像分类也开始使用深度学习的思想展开研究。

    640?wx_fmt=jpeg

    魏云超等在程明明教授提出的BING理论基础上,提出了Hypotheses-CNN-Pooling。首先对每张图片提取含有标签信息的候选区域(如上图中的Hypotheses Extraction过程),然后将每个候选区域送入CNN进行分类训练,最后利用cross-hypothesis max-pooling融合所有候选区域的分类结果,从而得到多个标签信息完整的图片。

    640?wx_fmt=png

    CNN具有强大的语义信息提取能力,而RNN则可以建立信息之间的关联。根据这一理论观点,Jiang Wang等提出了CNN-RNN联合的网络结构。首先利用CNN对输入图像进行训练,得到相应的特征,然后将图片对应的特征投影到与标签一致的空间中,在该空间利用RNN进行单词的搜索训练。该算法充分考虑了类别之间的相关性,可以有效对图像中具有一定关系的标签进行识别。

    640?wx_fmt=jpeg

    在CNN-RNN结构的基础上,后续文章又加入Regional LSTM模块。该模块可以对CNN的特征进行导向处理,从而获取特征的位置信息,并计算位置信息和标签之间的相关性。在上文的结果上进一步考虑了特征、位置和标签之间潜在的依赖关系,可以有效计算图片中多个标签同时存在的可能性,并进行图片的分类。

    最近,诸多基于image-level进行弱监督分割研究的文章,充分利用了多标签分类网络的信息。其主要思想是将标签统一处理为向量形式,为每幅图片构建一个维度为1xN的矩阵标签(如[0,0,0,1,1,0]形式),并采用专门的损失函数(Hanming loss、Ranking loss等)进行训练。这一方法成功地将多标签的复杂问题,转化为单标签问题,从而可以利用传统的分类网络进行训练。

    多标签图像分类的相关算法仍然层出不穷,但不论是基于机器学习还是基于深度学习的算法,都有其优势和不足,如何根据实际应用需求选用合适的算法,才是我们应当关注的重点内容。

    4 评价指标

    单标签分类中通常采用准确率(Precision),召回率(Recall)、F值(F-measure)和AUC曲线对分类结果进行评价。然而,在多标签分类中一个图片与多个标签同时关联,其复杂程度远远高于单标签分类。因此,在继承单标签分类评价指标的基础上,许多关于多标签分类的评价指标也被提出。在这里只介绍多标签分类常用的指标,有关单标签分类的指标不再赘述。

    4.1 平均准确率(AP)和平均准确率均值(mAP)

    640?wx_fmt=jpeg

    同单标签分类一样,当一张图片中的所有标记均预测正确时,准确率才可以置1,否则置零。每个类别下的标签分别进行计算后,取其平均值即可获得平均准确率,对所有平均准确率取均值即可获得平均准确率均值。平均准确率可以衡量模型在每个类别的好坏程度,而平均准确率均值则衡量的是在所有类别的好坏程度。

    4.2 汉明距离

    640?wx_fmt=jpeg

    将预测的标签集合与实际的标签集合进行对比,按照汉明距离的相似度来衡量。汉明距离的相似度越高,即汉明损失函数越小,则模型的准确率越高。

    4.3 1-错误率

    640?wx_fmt=jpeg

    1-错误率用来计算预测结果中排序第一的标签不属于实际标签集中的概率。其思想相当于单标签分类问题中的错误率评价指标。1-错误率越小,说明预测结果越接近实际标签,模型的预测结果也就越好。

    4.4 覆盖率

    640?wx_fmt=jpeg

    覆盖率用来度量“排序好的标签列表”平均需要移动多少步数,才能覆盖真实的相关标签集合。对预测集合Y中的所有标签{y1,y2,… yi … yn}进行排序,并返回标签yi在排序表中的排名,排名越高,则相关性越差,反之,相关性越高。

    4.5 排序损失

    640?wx_fmt=jpeg

    排序损失计算的是不相关标签比相关标签的相关性还要大的概率。

    5 数据集

    高质量的数据集是图像分类的基础,更是关键所在。随着人们对数据质量的重视程度越来越高,如今已有诸多完备的多标签图像分类数据集。

    640?wx_fmt=jpeg

    5.1 Pascal VOC

    Pascal VOC数据集的主要任务是在真实场景中识别来自多个类别的目标。该数据集共有近两万张图片,共有20个类别组成。Pascal VOC官方对每张图片都进行了详细的信息标注,包括类别信息、边界框信息和语义信息,均保存在相应的xml格式文件中。通过读取xml文件中的<name>项,我们可以获取到单张图片中包含的多个物体类别信息,从而构建多标签信息集合并进行分类训练。

    5.2 COCO

    COCO(Common Objects in Context)数据集由微软公司赞助搭建。该数据集包含了91个类别,三十余万张图片以及近二百五十万个标签。与Pascal VOC相类似,COCO数据的标注信息均保存在图片对应的json格式文件中。通过读取json文件中的annotation字段,可以获取其中的category_id项,从而获取图片中的类别信息。同一json文件中包含多个category_id项,可以帮助我们构建多标签信息。COCO数据集的类别虽然远远大于Pascal VOC,而且每一类包含的图像更多,这也更有利于特定场景下的特征学习。

    除了上述两个个主流数据集之外,比较常用的还包括ImageNet数据集、NUS-WIDE数据集。近年来,诸多公司、科研机构也提出了诸多全新的数据集,如ML-Images等。这些标注完善的数据,为多标签图像分类的研究提供了有力的支持,同样也为图像处理领域的发展做出了巨大贡献。

    6 多标签图像分类面临的挑战

    (1) 多标签图像分类的可能性随着图片中标签类别的增加呈指数级增长,在现有的硬件基础上会加剧训练的负担和时间成本,如何有效的降低信息维度是面临的最大挑战

    (2) 多标签分类往往没有考虑类别之间的相关性,如房子大概率不会出现老虎、海洋上不太可能出现汽车。对于人类来说,这些均是常识性的问题,但对于计算机却是非常复杂的过程,如何找到类别之间的相关性也能够更好的降低多标签图像分类的难度。

    古语有云:“纸上得来终觉浅,绝知此事要躬行”,理论知识的学习必须通过实践才能进一步强化,完成了综述内容的书写,后续将基于Pytorch框架以Pascal VOC2012增强数据集进行多标签图像分类实战,敬请期待哦!

    想脱单,找湾区人工智能

    640?wx_fmt=jpeg

    长按扫码撩海归

    640?wx_fmt=png

    640?wx_fmt=png

       觉得不错, 请随意转发,麻烦点个在看!

    展开全文
  • 接着上一次的多标签分类综述,本文主要以Pascal VOC2012增强数据集进行多标签图像分类训练,详细介绍增强数据集制作、训练以及指标计算过程,并通过代码进行详细阐述,...
        

    接着上一次的多标签分类综述,本文主要以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

    往期精选

    展开全文
  • 看了一点综述,比如周志华,但是感觉心里空空的。 不了解这个方向的发展,都有哪些科学问题,哪些人做的比较好,基础算法的实现等等。 还请大佬们赐教。 不升感激。 sorry没有C币,不能悬赏了……请多多包涵。
  • 其研究成果广泛地应用于各种不同的领域,如图像视频的语义标注、功能基因组、音乐情感分类以及营销指导等。从多标签数据挖掘的方法和度量方式两个方面对多标签数据挖掘进行了系统详细的阐述,最后归纳了目前研究中...
  • 作者 | 涂心琪指导 | 曾湘祥教授单位 | 湖南大学研究方向 | 任务学习,生物信息学1.简介深度学习模型通常需要大量有标签数据才能训练出一个优良的分类器。但是,包括医学图像分析在内...

     

    1.简介

    深度学习模型通常需要大量有标签数据才能训练出一个优良的分类器。但是,包括医学图像分析在内的一些应用无法满足这种数据要求,因为标注数据需要很多人力劳动。在这些情况下,多任务学习(MTL)可以通过使用来自其它相关学习任务的有用信息来帮助缓解这种数据稀疏问题。

    微众银行首席智能官、香港科技大学讲座教授、国际人工智能联合会理事会主席、吴文俊人工智能杰出贡献奖获得者杨强教授是多任务学习的先驱。杨强教授在本文中对MTL进行了研究总结,根据任务的性质,MTL被分类成多任务监督学习、多任务无监督学习、多任务主动学习、多任务强化学习、多任务在线学习和多任务多视角学习,杨强教授总结了每一类中的代表性方法,并重点讨论了多任务监督学习的五种方法,之后分析了并行和分布式MTL,最后提出在未来的MTL研究中还需解决的问题。

    2. 多任务学习

    定义中有两个基本因素:一是任务的相关性,任务相关性是基于对不同任务关联方式的理解;二是任务的定义,在机器学习中学习任务主要包含分类和回归等监督学习任务、聚类等无监督学习任务、半监督学习任务、主动学习任务、强化学习任务、在线学习任务和多视角学习任务,因此不同的学习任务对应于不同的MTL设置。

    在MTL定义的基础上,由于大多数MTL研究都是在这种背景下进行的,因此主要研究监督学习任务,再对其它类型学习任务进行回顾。

    3. 多任务监督学习

    为了描述MTL中的任务相关性,需要解决三个问题:何时共享、共享什么以及如何共享。其中“何时共享”决定使用单任务模型还是多任务模型来解决多任务问题;“共享什么”确定所有任务之间共享什么信息,通常包括特征、实例和参数三种信息;“如何共享”确定实现信息共享的具体方法,目前的MTL研究主要集中在基于特征和基于参数的两种形式,其中,基于特征形式的方法主要有特征学习方法,基于参数形式的方法主要有低轶方法、任务聚类方法、任务关系学习方法和分解法。

     

    3.1特征学习方法

    MTL中多个任务是相关的,可以假设不同任务之间拥有共同的特征表示,这个共同的特征表示是从原始数据中学习到的,依据原始特征表示和学习后的特征表示之间的关系,可以将特征学习方法分为特征转换方法和特征选择方法。

    1)特征转换方法

    在特征转换方法中,对原始特征进行线性或非线性变换得到共同的特征表示,学习到的特征表示中的每一个特征都不同于原来的特征,主要介绍四种模型:多层前馈神经网络、多任务特征学习(MTFL)、多任务稀疏编码方式和深层模型。

    多层前馈神经网络结构如图1所示,输入层接收来自所有任务的训练样本,并且输出层具有多个输出单元,每个任务对应一个输出单元,隐藏层的输出可以看作是多个任务学习的共同特征表示,从原始表示到学习的特征表示的转换取决于连接输入和隐藏层的权重以及隐藏层中采用的激活功能单位。

    图1 多任务前馈神经网络结构图

    与多层前馈神经网络不同,多任务特征学习(MTFL)方法是在正则化框架下设计的,前者的隐含层表示可能是冗余的,而MTFL方法中所使用的平方变换矩阵可以避免出现冗余现象。与MTFL相似的一种方法是多任务稀疏编码方式,用于学习特征的线性变换。上述模型的特征变换只有一个层次,而一些深层的MTL模型可以有多层特征转换,许多深层MTL方法假设任务共享前几个隐藏层,然后在后续层中设有特定于任务的参数。

    2)特征选择方法

    特征选择方法通过不同的标准消除无用的特征,选择原始特征的子集作为所有任务的特征表示,这使得特征选择法具有更好的可解释性,当特征转换法的变换矩阵为对角0/1矩阵时,特征选择法可视为特征转换法的特例,其中值为1的对角线对应于所选的特性。如果应用程序需要一些决策支持,则特征选择方法比特征转换法可能更合适。

     

    3.2低轶方法

    由于多个任务之间相互关联且不同任务的特征之间存在相关性,假设不同任务的模型参数共享一个低轶空间,可以显式地学习权重矩阵的低轶空间,也可以通过凸正则化或非凸正则化隐式地实现这一点。其中,利用迹范数作为正则元使权重矩阵具有较低的轶是一种常见的方式,谱k支持范数是对迹范数正则化的一种改进,还有研究者提出使用基于矩阵迹范数的张量迹范数作为正则元来识别参数张量的低轶结构。

     

    3.3任务聚类方法

    在任务层次上进行聚类来识别任务簇,每个任务簇由相似的任务组成,可以捕获同一簇中任务之间的正相关。第一个被提出的基于任务聚类的算法是加权最近邻分类器,在训练时针对每个任务都会通过调整权重实现最小化类内距离并最大化类间距离来实现任务分类,在所有任务中获取集群结构后,将同一个簇中多个任务的训练数据集合在一起,学习最终加权最近邻分类器。任务聚类法的局限在于会忽略不同簇中任务之间的负相关,此外,即使这类方法中的一些方法可以自动确定集群的数量,但它们中的大多数仍然需要交叉验证等模型选择方法来确定它,这可能带来更多的计算成本。

     

    3.4任务关系学习方法

    任务关系学习方法可同时学习模型参数和成对任务之间的关系。任务的相关性可以通过一些定量关系(如任务相似性、任务协方差等)来量化,在早期对MTL的研究中,通常会利用任务的相似性来设计正则化器指导学习多个任务。多任务高斯过程(MTGP)用于从数据中自动学习任务关系,为解决MTGP中的过拟合问题又提出多任务广义t过程,非贝叶斯模型有任务关系学习模型(MTRL)等,局部学习模型有k近邻(kNN)分类器等,通过这些任务关系学习方法学习到的任务关系有助于我们观察任务之间的相关性,提高任务的可解释性。

     

    3.5分解方法

    该方法假设权重矩阵W可以分解成两个或多个分量矩阵,通过对分量矩阵的不同设计可提出不同的分解模型,可以消除所有任务的不重要特征。分解法可看作一种‘深层’方法,‘深’体现在模型参数方面,是其他基于参数的方法的扩展,可通过配置多层次的参数,建立更复杂的任务结构——树结构。

    4.多任务无监督学习

    多任务无监督学习的训练集仅由数据样本构成,其目标是挖掘数据集中所包含的信息。多任务无监督学习主要关注多任务聚类,聚类是指将一个数据集分成多个簇,其中每簇中都有相似的实例,因此多任务聚类的目的是通过利用不同数据集中包含的有用信息来在多个数据集上同时执行聚类。

    5.多任务半监督学习及多任务自主学习

    多任务半监督学习能够利用未标记数据中包含的几何信息,多任务自主学习目的是选择有代表性的无标记数据查询预示,二者均可利用未标记数据中包含的有用信息来进一步提高MTL的性能,常见模型有半监督多任务学习、多任务自主学习和半监督多任务自主学习模型。

    6.多任务强化学习

    强化学习研究的是如何在环境中采取行动以最大化累积奖励,多任务强化学习中,当环境相似时,不同的强化学习任务可以使用相似的策略来进行决策。

    7.多任务多视角学习

    多视角学习假设每个数据点与多组特征相关联,其中每个集合对应一个视角,并且它通常利用包含在多个视角中的信息来执行监督或非监督任务,多任务多视角学习是将多视角学习扩展到多任务设置,其中每个任务都是一个多视角学习问题。

    8.并行和分布式MTL

    当任务数量很大时,如果我们直接应用一个多任务学习器,那可能就会有很高的计算复杂度。现在计算机使用了多 CPU 和多 GPU 架构,其计算能力非常强大。所以我们可以使用这些强大的计算设备来设计并行 MTL 算法,从而加速训练过程。

    在某些情况中,用于不同任务的训练数据可能存在不同的机器中,这会使传统的 MTL 模型难以工作。如果将所有的训练数据都可转移到一台机器上,这会造成额外的传输和存储成本。设计能够直接处理分布在多台机器上数据的分布式 MTL 模型是更好的选择。

    9. MTL的应用

    MTL在不同领域有不同应用,其模型各不相同,解决的应用问题也不尽相同,但在各自的领域都存在着一些特点。在计算机视觉中图像和视频数据通常位于高维空间,使用特征选择方法可识别低维表示,提高学习效率,深层模型在计算机视觉问题上也表现出良好的性能。在生物信息学和健康信息学中,学习模型的可解释性在某种意义上更为重要,所以通常使用特征选择来识别出有用的特征。在语音和自然语言处理中,数据呈现出顺序结构,这使得基于RNN的深层模型发挥了主导作用。web应用具有大规模数据,因此这个领域倾向于简单的浅层模型或基于增强的组件,从而进一步提高性能。

    10. 讨论

    本文中提出在未来的研究中,有几个主要的问题有待解决:第一,离群任务与其它任务无关,当它们共同学习时,所有任务的性能都会受到影响,虽然有一些方法可以缓解异常值任务带来的负面影响,但是对由此产生的负面影响的研究缺乏原则性的方法和理论分析。第二,当所有任务相关时,深层学习方法是强大的,但是它容易受到噪声和离群任务的影响,这会极大地降低性能,需要更灵活、健壮的多任务深度模型。第三,现有的研究主要集中在监督学习任务上,只有少数研究聚焦于半监督学习、自主学习等其它学习任务,需要为适应和扩展这些任务设计合适的模型。

    参考资料

    论文链接:https://arxiv.xilesou.top/abs/1707.08114

    展开全文
  • CV研究方向及综述

    千次阅读 2020-06-02 17:24:20
    图像分类:多类别图像分类、细粒度图像分类、多标签图像分类、实例级图像分类、无监督图像分类。 分类方法: 传统机器学习:经典的特征算子+经典分类器组合学习,HOG+SVM 深度学习:Alexnet, VGG,GoogleNet,...
  • 目录 目录 概述 数据集和性能指标 数据集 性能指标 ...图像分类,检测及分割是计算机视觉领域的三大...但是现实世界的很图片通常包含不只一个物体,此时如果使用图像分类模型为图像分配一个单一标签其实是非常粗...
  • CVPR2019目标检测方法进展综述

    万次阅读 多人点赞 2019-03-20 14:14:04
    现代大多数目标检测器的框架是 two-stage,其中目标检测被定义为一个任务学习问题:1)区分前景物体框与背景并为它们分配适当的类别标签;2)回归一组系数使得最大化检测框和目标框之间的交并比(IoU)或其它指标...
  • 语义分割是将标签分配给图像中的像素的过程。这与分类形成了鲜明的对比,在分类中,一个标签被分配给整个图片。语义分割将同一类的个对象视为一个实体。另一方面,实例分割将同一类的个对象视为不同的单个对象...
  • 现有的视觉图像分类、目标检测、场景识别等技术大多基于监督学习,这些方法和技术需要进行大量的数据标注工作,对有标签的数据集进行人工智能算法的训练,得到相应的算法模型。但是仅仅是人类可识别的物体种类大约就...
  • 多标签图像分类任务的评价方法-mAP 信息检索(IR)的评价指标介绍 - 准确率、召回率、F1、mAP、ROC、AUC Learning to Rank for IR的评价指标—MAP,NDCG,MRR 信息检索的评价指标(Precision, Recall, F-score, M
  • 目标检测系列:传统方法

    千次阅读 2019-07-31 20:46:43
    前言 概述 算法 区域提取 ...但是现实世界的很图片通常包含的不只是一个物体,此时如果使用图像分类模型为图像分配一个单一标签其实是非常粗糙的,并不准确。对于这样的情况,就需要目标检测模型,...
  • 目标检测 (Object Detection) 算法汇集

    万次阅读 多人点赞 2018-03-26 21:39:06
    但是现实世界的很图片通常包含不只一个物体,此时如果使用图像分类模型为图像分配一个单一标签其实是非常粗糙的,并不准确。对于这样的情况,就需要目标检测模型,目标检测模型可以识别一张图片的个物体,并可以...
  • 最近需要做视频分类相关的工作,在做技术调研过程中,了解到视频分类包含了两种形式,(1)通用的多标签视频分类,它的特点是标签为静态的,也即做分类时不需要考虑图像帧之间的关联性,因此跟基于图片的分类没什么...
  • 如何使用个衍生标签组件 10-1 步骤概述 10-1 衍生标签编辑器 10-2 使用Check Syntax按钮 10-2 使用Accept和Discard按钮 10-3 设置最大更新速率 10-3 创建衍生标签 10-4 编辑衍生标签 10-5 启动和停止衍生标签 10-5...
  •  1.2.4 基本的用户智能手机操作系统分析  1.2.5 智能手机操作系统市场的生命力  1.2.6 当今智能手机市场综述  1.2.7 操作系统的前景  1.3 Symbian特性  1.3.1 设计理念  1.3.2 Symbian系统的功能特点  ...
  •  1.2.4 基本的用户智能手机操作系统分析  1.2.5 智能手机操作系统市场的生命力  1.2.6 当今智能手机市场综述  1.2.7 操作系统的前景  1.3 Symbian特性  1.3.1 设计理念  1.3.2 Symbian系统的功能特点  ...
  • 中文版Excel.2007图表宝典 1/2

    热门讨论 2012-04-06 18:49:24
    6.4.5 显示工作表背景图像/173 6.5 图形案例库/173 6.5.1 在图表中使用形状和图片/173 6.5.2 增强单元格的视觉效果/179 6.5.3 改变单元格注释的外观/180 6.5.4 粘贴单元格式的图片/181 第Ⅱ部分 掌握图表 第7章 ...
  • 中文版Excel.2007图表宝典 2/2

    热门讨论 2012-04-06 19:01:36
    6.4.5 显示工作表背景图像/173 6.5 图形案例库/173 6.5.1 在图表中使用形状和图片/173 6.5.2 增强单元格的视觉效果/179 6.5.3 改变单元格注释的外观/180 6.5.4 粘贴单元格式的图片/181 第Ⅱ部分 掌握图表 第7章 ...
  • ERNIE、中文对比英文自然语言处理NLP的区别综述、Synonyms中文近义词工具包、HarvestText领域自适应文本挖掘工具(新词发现-情感分析-实体链接等)、word2word:(Python)方便易用的语言词-词对集:62种语言/3,564...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

多标签图像分类综述