Patching)が提案されています。趣味で作っているラーメン二郎識別モデルにRICAPを適用するとどうなるか興味があったため、年末年始にPyTorchで実装して検証してみました。Erasingと組み合わせた場合にどの程度の識別精度となるかも比較しています。大きなモデルやデータセットで学習すると時間が掛かりすぎるため、モデルはResNet50を採用し、各店舗500枚のみ(40店舗で計20,000枚)に絞った縮小版ラーメン二郎データセットを利用して検証しています。Erasingの方が精度が高くなることもあった各種データ拡張手法のイメージ各種データ拡張手法の適用サンプルは以下の通りです。データセットを利用しています。(画像の一部をランダムな画素でマスク)利用したデータセットについてラーメン二郎データセットは現在約7万5千枚あり、すべて利用して学習すると時間がかかるため、今回の実験では各店舗500枚に限定した縮小版の二郎データセットを用意して利用しました。(同一条件で5回学習し、結果の平均および標準偏差を算出)ベースラインモデルの設定ベースラインとして、画像の短辺を256pxにリサイズ後にPyTorch組み込みの下記のデータ拡張を実施しています。学習時の各epochのモデルに対し評価データでAccuracy最大となるepochのモデルを選び、テストデータを評価した際のエラー率(%)を計測しました。Erasing)を比較しました。Erasingが最も精度が高くなりました。RICAPについてはbaselineから約0.1%の改善ですが、改善幅は小さく試行によってはbaselineの方が良いケースもありました。±0.09各種データ拡張は以下の条件で実施。基本的に提案論文の推奨値を使うようにしています。Augmentation)のことで、画像分類タスクではモデルの精度を引き出すためによく使われる手法です。5箇所から224pxでクロップした5枚の画像、画像全体を224pxにリサイズした画像、256pxにリサイズ後に240pxで中央からクロップした画像の計7枚の画像でテストした結果の平均値をTTAの結果としています。TTAを利用することで画像単体での識別精度よりも、1〜2%程度の精度向上が期待できます。結果は以下の通りです。±0.11RICAPを利用した場合にTTAのテスト精度がbaselineよりも悪化しました(とはいえ、TTA無しよりは良いですが)。これまでの経験上、2枚の画像を合成するmixupを利用した場合に若干TTAの効きが下がる印象があったのですが、RICAPは明らかにTTAの効きが下がっています。RICAPではベースラインのデータ拡張と組み合わせることで、ランダムクロップした4枚の画像をさらにクロップして組み合わせて利用しているため、画像の隅に近い部分の特徴に対する識別性能があまり高くならず、TTAの利き具合に影響しているのかもしれません。それぞれの組み合わせについても確認しました。Erasing/Cutoutを適用しています。以下に、組み合わせた場合のサンプルをいくつか示します。サンプル結果は以下の通りです。Erasingが最もテスト精度が良い結果となりました。Erasingの方が精度が高くなることもありました。Erasingで学習したモデルを使っています。Erasingと組み合わせることでRICAPのみの場合よりも若干精度がよくなりますが、Cutoutと組み合わせた場合にはさらに精度が悪化しています。RICAPと画像をマスクするデータ拡張手法の組み合わせについてRICAPは4枚の画像をパッチワークして新たに生成した画像に対し、画像の面積比を正しく識別できるようにモデルを学習します。Erasingのような画像の一部をマスクする手法と組み合わせた場合、RICAPのパッチワーク境界との重なり具合によっては各画像の面積比が変化してしまいます。そのため、学習時のlossの計算についてもマスクによる面積比の変化を考慮したものにする必要があると思いますが、今回の実験ではこの点は考慮していません。Erasingと組み合わせてもbaselineより悪化することはありませんでした。Erasingのほうが良い結果になっていますが、Cutoutの設定(マスク箇所の数やサイズ)が適切でない可能性もあります。Cutoutの論文を読んだ限りではImageNet等のサイズの画像に対する推奨設定値が見当たらなかったため、CIFAR-10やCIFAR-100の実験結果から勘で決めています。Erasingについては提案論文に記載されている設定値を採用しています。試してみたRICAPを使ってアニメ顔を分類の精度にコミットする。knjcode関連記事hubotからRedisにアクセスするhubot経由でRedisへの簡易なアクセスを可能にするhubot-scriptを書きましたので、誰か使う人がいるかもと思いご紹介します。オフィシャルOSのRaspbianをインストールして遊んでいまし...記事を読むgitでの作業内容を別ブランチに移動したいgitを使っていて、コードの編集がある程度進んだ後に別ブランチで作業しておけばよかったと思う時があります。そんなときにはstashしてbra...記事を読むAdaBoundを試してみた記事を読むReactでストップウォッチを作ってみたReactで簡単なストップウォッチを作ってみました。Slack接続用のhubotをBluemix上で動かし、hubotのデータ保存先としてRedisを使ってみた手順を紹介します。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。