ResNet已经被广泛运用于各种特征提取应用中,主要是为了解决梯度消失和梯度爆炸的问题。类激活映射(Class Activation Mapping,CAM)是一种用于图像分割、目标检测和语义分割等计算机视觉任务的算法。它通过计算输入图像中每个小区域的激活值,然后将这些值合并为一个输出图像,以突出图像中不同类别的特定区域。本文用基于TensorFlow2.x的代码演示实现绘制ResNet50...
在保存了使用TensorFlow神经网络训练的模型后,需要使用模型进行推理。但是如果模型比较大的话,推理的时间就比较慢。但是,实际上也是有一定的方法用来提高模型的推理速度的。我询问了ChatGPT,下面的回答也是ChatGPT的回答,给我了一些启发。目前我更多的是试试第一种方法,因为TensorFlow Lite我还真没用过,还是有一定的好奇心。
将TensorFlow模型转换为TensorFlow Lite模型可以将模型转换为适用于移动设备和嵌入式设备的格式,从而提高模型的推理速度和降低模型大小。基于TensorFlow 2.x版本,转换步骤如下:
在文章『PyTorch四种天气分类数据集下载及代码(Dropout、BatchNorm)』中,使用torchvision.datasets.ImageFolder直接从文件夹里加载所有的图片,事实上在TensorFlow的ImageDataGenerator类来从文件夹中读取图像数据,并将它们自动地分成训练和验证集。本文还展示了如何使用fit_generator进行训练,使用fit_gene...
TensorFlow官方在Github上也提供了model的源码(点击查看),但是需要手动编译,这里用到的资料是日月光华老师的提供资料,提供的model是已经编译好的文件。注意,本文是针对Windows端的用户,Linux端可以完全按照TensorFlow官方教程走。
前面写了LinkNet模型的搭建以及初始化,本节其实没啥新内容,就是把前面的几章节汇总到一起,是一份基于TensorFlow使用街景数据集的LinkNet的完整代码。
在前面以及建立了卷积模块、反卷积模块——>编码器、解码器。本小节就是通过搭积木的方式创建LinkNet模型。LinkNet模型相对还是很简单的,对照着模型图加上前面封装的类还是很简单就能完成。
在前面一节,简要介绍了LinkNet模型。从本节起,就开始上代码,把前面那个论文里的模型给写出来。本节先编写模型的卷积模块和反卷积模块,再通过调用卷积模块和反卷积模块,实现编码器与解码器。数据集的读取和前面使用U-net模型是一模一样的,所以就不再赘述,直接拷贝过来就行了。
像素级的图像语义分割不仅需要精确,还需要高效,以便应用到实时应用。例如在自动驾驶中,如果实时性比较差,则可能会出现安全问题。现有的一些语义分割算法,虽然精度可能比较高,但是往往参数量巨大,运算开销很高。为了解决这个问题,有学者提出了LinkNet算法。LinkNet用到了大量的残差链接。
在前面文章『深度学习的层数并非越深越好,ResNet是如何解决梯度消失或爆炸的问题』,简要介绍了一些关于ResNet的知识。我们知道ResNet其实是由一个个小块组成的,本文就是以下图这中这两个layer的模块为例进行代码的简单演示。
在本节开始,就是正式搭建Unet模型了。在本次搭建模型的过程中,将采用一定的封装来搭建网络,因为U-net模型有个显著的特点,就是很多重复的步骤,比如下采样、两层卷积——>下采样、两层卷积......因此可以做一个封装让程序更加简化。