🎸
そっくりな人をAIは見分けられるか?第2回 チュートリアルに勝った!いろいろコード変えてわかったこと!
話すこと。
いろいろコード変えてわかったこと!
チュートリアルよりいい正解率がでたこと!
読者対象
作るだけでなく、精度を上げたい!
作るだけでなく、より理解したい人
データ目視検査
コードでデータ集めるだけだと、 違う画像も入ってたので、全部目で検査して削除しました。
後で気がついたが まだ消した方がよさそうな一枚見つけてしまったがそのまま。
そのデータで正解率だすと
あいみょ〇と小松菜〇を比べた。正解率82.1%
あいみょ〇とあい〇を比べた。 正解率91.6%
あいみょ〇と宮崎あお〇を比べた。正解率82.1%
転移学習前
以下のように学習前に評価精度だすようにした
毎回違うが大体50%前後をいったりきたり(想定通り)
###最初につまりtrainやるまえにvalのaccuracyだす
def train_model(model, criterion, optimizer, scheduler, num_epochs=25):
since = time.time()
# Create a temporary directory to save training checkpoints
with TemporaryDirectory() as tempdir:
best_model_params_path = os.path.join(tempdir, 'best_model_params.pt')
torch.save(model.state_dict(), best_model_params_path)
best_acc = 0.0
for epoch in range(num_epochs+1):
print(f'Epoch {epoch}/{num_epochs - 1}')
print('-' * 10)
# Each epoch has a training and validation phase
for phase in ['val','train']:
if phase == 'train':
model.train() # Set model to training mode
else:
model.eval() # Set model to evaluate mode
チュートリアルよりいい正解率がでた!
学習率を以下の2step毎に0.8倍にしたら、全体で精度良くなった(本当は統計的にやるべき)
あいみょ〇と小松菜〇を比べた。正解率82.1% > 92.8%
あいみょ〇とあい〇を比べた。 正解率91.6% > 87.5%
あいみょ〇と宮崎あお〇を比べた。正解率82.1% > 85.7%
exp_lr_scheduler = lr_scheduler.StepLR(optimizer_ft, step_size=2, gamma=0.8)
# tutorial setting
# Decay LR by a factor of 0.1 every 7 epochs
# exp_lr_scheduler = lr_scheduler.StepLR(optimizer_ft, step_size=7, gamma=0.1)
4人一度に分類
以下のコードとデータ構造変えて正解率みると2択の平均よりは悪そう。ちなみにやはり勝っている!
チュートリアルコードで77%
自分が設定変えたもので81.2%
写真見るとやはりあいみょ〇と小松さんか間違ってるようだ。自分が見てもよくわからん。
# Here the size of each output sample is set to 2.
# Alternatively, it can be generalized to ``nn.Linear(num_ftrs, len(class_names))``.
model_ft.fc = nn.Linear(num_ftrs, 4)
あとがき
第三回は、調整をソフトに自動的にさせようとおもいます! optunaで!
あとは、同じデータでおしゃれ度をいい感じで出せたらこの回に追加します。
読んでくれてありがとうございます!よかったらいいね!かフォローしてくれたら嬉しいです!
Discussion