为什么传统 CNN 可能无法进行基于纹理的分类?

news2024/11/22 14:07:10

作者:Mayank Gubba、Mohammed Faisal、Trapti Kalra、Vijay Pandey

纹理分析深度学习结合使用对于在机器视觉任务中取得更好的结果起着重要作用。在第一篇博客中,我们讨论了“纹理”的基础知识、不同类型的纹理以及纹理分析在解决实际计算机视觉任务中的适用性。我们还解释了一些最常用和最值得注意的纹理提取技术,此外,我们还演示了如何将这些纹理提取技术与深度学习结合起来。

深度学习由各种可用于图像分类任务的架构组成。基于深度学习的模型经常用于图像分类任务,并且在许多不同的用例中都表现出了出色的效果,从而展现了其有效性。几年前,迁移学习的概念应运而生,它建议使用用大型数据集训练的模型作为特定用例的主干,其中,使用特定于案例的数据集对预训练的主干模型进行微调,以调整权重来解决特定任务。经过图像分类训练的预训练模型也可用于纹理分类任务。为了检查现有的传统基于 CNN 的纹理分类模型的效率,一些公共的基于纹理的数据集被用来对其性能进行基准测试。据观察,传统的 CNN 架构(如图 5 所示)很难产生理想的结果,并且在应用于纹理分类任务时效果不佳。

目录

1.纹理分类和流行的基于纹理的数据集
2.用于图像分类的传统 CNN
3.什么是预训练模型?
4.流行的预训练模型概述
5.利用和微调预训练模型来满足我们的用例的方法
6.为什么传统的 CNN 架构在基于纹理的数据集的分类任务中表现不佳?
7.参考

一、纹理分类和流行的基于纹理的数据集

在进行地形识别、自动医疗诊断、显微图像分析、自动驾驶汽车和爆炸物危险检测等工作时,纹理分析和分类是一项至关重要的任务。在执行基于分类的任务时,纹理是一个非常重要的属性。我们可以像人类一样直观地看到、理解和区分纹理,但对于基于人工智能的机器来说却并非如此。如果人工智能模型能够识别纹理,那么在应用于分类任务时,它将是一个额外的优势。根据视觉效果理解和分类对象使人工智能模型更加高效和可靠。

因此,我们为纹理分类任务建立了模型,并为了检查其有效性,在基于纹理的基准数据集(如 DTDFMDKTH )上对它们进行了测试。根据任何模型在这些数据集上的准确性,我们可以了解并在一定程度上预测其在其他类似数据集上的表现。下面我们将提供有关上述数据集的详细信息。

  • DTD:这是一个基于纹理的图像数据集,包含5640 张图像,根据受人类感知启发的47 个术语(类别)列表进行组织。每个类别有120 幅图像。数据集可在此链接[1]中找到 。
    在这里插入图片描述

图 1. 来自每个 DTD 类的图像

  • KTH:KTH 图像数据库通常被称为 KTH-TIPS(不同光照、姿势和尺度下的纹理),它是为了在两个方向上扩展CUReT 数据库而创建的,通过提供尺度以及姿势和光照的变化,以及通过在不同设置下对其材料子集的其他样本进行成像。总样本量为3195 ,分为11 个类别。数据集可在此链接 [2]中找到。
    在这里插入图片描述

图 2. KTH-TIPS 数据集的 11 个类别中每个类别的 4 个图像样本

  • FMD:该数据库的构建目的在于捕捉各种常见材料(例如玻璃、塑料等)在现实世界中的外观。该数据库中的每幅图像(共10 个类别,每个类别100 幅图像)都是从Flickr.com (根据 Creative Commons 许可)手动选择的,以确保各种照明条件、构图、颜色、纹理和材料子类型。数据集可在此链接 [3]中找到。
    在这里插入图片描述

图 3. FMD 数据集中每个类别的少量样本

二、用于图像分类的传统 CNN

就现有的传统 CNN 而言,这些大多属于预训练模型本身或使用这些预训练层/权重的模型。在我们的博客中,我们将首先简要概述什么是预训练模型以及如何在图像分类任务中应用它们。

目前,已有多种 CNN 模型被不同的研究人员提出用于图像分类任务,这些模型也可用作许多其他图像分类相关任务的预训练模型。在图 5 中,我们可以看到如何将预训练层整合到传统的基于 CNN 的架构中。

在纹理分类任务中,这些预训练模型也可以通过迁移知识并将其用于基于纹理的数据集来使用。由于这些模型是为某些特定数据集上的图像分类任务而构建的,但我们将它们用于一些不同的数据集进行纹理分类,因此我们将它们称为预训练模型。以下进一步描述了用于图像分类的预训练模型的一些关键思想:

三、什么是预训练模型?

为了简单地定义预训练模型,我们可以称之为由其他人训练并提供给其他开发人员用于特定用例的神经网络模型。

流行的预训练模型通常使用庞大的数据集来训练以解决复杂任务。这些模型随后以开源形式贡献,从而可供其他开发人员进一步构建或在工作中使用。通常,使用预训练模型来解决与其开发预训练模型的目的类似的问题是一个好主意。在图 4中,模型针对源任务进行训练,并且该已经训练过的源模型(预训练模型)的权重用于目标任务。从预训练模型转移权重后,对新开发的模型进行了一些更改,以做出更好、更精确的预测。

在这里插入图片描述

图 4.使用预先训练的模型[4]。

使用预训练模型作为计算机视觉和自然语言处理中各种问题的起点非常常见。从头开始构建神经网络需要大量的计算能力、时间和熟练的劳动力。

在这篇博客中,我们将重点介绍预训练模型(针对图像分类任务进行训练)的应用来解决纹理分类任务。

四、流行的预训练模型概述

以下是许多图像分类相关任务中经常使用的预训练模型的简要概述。

  • VGG-16:2015 年发布的最流行的预训练图像分类模型之一。VGG-16 是一个深度为 16 个可调层的神经网络,已在ImageNet 数据库中的 100 万张图像上进行了训练。它能够对 1000 个对象进行分类。

  • Inception v3 :谷歌在同一个ImageNet数据库上开发的预训练模型 。它也被称为GoogLeNet。Inception v3 是一个深度为 50 层的神经网络。2014 年,在ImageNet竞赛中,InceptionV3 赢得了冠军,而 VGG-16 在同一竞赛中获得亚军。它只有 700 万个参数,比以前的模型小得多,除此之外,它的错误率很低,这是该模型的一大成就。

  • ResNet50:原始模型称为残差网络或ResNet;它由微软于 2015 年开发。ResNet 是一个深度为 50 层的神经网络。ResNet50 还对来自ImageNet 数据库的 100 万张图像进行了训练。与 VGG16 相比,ResNet 的复杂度较低,并且在结果方面优于 VGG16。ResNet50 旨在解决梯度消失问题。

  • EfficientNet :这是谷歌于 2019 年训练并向公众发布的最先进的卷积神经网络。在 EfficientNet 中,作者使用了一种称为复合缩放的新缩放方法,其中我们同时将尺寸缩放固定量,并且我们统一执行。通过这样做,我们实现了更好的性能,并且缩放系数可以由用户自己决定。EfficientNet 有 8 种实现(B0 到 B7)。

五、利用和微调预训练模型来满足我们的用例的方法

由于我们处理的数据与预训练模型所用的数据不同,因此需要根据我们的数据更新模型的权重,以学习特定领域的信息。因此,我们需要针对我们的数据对模型进行微调。

下面我们将讨论一些针对特定用例使用预训练模型的机制。

  1. 特征提取——使用预训练模型作为特征提取机制。我们可以删除输出层(给出属于 1000 个类别的概率的层),然后将整个网络用作新数据集的固定特征提取器。
  2. 训练某些层,同时冻结其他层——预训练模型可用于部分训练我们的模型,其中我们保持初始层的权重冻结,并重新训练更高层的权重。根据一些实验,我们可以看到有多少层需要冻结,有多少层需要训练。
  3. 使用预训练模型的架构——我们可以借助模型的架构,并使用它来随机初始化模型的权重。然后,我们可以根据我们的数据集和任务训练模型,这样我们就有了一个良好的架构,经过训练后,我们可以为我们的任务带来良好的结果。
    在处理任何类型的图像分类问题时,微调和使用预训练模型都是明智的解决方案。此外,这些传统/预训练的 CNN 模型也能产生良好的结果,然而,这些架构在对基于纹理的数据集进行分类时表现不佳。

六、为什么传统的 CNN 架构在基于纹理的数据集的分类任务中表现不佳?

在这里插入图片描述

图 5. 传统 CNN 架构包含四个主要组件

传统的CNN架构通常包括预训练层,并在其上添加一些可训练的CNN层块,然后将其输出传递到完全连接的层进行类别预测。如图5所示,可以看出传统的 CNN 架构主要有四个主要组件,使用 4 个块来表示,分别是A、B、C和D。第一个组件是输入层(表示为块A),第二个组件是预训练层/权重(表示为块B),第三个组件是可训练的 CNN 块(表示为块C),其输出传递到完全连接的层,即第四个组件(表示为块D)。传递到完全连接的层的输入通常包括全局特征而不是局部特征。这种常见的架构适用于大多数主要需要图像的全局特征来对图像进行分类的任务。然而,这些类型的架构无法预测全局特征和局部特征都参与类别预测的类别。

CNN 模型的复杂性随着网络深度的增加而增加,最后一层通常倾向于捕捉图像的复杂特征 [11]。从卷积层捕获的特征被发送到全连接层,以获取有关图像中存在的对象形状的信息并预测其类别。这种有关整体形状和高度复杂特征的信息不适合纹理分析,因为纹理基于复杂度较低的重复局部模式,这需要丰富的局部特征提取。

为了使用为图像分类而开发的基于 CNN 的模型进行纹理分类,域迁移是通过使用从网络 CNN 层输出中提取的特征来完成的。在使用预训练的 CNN 进行基于纹理的分类时,我们面临以下三个主要缺点。

  1. 卷积层后的全连接层捕获图像的空间布局,这对于表示物体的形状很有用,但对于表示纹理则不那么有用。

  2. 需要将固定大小的输入发送到 CNN,以便它与全连接层兼容。这通常是一项昂贵的任务。

  3. 预先训练的 CNN 的深层可能非常特定于领域,并且可能对纹理分类没有太大用处 [9, 11]。

众所周知,任何图像的纹理都是通过其局部结构和局部像素分布来定义的。要分析任何图像的纹理特征,必须研究其基于局部的特征并将其传递给全连接层。然而,传统的 CNN 无法将基于局部的特征传递给全连接层,因为传统 CNN 架构的最后几层使用复杂特征捕捉物体的整体形状并提取全局特征(参见图 5),而不是捕捉局部特征的模式。这就是传统 CNN 架构在基于纹理的数据集上表现不佳的原因。

当纹理提取特征技术与现有的CNN一起添加时,可以改善纹理分类任务的结果。表 1比较了传统的 CNN 方法与使用 Resnet-50 主干以及一些特征提取技术的方法。

在这里插入图片描述

表 1. 传统 CNN 模型与采用特征提取技术的 Resnet-50 在基准数据集上的结果比较 [5][6][7][8]。
使用纹理特征提取策略和深度学习的模型往往比传统的深度学习方法产生更好的结果。这是因为传统的 CNN 模型会捕捉通常用于物体检测的复杂特征,而纹理是使用局部重复模式/特征来识别的。

可以通过使用自定义深度卷积网络来改进 CNN,在卷积层之后与 CNN 一起引入各种纹理提取技术。

定制设计的深度卷积网络结合纹理提取层和预训练层不如单独使用预训练模型或统计上使用纹理特征提取器那么灵活。我们将在第三篇博文“如何在深度学习架构中利用纹理特征”中讨论纹理特征提取以及预训练模型。

七、参考

  1. https://www.robots.ox.ac.uk/~vgg/data/dtd/
  2. https://www.csc.kth.se/cvap/databases/kth-tips/download.html
  3. https://people.csail.mit.edu/lavanya/fmd.html
  4. https://towardsdatascience.com/4-pre-trained-cnn-models-to-use-for-computer-vision-with-transfer-learning-885cb1b2dfc
  5. https://arxiv.org/abs/1801.10324
  6. Deep TEN: Texture Encoding Network
  7. Deep Texture Recognition via Exploiting Cross-Layer Statistical Self-Similarity
  8. Encoding Spatial Distribution of Convolutional Features for Texture Representation
  9. Deep filter banks for texture recognition and segmentation.
  10. Using filter banks in convolutional neural networks for texture classification.
  11. From BoW to CNN: Two Decades of Texture Representation for Texture Classification

以上内容整理来自作者 Trapti Kalra的medium页《Why Traditional CNNs may Fail for Texture-based Classification ?》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1836187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TCGAbiolinks包学习

TCGAbiolinks 写在前面学习目的GDCquery GDCdownload GDC prepare中间遇到的报错下载蛋白质数据 写在前面 由于别人提醒我TCGA的数据可以利用TCGAbiolinks下载并处理,所以我决定阅读该包手册,主要是该包应该是有更新的,我看手册进行更新了&…

美国原装二手KEITHELY2410替代新品keithley2470数字源表

Keithley 2470 高压 SourceMeter 源测量单元 (SMU) 仪器将先进的 Touch, Test, Invent 技术带到您的指尖。它将创新的图形用户界面 (GUI) 与电容式触摸屏技术相结合,使测试变得直观,并最大限度地缩短学习曲线,帮助工程师和科学家更快地学习、…

DBeaver windows下载、安装与连接数据库

下载 官网下载地址:https://dbeaver.io/download/ 安装 1、双击安装 2、下一步…… 选择所有用户 3、组件选择 配置连接数据库 下载驱动

从0到1,揭秘AI产品经理的高薪秘诀,转型之路与实战资源全解析

前言 随着算法模型的日益精进、计算能力的显著提升以及海量数据的积累,人工智能领域正以前所未有的速度蓬勃发展。 在国家政策的积极推动、社会资本的强劲注入下,人工智能产业正处于技术快速进步的黄金时期,其影响力广泛渗透至教育智能化、…

061、Python 包:模块管理

包(Package)是一种用于组织模块的层次结构。包实际上就是一个包含了__init__.py文件的目录,该文件可以为空或包含包的初始化代码。通过使用包,可以更好地组织和管理大型项目中的模块,避免命名冲突,并提高代…

全网最全 Kimi 使用手册,看完 Kimi 效率提升 80%

在当前AI文字大模型领域,ChatGPT4.0无疑是最强大。然而,最近最火爆的大模型非国产Kimi莫属。 相较于其它大模型,Kimi 最大的优势在于,超长文本输入,支持200万汉字,是全球范围内罕见的超长文本处理工具&…

孟德尔随机化R包:TwoSampleMR和MR-PRESSO安装

1. 孟德尔随机化R包 看一篇文章,介绍孟德尔随机化分析,里面推荐了这两个R包,安装了解一下: Methods:Genome-wide association study (GWAS) data for autoimmune diseases and AMD were obtained from the IEU Open GWAS databas…

vue中通过自定义指令实现一个可拖拽,缩放的弹窗

效果 功能描述 按住头部可拖拽鼠标放到边框,可缩放多层重叠丰富的插槽,易于扩展 示例 指令代码 export const dragDialog {inserted: function (el, { value, minWidth 400, minHeight 200 }) {// 让弹窗居中let dialogHeight el.clientHeight ?…

在Linux系统中安装凸语言

凸语言在2023国产编程语言蓝皮书中的介绍如下: 凸语言gitee页面:凸语言: tu-lang 是一种动态类型编译型的通用编程语言, 已实现自举 (gitee.com) 使用git克隆源码: git clone https://github.com/tu-lang/tu.git 安装凸语言环境&#xff1a…

1.4k star 项目 CMakeTutorial 阅读和点评

1.4k star 项目 CMakeTutorial 阅读和点评 文章目录 1.4k star 项目 CMakeTutorial 阅读和点评0. 概要1. CUDA 目录2. FindPackage 目录3. Installation 目录4. PackageManage 目录5. PythonExtension 目录6. ImportExternalProject 目录总结 0. 概要 在 github 搜索关键字 CM…

【ARMv8/ARMv9 硬件加速系列 2.4 -- ARM NEON Q寄存器与V寄存器的关系】

文章目录 Q 与 V 的关系向量寄存器 v 的使用赋值操作寄存器赋值总结Q 与 V 的关系 在ARMv8/v9架构中,v寄存器和q寄存器实际上是对相同的物理硬件资源的不同称呼,它们都是指向ARM的SIMD(单指令多数据)向量寄存器。这些寄存器用于高效执行向量和浮点运算,特别是在多媒体处理…

03-ES6新语法

1. ES6 函数 1.1 函数参数的扩展 1.1.1 默认参数 function fun(name,age17){console.log(name","age); } fn("张美丽",18); // "张美丽",18 fn("张美丽",""); // "张美丽" fn("张美丽"); // &…

‘引爆增长·赋能十堰’第一届学习峰会在十堰东方汉宫国际酒店成功举办

‘引爆增长赋能十堰’第一届学习峰会在十堰东方汉宫国际酒店成功举办 2024年6月 17 至18 日,为期两天的“引爆增长赋能十堰”第一届学习交流峰会在湖北十堰东方汉宫国际酒店一号盛大举行,学习峰会现场,来自十堰地区及邻边地市的上百位实体企业…

网络基础

文章目录 网络发展协议网络分层结构局域网通信IP地址和MAC地址 网络发展 独立模式: 计算机之间相互独立 ; 网络互联: 多台计算机连接在一起, 完成数据共享因为人和人之间数据要互相协作,所以网络的出现是必然的,同时随着网络发展,必然会产生…

yt-dlp:强大的跨平台视频下载器

一、引言 在当今数字时代,视频已成为我们获取信息和娱乐的重要途径。然而,由于版权和网络限制,我们常常无法直接在本地保存我们喜爱的视频。幸运的是,有一个名为yt-dlp的命令行程序,它可以帮助我们从YouTube.com和其他…

NoSQL-Tidis支持分布式事务,兼容redis协议,使用tikv存储引擎,可水平扩展

项目repo地址 GitHub - yongman/tidis: Distributed transactional NoSQL database, Redis protocol compatible using tikv as backend Tidis是分布式数据库,支持redis协议,多种数据结构支持,编写语言为golang。 Tidis工作角色类似于TIDB,提供协议转换和数据结构计算,底…

Jenkins教程-3-github自动化测试任务构建

上一小节我们学习了Jenkins在windows和mac系统上安装搭建环境的方法,本小节我们讲解一下Jenkins构建github自动化测试任务的方法。 接下来我们以windows系统为例,讲解一下构建实际自动化测试任务的具体步骤。 安装git和github插件 点击进入Jenkins插件…

自杀行为的神经生物学认识

自杀行为的神经生物学认识 编译 李升伟 隐藏在自杀行为背后的大脑生化机制正引领人类对自杀的认识从黑暗步入光明。科学家希望未来这些机制能带来更好的治疗和预防策略。 基斯 • 范希林根(Cornelis Van Heeringen)第一次遇见瓦莱丽( Va…

dmhs同步因目的端表自增列报错解决方法

dmhs同步因目的端表自增列报错解决方法 1 dmhs copy 装载数据时报错 HY000 CODE:-27232 配置源端捕获器cpt 1 dmhs copy 装载数据时报错 HY000 CODE:-2723 ERR:Only if specified in the column list and SET IDENTITY INSERT is ON, then identity column could be assigned …

04-对原生app应用中的元素进行定位

本文介绍对于安卓原生app应用中的元素如何进行定位。 一、uiautomatorviewer uiautomatorviewer是Android-SDK自带的一个元素定位工具,非常简单好用,可以使用该工具查看app应用中的元素属性,帮助我们在代码中进行元素定位。 1)使…