首页 > 其他分享 >多光谱遥感分类(二):VGG微调

多光谱遥感分类(二):VGG微调

时间:2022-10-26 21:34:27浏览次数:50  
标签:光谱 VGG label 遥感 import 128 input model dir


继上篇。

CNN模型

使用VGG16预训练模型。

from keras.preprocessing.image import ImageDataGenerator
from keras.callbacks import TensorBoard
from keras.applications import VGG16
from keras import layers,models,optimizers



train_pic_gen=ImageDataGenerator(rescale=1./255,rotation_range=20,width_shift_range=0.2,height_shift_range=0.2,
shear_range=0.2,zoom_range=0.5,horizontal_flip=True,fill_mode='nearest')
test_pic_gen=ImageDataGenerator(rescale=1./255)
train_flow=train_pic_gen.flow_from_directory("data/1_train",(128,128),batch_size=128,class_mode='categorical')
test_flow=test_pic_gen.flow_from_directory("data/1_test",(128,128),batch_size=128,class_mode='categorical')

# print(test_flow.class_indices)
### {'169': 0, '26': 1, '6': 2}

conv_base=VGG16(weights='imagenet',include_top=False,input_shape=(128,128,3))
model = models.Sequential()
model.add(conv_base)
model.add(layers.Flatten())
model.add(layers.Dense(1024, activation='relu'))
model.add(layers.Dense(20, activation='softmax'))

trainable=False
for layer in conv_base.layers:
if layer.name=='block4_conv1':
trainable=True
layer.trainable=trainable
model.summary()

model.compile(loss='categorical_crossentropy',optimizer=optimizers.adam(lr=1e-5),metrics=['acc'])

model.fit_generator(train_flow,steps_per_epoch=60,epochs=100,verbose=1,
validation_data=test_flow,validation_steps=20,callbacks=[TensorBoard(log_dir='output/logs/t')])

model.save("output/classify3_vgg16_pro.h5")

查看结果(混淆矩阵、kappa、分类报告)。test_in_te.py

from keras.models import load_model
import numpy as np
import cv2
import os

model=load_model("output/classify3_vgg16_pro.h5")
vec={'bf': 0, 'br': 1, 'cc': 2, 'cx_b': 3, 'cx_gw': 4, 'cx_rw': 5, 'dp': 6, 'gf': 7, 'gh': 8, 'gr': 9, 'greenh': 10, 'lt': 11, 'of': 12, 'ptc': 13, 'rf': 14, 'st': 15, 'wm': 16, 'wr': 17, 'wt': 18, 'xkc': 19}

#使用测试集数据验证
res=[]
true_label=[]

def get_inputs(src=[]):
pre_x = []
for s in src:
input = cv2.imread(s)
input = cv2.resize(input, (128, 128))
input = cv2.cvtColor(input, cv2.COLOR_BGR2RGB)
pre_x.append(input) # input一张图片
pre_x = np.array(pre_x) / 255.0
return pre_x

org_dir="data/1_test/"
for dir in os.listdir(org_dir):
print("deal:%s" % dir)
label=dir
for d in os.listdir(org_dir + dir):
pre_x=get_inputs([org_dir+dir+"/"+d])
pred=np.argmax(model.predict(pre_x)[0])
pred=list(vec.keys())[pred]
res.append(pred)
true_label.append(label)

from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.metrics import cohen_kappa_score


print(confusion_matrix(true_label,res))
print()
print(classification_report(true_label,res))
print("kappa: ",cohen_kappa_score(true_label,res))
mat = confusion_matrix(true_label,res)
sns.heatmap(mat,annot=True,square=True,fmt="d",xticklabels=list(vec.keys()),yticklabels=list(vec.keys()))
plt.show()


标签:光谱,VGG,label,遥感,import,128,input,model,dir
From: https://blog.51cto.com/u_15847885/5798582

相关文章

  • 多光谱遥感分类(四):使用GLCM+RF
    所用数据:​​多光谱遥感分类:使用CNN1(一)​​提取纹理特征。importnumpyasnpimportcv2importosfromskimage.featureimportgreycomatrix,greycopropsimportpandasas......
  • 【计算机视觉(CV)】基于图像分类网络VGG实现中草药识别(一)
    【计算机视觉(CV)】基于图像分类网络VGG实现中草药识别(一)作者简介:在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学......
  • RepVGG论文详解
    RepVGG论文详解RepVGG是截止到2021.2.9日为止最新的一个轻量级网络架构。在我的测试中,其在安霸CV22上的加速效果不如ShuffleNetv2。根据作者的描述,RepVGG是为G......
  • VGG模型-文献阅读笔记
    论文简介该论文提出深度神经网络的深度对于大规模图像识别模型的表现有显著提升。模型使用3*3的小型卷积过滤器和较小的卷积层步幅,并且其神经网络层数达到了16-19层。基于......
  • 基于高光谱的无损检测技术
    高光谱图像技术最早应用在遥感军事领域,用于地面目标探测,地面物体分类。由于不同物质的理化性质决定了其对不同波段的光表现出不同的光谱特性,近十年来,利用高光谱做食品、农产......
  • 猫狗识别-CNN与VGG实现
    本次项目首先使用CNN卷积神经网络模型进行训练,最终训练效果不太理想,出现了过拟合的情况。准确率达到0.72,loss达到0.54。使用预训练的VGG模型后,在测试集上准确率达到0.91,取......
  • 遥感期末复习
    title:遥感期末复习excerpt:考完试就删~tags:[遥感,期末]categories:[life,杂谈]index_img:https://picture-store-repository.oss-cn-hangzhou.aliyuncs.com......
  • 一阶导数光谱检测吸收波段方法的程序
    clc;clear;closeall;%[WaveLength,Orig_Spectrum]=textread('Neodymium_Oxide.txt','%f%f','headerlines',3);[WaveLength,Orig_Spectrum]=textread('Alunite_GDS84_Na......
  • VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION(VGG) 阅读笔记(22
    VERYDEEPCONVOLUTIONALNETWORKSFORLARGE-SCALEIMAGERECOGNITION(VGG)阅读笔记(22.10.05)摘要:本文研究在大规模图像识别设置中卷积网络深度对其准确性的影响。主要贡献......
  • VGG 网络
    2014年提出3*3替换5*5的卷积核和7*7的卷积核感受野拓展节省网络训练所需参数7的卷积核49C²计算量三个3的卷积核只要27C²......