IGARSS2019-项目实战总结-keras
0.写在前边
这算得上是真正意义上接触的第一个深度学习项目了。果真在既没有经验,又没有实力的情况下,项目被搞得一团糟。实践出真知,赶紧总结吸取教训!!!
1.项目流程
1.1数据流
(1)超参传递
1)通过.py传递
eg: params.py中存储超参[OPTIMIZER = ‘Adam’]的值;则在新的.py文件中导入[import params],便可通过 params.OPTIMIZER获得超参的值;
2)通过sys传递外部参数
(2)数据读取过程
1)获取图像名称列表:glob;
2)生成batches索引列表;
3)生成(图像,标签)batch:i加载数据;ii数据预处理[数据增广、归一化、标签转换等];
实用代码
数据增广
from albumentations import (PadIfNeeded,HorizontalFlip, # VerticalFlip, # CenterCrop, Crop,Compose, #Transpose, #RandomRotate90, #ElasticTransform,GridDistortion, OpticalDistortion,RandomSizedCrop,OneOf,CLAHE,RandomContrast,RandomGamma,RandomBrightness
)
def image_augmentation(currImg, labelMask):aug = Compose([VerticalFlip(p=0.5), RandomRotate90(p=0.5),HorizontalFlip(p=0.5),Transpose(p=0.5)])augmented = aug(image=currImg, mask=labelMask)imageMedium = augmented['image']labelMedium = augmented['mask']return imageMedium,labelMedium
RGB图像归一化:从[0-255]到[0-1]
from keras.applications import imagenet_utils
imgBatch = imagenet_utils.preprocess_input(imgBatch)
imgBatch = imgBatch / 255.0
1.2模型&代码
(通用定义)
from keras.layers import Input
# 定义模型所需要的 [输入的张量(占位?),张量的形状]
input_tensor = Input(shape=(imgSz[0],imgSz[1],self.params.NUM_CHANNELS))
input_shape = (imgSz[0],imgSz[1],self.params.NUM_CHANNELS)
# 模型逐层定义# backbone# 自定义# model = Model(input, x)# 损失函数# 优化算法# 编译# return model
#
后处理
语义分割
pred = np.argmax(pred, axis=2).astype('uint8')
高度预测
pred = convert_labels(pred, self.params, toLasStandard=True)
最后
pred = pred[:,:,0]
tifffile.imsave(os.path.join(self.params.OUTPUT_DIR, outName), pred, compress=6)
训练&推理
推理阶段:模型不需要损失函数和优化算法;
对数据的预处理和后处理是基本相同的;
2.模型&代码(基模差定义)
2.0 模型基础
特征交互的方式:
(1)级联:通道数变为原来的两倍
(2)级联再卷积:卷积的目的是降低通道数与原来保持一致
(3)加:逐元素相加 ----线性和、加权和
(4)乘:逐元素相乘
金字塔的表现方式:
(1)图像金字塔:图像resize到不同尺寸,基于不同尺寸的图像做预测;
(2)特征金字塔:图像–特征(不同尺寸的特征),基于不同尺寸的特征做预测;
(3)FPN:金字塔特征+顶层特征与低层特征融合;
resnet的特点: 包含残差块,即上一块的输出与下一层的输出融合
2.1 UNet
encoder-decoder结构
四个卷积块 & 四个上采样块 + skip connection
2.2 FPN
特征金字塔 预测
2.3 LinkNet
四个卷积块 & 四个上采样块 + skip connection
编码时resnet作为backbone
2.4 PSPNet
金字塔池化模块:不同尺度的池化得到不同尺度的特征,再上采样到原来的大小,进行级联;
3.小细节
- 命名: 项目、文件夹、文件、类、函数、方法、变量等,任何需要命名的东西,做到简洁、见名知意;
- 版本控制: 不同版本间的名称做到有序有意;
– 版本控制的方法:外隔离、内隔离;(源码多是外隔离[.py],师兄多是内隔离[class]) - 功能封装: (1)程序模块化:相似的功能模块集成(函数、类、包);(2)使用高级模块化的语句:即用尽可能少的、高效的代码完成需要的功能;
IGARSS2019-项目实战总结-keras相关推荐
- 【深度学习 项目实战】Keras深度学习多变量时间序列预测的LSTM模型
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程.人工智能教程 本篇文章将介绍基于 ...
- keras中文文档_【DL项目实战02】图像识别分类——Keras框架+卷积神经网络CNN(使用VGGNet)
版权声明:小博主水平有限,希望大家多多指导. 目录: [使用传统DNN] BG大龍:[DL项目实战02]图像分类--Keras框架+使用传统神经网络DNNzhuanlan.zhihu.com [使用 ...
- 浙大博士导师整理:Tensorflow和Pytorch的笔记(包含经典项目实战)
作为一名AI工程师,掌握一门深度学习框架是必备的生存技能之一. 自 TensorFlow 从 Google 中脱颖而出以来,它在研究和商业领域成为最受欢迎的开源深度学习框架,紧接着 从 Faceboo ...
- 清华博士导师整理:Tensorflow和Pytorch的笔记(包含经典项目实战)
作为一名AI工程师,掌握一门深度学习框架是必备的生存技能之一. 自 TensorFlow 从 Google 中脱颖而出以来,它在研究和商业领域成为最受欢迎的开源深度学习框架,紧接着 从 Faceboo ...
- 【项目实战】Python基于孤立森林算法(IsolationForest)实现数据异常值检测项目实战
说明:这是一个机器学习实战项目(附带数据+代码+文档+代码讲解),如需数据+代码+文档+代码讲解可以直接到文章最后获取. 1.项目背景 孤立森林是基于Ensemble的快速异常检测方法,具有线性时间复 ...
- 清华博士导师整理:Tensorflow 和 Pytorch 的笔记(包含经典项目实战)
作为一名 AI 工程师,掌握一门深度学习框架是必备的生存技能之一. 自 TensorFlow 从 Google 中脱颖而出以来,它在研究和商业领域成为最受欢迎的开源深度学习框架,紧接着 从 Faceb ...
- python数据分析与挖掘项目实战记录
python数据挖掘项目实战记录 取自<Python数据分析与挖掘实战>一书,整理各个项目中用到的数据处理方法: 数据预处理方法 建立模型方法 绘制图形 对于分类问题:用模型分类:混淆矩阵 ...
- python人工智能项目实例-python人工智能项目实战,PDF+源码
原标题:python人工智能项目实战,PDF+源码 <python人工智能项目 Intelligent Projects Using Python> 实施机器学习和深度学习方法,使用Pyt ...
- 深度学习入门系列6项目实战:声纳回声识别
大家好,我技术人Howzit,这是深度学习入门系列第六篇,欢迎大家一起交流! 深度学习入门系列1:多层感知器概述 深度学习入门系列2:用TensorFlow构建你的第一个神经网络 深度学习入门系列3: ...
- Kaggle深度学习与卷积神经网络项目实战-猫狗分类检测数据集
Kaggle深度学习与卷积神经网络项目实战-猫狗分类检测数据集 一.相关介绍 二.下载数据集 三.代码示例 1.导入keras库,并显示版本号 2.构建网络 3.数据预处理 4.使用数据增强 四.使用 ...
最新文章
- Paper5:Curved-Voxel Clustering for Accurate Segmentation of 3D LiDAR Point Clouds with Real-Time Per
- spark(一) build
- c语言数据储存系统,编的学生成绩管理系统 从文件中读取保存数据总会多读入一组乱码数据...
- 巧断梯度:单个loss实现GAN模型(附开源代码)
- 北京Dotnet分享会 || 精英论坛第三期
- P4233-射命丸文的笔记【NTT,多项式求逆】
- SpringBoot注解@Value取值取不到问题
- 17.1 Replication Configuration 复制:
- keil ISIS AT89C51单片机
- 删除倾斜OSGB数据中的漂浮物
- PHP判断是手机端访问还是PC端访问网站
- 小米平板2(2015716)官方线刷包_救砖包_解账户锁
- 不同币种间的清账 应付账款是USD记账 预付账款账款是人民币记账 如何清账
- 【安卓学习之互动直播】 腾讯云直播 1 - 注册/登录/个人信息
- [未来成长] 分享:《麦肯锡教我的写作武器》如何写出一篇具有逻辑表现力的文案...
- mac版微信复制多个消息
- 【补充】为什么一定要用残差图检查你的回归分析?
- 从联想昭阳到MacBook Pro,致我的那些败家玩意—
- C语言标准输入输出缓冲区
- 初中数学结合计算机教学设计,初中数学教学设计中多媒体技术的运用