Re: [問題] 關於Semantic segmentation的一些疑問

看板DataScience作者 (Tay)時間6年前 (2018/03/03 17:43), 6年前編輯推噓2(207)
留言9則, 1人參與, 6年前最新討論串2/2 (看更多)
※ 引述《jackychien (-cx)》之銘言: : 大家好, 我是deep learning的初學者,目前是使用tensorflow,最近開始找kaggle上的題目練習, 想從一個Semantic segmentation的題目開始,但是遇到了滿多問題,因此想要請教版上的各位高手,希望可以釐清一些觀念! : (1). 題目的input圖片大小都不固定,本身查到input圖片大小對於Fully convolutional network應該不是太大問題,但我比較有疑問的是Semantic segmentation的output是pixelwise prediction,這樣的話output layer該怎麼設定? 對 Segmentation 來說, 因為資料通常是"一對"的 今天input做了任何的data augmentation (resize/flip/zoom/crop/affine...) output 也要跟著做一模一樣的事 對資料本身的處理來說是這樣 而layer方面 一般input:output大小都是 1:1 當然你也可以玩 1:x 之類的, 但是沒意義 (x > 1): 除非output給你的是向量, 不然沒法玩 (x < 1): 還不如train個1:1的, inference完再resize = = : (2). 我看應用於Semantic segmentation的神經網路架構滿多會把前面的layer複製到後面對應相同大小的layer,目的是為了unpooling的時候可以記住當初pooling的時候的最大值的位置嗎?有沒有其他的目的? 原文底下有人推文說明了, 就不多解釋了 : (3). 因為本人電腦爛爛的,常常讀取檔案時就發生memory error,查過資料說可以用h5py將檔案存成hdf5檔案,轉成hdf5檔案後是用批次讀取的方式來餵資料,不過一直都不太清楚hdf5檔案的好處,是可以減少頻繁I/O造成速度問題嗎? 哪種memory error? CPU還是GPU的RAM? 一次把整個dataset裝到CPU RAM, 當資料量太大時會CPU RAM爆炸 跟 訓練時分批次搬資料到GPU RAM, 當batch size太大時GPU RAM會爆炸 這些都跟hdf5無關, 但hdf5的I/O速度確實重要 而且如何作CPU/GPU/CPU RAM/GPU RAM的資源分配, 讓整個training pipeline效率最大化, 是需要經過設計的 我舉幾個案例給你參考 [案例一] 一次讀取整個dataset到CPU RAM training 時批次從 CPU RAM 搬資料到 GPU RAM 走PCIe匯流排 資料直接上高速公路, 完美! 只是你的 CPU RAM 夠大嗎? 32 GB? 64 GB? 當作業系統死人? 話是這樣說, 一般教學型的dataset 大部份都能一次塞進CPU RAM (ImageNet 可能有點度) 這個案例中 dataset是不是存成h5df完全沒有影響 [案例二] 只維持一個固定大小的CPU RAM 當buffer training 時批次從硬碟搬到 buffer, 再從 buffer搬到GPU RAM 在硬碟搬到buffer這邊就塞車了 這種情況下才需要考慮將資料先預存成h5df來縮短讀取時間 (SSD硬碟, 多線程處理跟CPU本身也都有影響, 就不多贅述了) 以上說的都是針對整個training的速度作考量 案例一跟存不存成h5df沒有關係 案例二存成h5df可以加快training速度 這些都跟你的memory error無關 CPU mem error: 買RAM, 或用案例二的方式 GPU mem error: 付錢給NVIDIA, 或降低batch size (小批處理, 一次只搬一點點) : (4). 最後不知道關於Semantic segmentation的相關資料有沒有比較推薦的書籍/網站/影片?我有自己找過滿多次但是感覺資料都滿零碎,有簡單實作範例的會更好XD 這題請別人回答 : 因為是非本科生,有些問題應該是滿腦包的問題XD,先謝謝大家抽空的耐心回答! : 以上 : ----- : Sent from JPTT on my Sony SGP321. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 75.18.249.47 ※ 文章網址: https://www.ptt.cc/bbs/deeplearning/M.1520070209.A.E52.html

03/04 01:19, 6年前 , 1F
感謝ta大的回文,解釋的非常詳細!
03/04 01:19, 1F

03/04 01:19, 6年前 , 2F
想要確認一下第一個回答的意思,也就是說假設我今天把
03/04 01:19, 2F

03/04 01:19, 6年前 , 3F
320*512的圖片resize成256*256當成input,inference完
03/04 01:19, 3F

03/04 01:19, 6年前 , 4F
後output也是256*256,我再resize成320*512就是欲得到
03/04 01:19, 4F

03/04 01:19, 6年前 , 5F
的答案了嗎?
03/04 01:19, 5F
是的, 如果擔心解析度跑掉太多的話, 也可以把原圖切成幾塊 < 256*256的patch 分次作inference後再拼起來

03/04 01:19, 6年前 , 6F
兩種RAM的問題我都有遇過的樣子,GPU RAM是用很小的ba
03/04 01:19, 6F

03/04 01:19, 6年前 , 7F
tch size解決的沒錯,主要應該還是CPU RAM的問題,要
03/04 01:19, 7F

03/04 01:19, 6年前 , 8F
搬很多趟才能搬的完XD
03/04 01:19, 8F
※ 編輯: tay2510 (75.18.249.47), 03/04/2018 11:11:53

03/04 20:05, 6年前 , 9F
了解,終於解決了心中很久的疑惑!XD
03/04 20:05, 9F
文章代碼(AID): #1Qccv1vI (DataScience)
文章代碼(AID): #1Qccv1vI (DataScience)