アプリとサービスのすすめスマートフォン用の表示で見るアプリとサービスのすすめアプリやIT系のサービスを中心に書いていきます。元画像から別の画像を生成したりするのに使うautoencoderの亜種「Unet」を使ってみた。今回やるのはadidasのスニーカーを入力して、ロゴを出力するように学習させるタスク。autoencoderを使うのは初めてなので、作業過程などをまとめてく。・まとめ1.概要autoencoderは簡単に言うと画像とか文章を入力して、別のものに変換して出力するモデル。みたいにたくさんある。Unetはautoencoderの一種。Network(ResNet)と同じ効果を発揮するらしい。Unetもあるらしいが、今回は普通のUnetで試した。今回試すことは、「adidasのスニーカー画像を入力→adidasのロゴ画像を出力する」タスクをやってみた。・層を二つ追加した・BatchNormalizationを全層に加えたの2点。pathがあるので、層を厚くしても特徴抽出の効果が増した気がする。今回は画像は増幅できないので、kerasのImagegeneratorメソッドは使わず、generatorを自作。self.reset()flow_from_dirのimg_pathが入力、mask_pathが出力画像の教師画像になってる。validationデータ用のvalGeneratorクラスはtrainGeneratorクラスを継承してる。あと、指定したバッチサイズに切り出されるようにした。これでmodel.fitgenerator()メソッドに入れればOK。loss(dice_coef_loss)を使った。optimizerは代表的なAdam。1)あと、keras.callbackに自作のクラスを入れて、5エポックごとにloss曲線のpng画像が保存されるように工夫した。今回はよく論文に登場する精度の高い「〜ネットワーク」みたいな、飛び道具的なアルゴリズムを使わずに、ニューラルネットワーク自体を変えて、精度改善の工夫をした。L2正規化、画像を255で割るの5点を主に工夫した。派手なことせず、地道なテクで、かなり精度が上がった。ニューラルネット系は人気で精度が高い「飛び道具」的なアルゴリズムでも、実際に実装してみると、全然使えないこともある。臨機応変に使いこなしたり、ニューラルネットワーク自体をいじって、堅実に精度向上の工夫ができるテクニックは必須。・真っ黒の画像をいくつか訓練データに含んでしまった(訓練データが荒い)・訓練枚数(140枚)少ない、訓練回数が少ないとかが原因。画像枚数1万枚以上とか、ガチでやってる人のUnetの結果はすごいのが多い。逆に140枚でこれだけお手軽に結構な精度の画像が生成できるのはすごい。まとめ今回はautoencoderのUnetを試してみた。ガチでニューラルネットワーク自体を変えて精度向上の工夫したのは初めだった。Autoencoder(VAE)を使った記事も機会があれば書こうと思う。今回は音声認識のデータセット「ESC-50」をCNNで分類した。»ABOUT某大学で科目等履修生(学生)をやりながらフリーランス翻訳者として活動中。フリーランス、ノマドライフと英語の情報を中心に、雑記や他のことについても書いています。(1)はてなブログをはじめよう!trafalbadさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。