第12组 Alpha (1/3)

小组完成了成员分工,进行了web前后端及高光谱图像分类的学习。重点介绍了高光谱图像分类的背景,提出了2D和3D CNN结合的HybridSN网络,并列举了实施过程中遇到的困难,如文件路径问题、代码理解难题等。
摘要由CSDN通过智能技术生成

目录

一、过去完成的任务

1.制定了小组成员分工

2.进行了相关知识的初步学习

3.对高光谱图像分类进行学习

二、燃尽图

三、例会照片


一、过去完成的任务

        在第一周中,我们小组举行了线下的站立会议,集体讨论凝聚团队智慧,并在课下时间积极工作,在以下几个方面上取得进展。

1.制定了小组成员分工

        (1)来轩羽、李发文:web后端的学习与程序编写,将主要功能实现迁移到web中。

        (2)舒康恒、孙铭君:web前端的学习与程序编写,构建一个美观、功能齐全的web网站。

        (3)崔轩铭、曹聪语:负责学习python,将高光谱图像分类用python初步实现。

2.进行了相关知识的初步学习

其中两人主要学习web前端,两人负责学习web后端,两人负责python与高光谱图像分类的学习。

3.对高光谱图像分类进行学习

(1)简介

        高光谱图像分类(HSI)被广泛应用于遥感图像分析,而CNN是视觉数据处理中应用最广泛的深度学习方法。近期也有大量科学实验进展将CNN应用于高光谱图像分类(HSI),但这些方法大多都是基于2D CNN网络,而高光谱分类的结果主要依赖于空间信息和光谱信息。目前很少有人使用3D CNN网络,主要是因为它大大增加了计算复杂度。基于此,这篇文章作者提出一个全新的思路,就是将2D CNN和3D CNN进行结合,生成一个新的网络HybridSN,并用它来进行高光谱分类。该网络利用3D卷积提取空间特征和光谱特征,然后利用2D卷积学习抽象的空间特征。同时,HybridSN网络相比于3D CNN网络,也降低了模型的复杂度。
(2)定义HybridySN

class_num = 16

class HybridSN(nn.Module):
  def __init__(self):
    super(HybridSN, self).__init__()
    self.conv3d_1 = nn.Sequential(
        nn.Conv3d(1, 8, kernel_size=(7, 3, 3), stride=1, padding=0),
        nn.BatchNorm3d(8),
        nn.ReLU(inplace = True),
    )
    self.conv3d_2 = nn.Sequential(
        nn.Conv3d(8, 16, kernel_size=(5, 3, 3), stride=1, padding=0),
        nn.BatchNorm3d(16),
        nn.ReLU(inplace = True),
    ) 
    self.conv3d_3 = nn.Sequential(
        nn.Conv3d(16, 32, kernel_size=(3, 3, 3), stride=1, padding=0),
        nn.BatchNorm3d(32),
        nn.ReLU(inplace = True)
    )

    self.conv2d_4 = nn.Sequential(
        nn.Conv2d(576, 64, kernel_size=(3, 3), stride=1, padding=0),
        nn.BatchNorm2d(64),
        nn.ReLU(inplace = True),
    )
    self.fc1 = nn.Linear(18496,256)
    self.fc2 = nn.Linear(256,128)
    self.fc3 = nn.Linear(128,16)
    self.dropout = nn.Dropout(p = 0.4)

  def forward(self,x):
    out = self.conv3d_1(x)
    out = self.conv3d_2(out)
    out = self.conv3d_3(out)
    out = self.conv2d_4(out.reshape(out.shape[0],-1,19,19))
    out = out.reshape(out.shape[0],-1)
    out = F.relu(self.dropout(self.fc1(out)))
    out = F.relu(self.dropout(self.fc2(out)))
    out = self.fc3(out)
    return out

(3)创建数据集

# 对高光谱数据 X 应用 PCA 变换
def applyPCA(X, numComponents):
    newX = np.reshape(X, (-1, X.shape[2]))
    pca = PCA(n_components=numComponents, whiten=True)
    newX = pca.fit_transform(newX)
    newX = np.reshape(newX, (X.shape[0], X.shape[1], numComponents))
    return newX

# 对单个像素周围提取 patch 时,边缘像素就无法取了,因此,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值