»2019/06/28SE-ResNeXtが簡単に使えるよ、そうChainerCVならねこんにちは、嶋生です。ブログのリニューアルに伴い投稿が滞っていたのですが、無事完了しましたので早速投稿します。今回は、ChainerCVの小ネタになります。ChainerCVを使うとSE-ResNeXtなどの自分で作ると複雑なモデルも簡単に使えるので便利だよ、という話です。機械学習に興味がある人Chainer(CV)に興味がある人ChainerCVとは?Githubのコピペですが、以下のような素晴らしいツールです。ChainerCVはChainerを使用してコンピュータビジョンタスクのためのニューラルネットワークを訓練し実行するためのツールのコレクションです。Networks(以下、SENet)をResNeXtに適用させたものです。SENetは、ILSVRC2017画像分類コンペティションで1位になったモデルです。※以下、こちらの記事より抜粋。blockをいくつか枝分かれさせたあとに足し合わせる構造を導入したモデル(こちらのページより引用)ResNeXtについてはちゃんと勉強したことがなく、詳しくありません...🙇コードとりあえず貼ります。後ほど一部説明します。stratify=dataset_df['label_id'])今回データセットのラベル毎のデータ数に偏りがったため、train・test(validationとして使ってますが)に分ける際にstratify指定しています。stratifyを指定すると、ラベル毎のデータ数割合を保ったままデータ分割ができます。shuffle=True)上記の学習のiterator作成時ですが、SerialIteratorではなくMultiprocessIteratorを使っています。こちらは指定したn_processes分のCPUでデータ取得処理を並列化してくれます。n_processesを指定しないと、実行環境の全てのCPUを使用します。最初、説明を読まずに名前から「複数GPU時に使うものだ!」と勘違いしていました...。MultiprocessIteratorを使うことで学習速度がかなり早くなりました。所感2年ほど前にSE-ResNetを自分で実装しようとして難航した記憶があったので、良い時代になったなぁと思いました。便利なものは率先して使って楽をして、実験の本質的な所などに注力したいと思います。