昨天收到主辦方AI Cup釋出第一階段測試集的通知,就對今天鐵人賽文章有大致規劃。可惜測試資料申請通過需要時間,目前仍為申請後「等待審查通過」階段,所以目前還沒有資料能進行測試~ 那就趁今天跑新的預訓練模型&統整目前訓練遇到的挑戰和後續規劃囉!
1.申請競賽主辦方釋出的公開測試資料集
2.採用預訓練EfficientNet_V2_l模型進行遷移式學習
3.統整目前訓練遇到的挑戰&應對規劃
(1)根據自己在D17-影像識別經典模型簡介2nd_ResNet分享,選用幾個Pytorch官方提供的預訓練模型進行比較,決定先以EfficientNet_V2_l模型作為今天進行遷移式訓練採用的模型。
import torchvision
model_efficientnet = torchvision.models.efficientnet_v2_l(pretrained=True).to(device) # load pretrained Alexnet model (pretrained weights)
print(model_efficientnet)
# Transfer Learning: (方法_2)ConvNet as fixed feature extractor
for param in model_efficientnet.parameters():
param.requires_grad = False # 不自動更新參數:把所有層數都凍結(freeze the weights)
# Parameters of newly constructed modules have requires_grad=True by default
num_ftrs = model_efficientnet.classifier[1].in_features # 最後一層輸入器的輸入維度
model_efficientnet.classifier[1] = torch.nn.Linear(num_ftrs, 33) # 33: numbers of output class
model_efficientnet = model_efficientnet.to(device)
criterion = torch.nn.CrossEntropyLoss()
# Only parameters of final layer are being optimized
optimizer_conv = torch.optim.SGD(model_efficientnet.classifier[1].parameters(), lr=0.001, momentum=0.9) # 只對最後一層參數做更新(指定最後一層:model_conv.fc)
exp_lr_scheduler = torch.optim.lr_scheduler.StepLR(optimizer_conv, step_size=7, gamma=0.1)
### Train and evaluate
model_efficientnet = train_model(model_efficientnet, criterion, optimizer_conv,
exp_lr_scheduler, num_epochs=1)
(2)目前仍採用所有訓練資料、batch_size=10的組合,一個Epoch估計約訓練9小時,train_loader和val_loader數量分別為7162和896個batch。
(1)訓練集train_loader圖片資料量太大 -> 抽樣訓練、只選用有準心標註(專家註記)的圖片
(2)訓練時間太長 -> 除了第(1)點外,是否有其他優化方案,例如:租借雲端硬體設備進行訓練、模型訓練設定上進行調整
(3)圖片前處理 -> 目前只有最基本的影像裁切,蒐集其他常用可提升模型預測能力的資料前處理方式。
完成取得公開測試資料集的申請,進行第二個預訓練模型。
將訓練時間縮短,才能進行不同圖片預處理的實驗,以了解有哪些方式是較有機會提升模型預測表現。
心得小語:
昨天聽老弟lab meeting rehearsal,快1:30才睡真滴累~~
也深深感受到隔行如隔山耶,routing, bump, sweep line, flip是什麼,真的霧煞煞呀! 但有對簡報邏輯連貫性給些建議,其實聽報告很不錯的,但若是自己喜歡的領域更好啦!
今日工時: 50min*1
每個人都是自己命運的建築師
Each man is the architect of his own fate.