第二篇的第5段好龐大啊...照我這速度不知道30天結束講不講得完。
第二篇的ep.16把解析tfrecord的_parse_function帶完,並且為\preprocess_image()稍微預告了一下,總共有6個preprocess method會被實作並使用。
就讓我們從input_preprocess.preprocess_image_and_label()
開始吧。
input_preprocess.py
28-40行是preprocess_image_and_label()的參數,主角是data與label,剩下就是有關crop、resize等參數。
70行就是報錯的判斷式。
突然覺得71行的提醒很貼心耶怎麼回事!?
backbone沒有提供的話,這邊會給出提醒。會給出這個提醒的原因是因為,在使用backbone作為先解析data的工具時,一定會使用pretrained的參數,而每個pretrained參數所使用的資料可能不同,這會導致normalize的數值或手法不太一樣...總而言之就是,想發揮backbone的效用,最好讓你的訓練集normalize的方式跟backbone在訓練時用的方式一樣,這樣才能發揮訓練好的extractor的功用。
如果沒有使用backbone的話,他就會使用他預設的mean-subtraction
去處理data。
我之前一直記不住cast的功用,一直把它跟concat搞混,而且我對於將轉型這個功能,命名成cast。一直百思不得其解,cast不是很用力地把東西投出去的意思嗎?
Deeplab選擇將resize作為preprocess的第一步。
有些資料集的data尺寸有大有小,例如小則100*200,大則720*420等,那去看resize_to_range()
的敘述,他的意思是假設min_size_value = 320
,則100*200的影像會被呈比例的放大,讓他變成320*某個數字。
不過預設min_resize_value = max_resize_value = resize_factor = None
,所以預設是不會改變data尺寸的。
剩下的明天說。