深度学习遥感影像分类(1)_数据集批量准备

近年来,深度学习在遥感影像地物分类中取得了一系列显著的效果。CNN可以很好的获取影像纹理信息,捕捉像素与像素之间的空间特征,因此,一个训练好的深度学习模型在地物提取中具有很大的优势。但模型的训练却是一个很繁琐的任务,需要人工准备数据集,贴标签,训练模型等。本文将以sar影像为例实现冰水二分类的数据集批量准备工作(划线取点截取小图片保存):

1.原始sar遥感影像

2.预处理思路:

a.人工划线:对应在冰和水上画n条线(自己设置,注意自己需要针对类别所占比例控制线条数量和长度)

b.保存小图片:获取直线上点坐标,以每个像素点为中心取21×21的小图片(类似mnist数据集,尺寸自己设置),保存至文件夹

c. 创建label:以保存的小图片名称+空格+类别(0或者1)将label保存至新创建的txt文档中

3.代码实现:

a.创建一个main函数调用drawTrainingSamples(img);CreateTrainSmallImages(img);drawValSamples(img);CreateValSmallImages(img);这四个函数,功能分别是和划训练集,创建训练集,划验证集,创建验证集

clear ;
clc;

img = imread(‘150905_multilook_4_s1a-ew-grd-hv-20150905t174712-20150905t174812-007583-00a7f0-002.tiff‘);
%准备训练集数据
drawTrainingSamples(img);
CreateTrainSmallImages(img);

%准备验证集数据
drawValSamples(img);
CreateValSmallImages(img);

b.drawTrainingSamples(img)

function [] = drawTrainingSamples(img)
n_ice=4;
n_water=4;
h_im=imshow(img);
bw_train_ice=zeros(size(img));
bw_train_water=zeros(size(img));
fprintf(‘please draw four lines on the picture for preparing the training sets of Ice‘);
for i = 1:n_ice
    h = imline;
    bw = createMask(h,h_im);
    bw_train_ice=bw_train_ice+bw;
end
figure,imshow(bw_train_ice);

 h_im=imshow(img);
 fprintf(‘please draw four lines on the picture for preparing the training sets of Water‘);
 for i = 1:n_water
    h = imline;
    bw = createMask(h,h_im);
    bw_train_water=bw_train_water+bw;
 end
figure,imshow(bw_train_water);

 save(‘bw_train_ice.mat‘,‘bw_train_ice‘);
 save(‘bw_train_water.mat‘,‘bw_train_water‘);

c.CreateTrainSmallImages(img)

function [] = CreateTrainSmallImages(img)

%创建小图片
      load bw_train_ice;
      load bw_train_water;
       fprintf(‘Creating training small images...‘);
        [X,Y]=find(bw_train_ice==1);
        A=[X,Y];
        A;
        [a,b]=size(A);
        mkdir(‘train‘);

            for i=1:a
                    m=A(i,1);
                    n=A(i,2);
                    SmallImage=img(m-10:m+10,n-10:n+10);
                    imwrite(SmallImage,[‘train/‘,num2str(i),‘.jpg‘]);

                    fid = fopen(‘train.txt‘, ‘a‘);
                    t=[num2str(i),‘.jpg‘];
                    fprintf(fid, ‘%s %d \n‘, t,0);
                    fclose(fid);
            end

        [X,Y]=find(bw_train_water==1);
        B=[X,Y];
        B;
        [a,b]=size(B);

            for j=1:a
                    m=B(j,1);
                    n=B(j,2);
                    SmallImage=img(m-10:m+10,n-10:n+10);
		             j=i+j;
                    imwrite(SmallImage,[‘train/‘,num2str(j),‘.jpg‘]);

                    fid = fopen(‘train.txt‘, ‘a‘);
                    t=[num2str(j),‘.jpg‘];
                    fprintf(fid, ‘%s %d \n‘, t,1);
                    fclose(fid); 

            end
end

d.drawValSamples(img)

function [] = drawValSamples(img)
n_ice=4;
n_water=4;
h_im=imshow(img);
bw_val_ice=zeros(size(img));
bw_val_water=zeros(size(img));
fprintf(‘please draw four lines on the picture for preparing the validition sets of Ice‘);
for i = 1:n_ice
    h = imline;
    bw = createMask(h,h_im);
    bw_val_ice=bw_val_ice+bw;
end
figure,imshow(bw_val_ice);

 h_im=imshow(img);
 fprintf(‘please draw four lines on the picture for preparing the validition sets of Water‘);
 for i = 1:n_water
    h = imline;
    bw = createMask(h,h_im);
    bw_val_water=bw_val_water+bw;
 end
figure,imshow(bw_val_water);

 save(‘bw_val_ice.mat‘,‘bw_val_ice‘);
 save(‘bw_val_water.mat‘,‘bw_val_water‘);

e.CreateValSmallImages(img)

function [] = CreateValSmallImages(img)

%创建小图片
      load bw_val_ice;
      load bw_val_water;

        [X,Y]=find(bw_val_ice==1);
        A=[X,Y];
        A;
        [a,b]=size(A);
        mkdir(‘val‘);
          fprintf(‘Creating validition sets small images...‘);
            for i=1:a
                    m=A(i,1);
                    n=A(i,2);
                    SmallImage=img(m-10:m+10,n-10:n+10);
                    imwrite(SmallImage,[‘val/‘,num2str(i),‘.jpg‘]);

                    fid = fopen(‘val.txt‘, ‘a‘);
                    t=[num2str(i),‘.jpg‘];
                    fprintf(fid, ‘%s %d \n‘, t,0);
                    fclose(fid);
            end

        [X,Y]=find(bw_val_water==1);
        B=[X,Y];
        B;
        [a,b]=size(B);

            for j=1:a
                    m=B(j,1);
                    n=B(j,2);
                    SmallImage=img(m-10:m+10,n-10:n+10);
		            j=i+j;
                    imwrite(SmallImage,[‘val/‘,num2str(j),‘.jpg‘]);

                    fid = fopen(‘val.txt‘, ‘a‘);
                    t=[num2str(j),‘.jpg‘];
                    fprintf(fid, ‘%s %d \n‘, t,1);
                    fclose(fid); 

            end
end
时间: 2024-10-04 06:33:32

深度学习遥感影像分类(1)_数据集批量准备的相关文章

深度学习与自然语言处理(4)_斯坦福cs224d 大作业测验1与解答

深度学习与自然语言处理(4)_斯坦福cs224d 大作业测验1与解答 作业内容翻译:@胡杨([email protected]) && @胥可([email protected]) 解答与编排:寒小阳 && 龙心尘 时间:2016年6月 出处: http://blog.csdn.net/han_xiaoyang/article/details/51760923 http://blog.csdn.net/longxinchen_ml/article/details/51765

深度学习用于文本分类的论文及代码集锦

深度学习用于文本分类的论文及代码集锦 原创: FrankLearningMachine 机器学习blog 4天前 [1] Convolutional Neural Networks for Sentence Classification Yoon Kim New York University EMNLP 2014 http://www.aclweb.org/anthology/D14-1181 这篇文章主要利用CNN基于预训练好的词向量中对句子进行分类.作者发现利用微调来学习任务相关的词向量可

深度学习与自然语言处理(3)_斯坦福cs224d Lecture 3

原文作者:Rohit Mundra, Richard Socher 原文翻译:@熊杰([email protected]) && @王昱森([email protected]) && @范筑军老师( [email protected]) && @OWEN([email protected]) 内容校正:寒小阳 && 龙心尘 时间:2016年6月 出处:http://blog.csdn.net/han_xiaoyang/article/deta

深度学习与自然语言处理(2)_斯坦福cs224d Lecture 2

原文作者:Rohit Mundra, Richard Socher 原文翻译:@熊杰([email protected]) && @王昱森 内容调整与校对:寒小阳 && 龙心尘 特别鸣谢:@面包包包包包同学的帮助 时间:2016年6月 出处:http://blog.csdn.net/han_xiaoyang/article/details/51648483 http://blog.csdn.net/longxinchen_ml/article/details/5164853

深度学习与计算机视觉系列(1)_基础介绍

1.背景 计算机视觉/computer vision是一个火了N年的topic.持续化升温的原因也非常简单:在搜索/影像内容理解/医学应用/地图识别等等领域应用太多,大家都有一个愿景『让计算机能够像人一样去”看”一张图片,甚至”读懂”一张图片』. 有几个比较重要的计算机视觉任务,比如图片的分类,物体识别,物体定位于检测等等.而近年来的神经网络/深度学习使得上述任务的准确度有了非常大的提升.加之最近做了几个不大不小的计算机视觉上的项目,爱凑热闹的博主自然不打算放过此领域,也边学边做点笔记总结,写点

深度学习与计算机视觉系列(8)_神经网络训练与注意点

作者:寒小阳 时间:2016年1月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/50521064 声明:版权所有,转载请联系作者并注明出处 1.训练 在前一节当中我们讨论了神经网络静态的部分:包括神经网络结构.神经元类型.数据部分.损失函数部分等.这个部分我们集中讲讲动态的部分,主要是训练的事情,集中在实际工程实践训练过程中要注意的一些点,如何找到最合适的参数. 1.1 关于梯度检验 之前的博文我们提到过,我们需要比对数值梯度和解析

深度学习与自然语言处理(7)_斯坦福cs224d 语言模型,RNN,LSTM与GRU

翻译:@胡杨([email protected]) && @胥可([email protected]) 校对调整:寒小阳 && 龙心尘 时间:2016年7月 出处: http://blog.csdn.net/han_xiaoyang/article/details/51932536 http://blog.csdn.net/longxinchen_ml/article/details/51940065 说明:本文为斯坦福大学CS224d课程的中文版内容笔记,已得到斯坦福大学

深度学习与自然语言处理(6)_斯坦福cs224d 一起来学Tensorflow part1

内容翻译:@穆文(微信公众号 数据挖掘机养成记) && 寒小阳 校正调整:寒小阳 && 龙心尘 时间:2016年7月 出处: http://blog.csdn.net/han_xiaoyang/article/details/51871068 http://blog.csdn.net/longxinchen_ml/article/details/51823339 说明:本文为斯坦福大学CS224d课程的中文版内容笔记整理,已得到斯坦福大学课程@Richard Socher教

深度学习与自然语言处理(5)_斯坦福cs224d 大作业测验2与解答

作业内容翻译:@胡杨([email protected]) && @面包君 && Fantzy同学 校正与调整:寒小阳 && 龙心尘 时间:2016年6月 出处: http://blog.csdn.net/han_xiaoyang/article/details/51815683 http://blog.csdn.net/longxinchen_ml/article/details/51814343 说明:本文为斯坦福大学CS224d课程的中文版内容笔记,已