海洋生物识别
台湾电力公司、台湾海洋研究所和垦丁国家公园在2010年10月1日至2013年9月30日期间,在台湾南湾海峡、兰屿岛和胡比湖的水下观景台收集的鱼类图像数据集。
该数据集包括23类鱼种,共27370张鱼的图像,都是RGB彩色图像,该数据集的目标是通过训练一个模型,使其能够正确地识别海洋生物的种类。每张图像都有对应的标签,表示图像中生物种类。因此,该数据集是一个经典的监督学习问题,其中输入是图像,输出是对应的生物种类标签。

图 1Fish4Knowledge23 数据集图像示例
本次实验,在跑完老师提供的 PaddlePaddle 代码的基础上,采用PaddlePaddle环境进一步训练模型,利用PaddlePaddle的可视化插件VisualDL进行训练模型过程的可视化。
另附代码见附录和.ipynb 文件。
本次实验,我主要比较了几种不同的经典神经网络在 Fish4Knowledge23 数据集上的表现,包括老师给的MYCNN,经典模型如MLP,LeNet , AlexNet,VGGNet和GoogLeNet。
-
-
- MYCNN
-
![]() |

图 1 MYCNN网络结构
卷积层:执行卷积操作提取底层到高层的特征,发掘出图片“局部特性”;
池化层:通过降采样的方式,在不影响图像质量的情况下,压缩图片,减少参数;
全连接层:池化完成后,将数据“拍平”,丢到Flatten层,然后把Flatten层的输出放到全连接层里,可采用softmax对其进行分类。
-
-
- MLP
-
其中,MLP的网络设置如下:

图 2 多层感知机网络结构
定义了三个全连接(线性)层 (fc1、fc2 和 fc3)。
输入张量 x 沿第二个轴展平。将展平后的输入通过第一个线性层 (fc1)。应用 ReLU 激活函数。将结果通过第二个线性层 (fc2)。再次应用 ReLU 激活函数。将结果通过第三个线性层 (fc3)。最后,在轴 1 上应用 softmax 激活函数,获得输出概率。
这个 MLP 架构包括两个带有 ReLU 激活的线性层,最后使用 softmax 激活进行多类别分类。
-
-
- LeNet
-
LeNet 是由 Yann Lecun 和他的同事于 1998 年提出的卷积神经网络(Convolutional Neural Network,CNN)架构。它是深度学习领域中的开创性网络之一,被广泛应用于手写字符识别等任务。以下是 LeNet 的一般介绍:

图 3 LeNet 结构
LeNet 结构:
LeNet 主要包含两个部分:卷积层和全连接层。
1.卷积层部分:
- 第一个卷积层 (self.conv1):输入通道数为3,输出通道数为6,卷积核大小为5x5,步长为1。接着应用ReLU激活函数。
- 第一个池化层 (self.pool1):使用最大池化操作,池化核大小为2x2,步长为2。
- 第二个卷积层 (self.conv2):输入通道数为6,输出通道数为16,卷积核大小为5x5,步长为1。接着应用ReLU激活函数。
- 第二个池化层 (self.pool2):使用最大池化操作,池化核大小为2x2,步长为2。
2.全连接层部分:
- 全连接层1 (self.fc1):输入特征数为16乘以8乘以8(经过两次池化后的图像大小),输出特征数为120。接着应用ReLU激活函数。
- 全连接层2 (self.fc2):输入特征数为120,输出特征数为84。接着应用ReLU激活函数。
- 全连接层3 (self.fc3):输入特征数为84,输出特征数为23(对应23个分类类别)。
关键点和创新:
1. 卷积和下采样: LeNet 首次引入了卷积操作和下采样(池化)操作,通过这些操作有效地减小了网络的参数数量。
2. 非线性激活函数:使用ReLU激活函数引入了非线性映射,增强了网络的表示能力。
3. 层次结构:LeNet 显示了通过层次结构构建深度网络的可行性,为后续深度学习模型奠定了基础。
尽管 LeNet 本身在今天的大规模图像分类任务中可能显得较为简单,但它为卷积神经网络的发展奠定了基础,为后来更深层次的网络(如 AlexNet、VGG、ResNet 等)的设计提供了灵感。
-
-
- AlexNet
-
AlexNet是一种深度卷积神经网络(CNN),由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton在2012年提出。它在ImageNet Large Scale Visual Recognition Challenge(ImageNet ILSVRC)比赛中取得了显著的突破,成为深度学习在计算机视觉领域的重要里程碑。
其网络结构如下:

图 4 AlexNet 网络结构
同时,在本实验中输入图像尺寸为 3*47*47 。
以下是AlexNet的主要特点和架构:
- 深度:AlexNet是一个相对较深的神经网络,它有8个可训练的卷积层和3个全连接层。在当时,它是迄今为止最深的神经网络之一。
- 卷积层:AlexNet的前5个层是卷积层,其中,前两个卷积层具有较大的卷积核尺寸(11x11和5x5),并且采用了步长为4和2的较大步幅。这些卷积层能够提取出更高级的特征。
- 激活函数:AlexNet使用了修正线性单元(ReLU)作为激活函数,这在当时是一种比较新颖的选择。ReLU函数能够有效地缓解梯度消失问题,并加速训练过程。
- 池化层:在卷积层之后,AlexNet使用了最大池化层来降低特征图的空间维度,减少模型的参数量,并提高模型的鲁棒性。
- 局部响应归一化(LRN