日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IGARSS2019-项目实战总结-keras

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。