【机器视觉】卷积神经网络实现23类海洋生物识别,轻松解决课程作业

该博客探讨了如何利用Mobilenet实现海洋生物识别,通过处理一个包含27370个鱼类图像的数据集,涵盖23个类别。尽管数据不平衡,但预训练的Mobilenet模型在验证集上表现出色,为解决此类问题提供了有效方法。

Mobilenet实现海洋生物识别

近几十年来,海洋生物多样性的成像技术飞速发展并逐渐成熟。随着海洋生态的特殊性及复杂性的日益增进,大量的图像或视频无法全部由人工处理,迫切需要识别相关内容、分类和标记的自主流程。所以,建立健全完善、分布广泛的监测网络是长久以来研究者们关注的问题。这种网络可以提供充足的有效信息与变量,并且能准确描述所观测物种的生态动态。

数据集
采用的海洋生物数据集是由台湾电力公司、台湾海洋研究所和垦丁国家公园在2010年10月1日至2013年9月30日期间,在台湾南湾海峡、兰屿岛和胡比湖的水下观景台收集的鱼类图像数据集,共生成了27370 个经过验证的鱼类图像。 整个数据集分为 23 个集群,每个集群由一个代表性物种呈现,这是基于类群单系范围内的突触特征。 代表性图像表示下图中显示的集群之间的区别,例如 有无成分(臀鳍、鼻、眶下)、具体数量(6条背鳍棘、2条背鳍棘刺)、特殊形状(第二条背鳍棘长)等。此图为代表 鱼种名称和检测数量。 数据非常不平衡,最常见的物种比最少的物种多出大约 1000 倍。
样本示例
模型
将普通的三层CNN模型与预训练Mobilenet模型做对照组:

import paddle
import paddle.nn.functional as F

class MyCNN(paddle.nn.Layer):
    def __init__(self):
        super(MyCNN,self).__init__()
        self.conv1 = Conv2D(in_channels=3, out_channels=20, kernel_size=5,stride=1)        
        self.pool1 = MaxPool2D(kernel_size=2, stride=2)
        self.conv2 = Conv2D(in_channels=20, out_channels=50, kernel_size=5,stride=1)
        self.pool2 = MaxPool2D(kernel_size=2, stride=2)
        self.conv3 = Conv2D(in_channels=50, out_channels=50, kernel_size=5,stride=1)
        self.pool3 = MaxPool2D(kernel_size=2, stride=2)
        self.linear1 = Linear(in_features=200, out_features=23)
    
    def forward(self, input):
        x = self.conv1(input)
        x = F.relu(x)
        x = self.pool1(x)

        x = self.conv2(x)
        x = F.relu(x)
        x = self.pool2(x)

        x = self.conv3(x)
        x = F.relu(x)
        x = self.pool3(x)
        x = paddle.flatten(x, start_axis=1,stop_axis=-1)  
        x = self.linear1(x)
        x=F.softmax(x)
        return x

class MyNet(paddle.nn.Layer):
    def __init__(self,in_features):
        super(MyNet,self).__init__()
        self.layer=paddle.vision.models.mobilenet_v1(pretrained=True)
        self.fc = paddle.nn.Linear(in_features, 23)
    def forward(self,x):
        x=self.layer(x)
        x=self.fc(x)
        return x

Mobilenet网络结构
将数据集进行预处理后,划分为训练、验证和测试集:
训练
训练loss和acc
验证
验证loss和acc
可见在验证集下也能达到很好的效果,在调整参数后,准确率还有较大的提升空间。
测试

测试结果与真实值对比
数据集、代码、文档打包链接:
海洋生物识别项目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

往晓风

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值