今回の論文
今回取り上げるのは、Zhuang Liu、Hanzi Mao、Chao-Yuan Wu、Christoph Feichtenhofer、Trevor Darrell、Saining Xieによる「A ConvNet for the 2020s」です。2022年1月10日にarXivで初公開され、CVPR 2022で発表されました。公開元はarXivとCVPR、研究分野はコンピュータビジョン、画像認識、ニューラルネットワーク構造です。論文の書誌情報から本文を参照できます。この記事は2022年3月2日改訂のv2に基づきます。
選んだ理由は、画像AIのモデルを選ぶときに「新しい構造だから強い」と判断する前に、学習方法や比較条件も調べる必要があるとわかる研究だからです。提案されたConvNeXtは、画像分類だけでなく検出や領域分割の土台にもなります。
どんな技術か
ConvNeXtは、Transformerで使われる設計や学習の工夫を取り入れ、畳み込みニューラルネットワークの画像認識性能を高めたモデルです。画像の場所同士をAttentionで結ぶ代わりに、畳み込みを中心として特徴を計算します。
例えば、部品の写真から形や表面の特徴を取り出し、最後に種類を分類する使い方ができます。同じ特徴抽出器の後ろに別の予測器を付ければ、物体の位置や画素ごとの領域も扱えます。ただし、ConvNeXt単体で文章を生成したり、画像について対話したりするわけではありません。
特徴は、空間方向の情報交換と、特徴の種類を表すチャネル方向の情報交換を分けたブロックです。Transformerの設計思想を参考にしても、Attentionを導入する必要はなかった、という点がこの研究の面白さです。原論文1・2節
課題
画像認識では、Transformerを使うViTやSwin Transformerが高い性能を示しました。しかし、従来のResNetと比較して精度が高くても、その差がAttentionそのものによるのか、学習期間、データ拡張、最適化方法、計算の配分によるのかは簡単に切り分けられません。
また、画像全体の位置を一度に結ぶ通常の自己Attentionは、画像を細かく分割するほど位置の組み合わせが増えます。高解像度を扱う物体検出や領域分割では、この費用が問題になります。Swinは局所的な窓と階層構造で対応しますが、窓をずらす処理などの設計も必要です。
そこで著者らは、標準的な畳み込みの部品を保ちながら、学習と構造を段階的に見直します。実際の開発でも、画像認識サービスの精度を上げたいとき、全面的なモデル変更の前に何を改善できるかを考える材料になります。
用語解説
- バックボーンと特徴マップ
- バックボーンは入力画像から特徴を取り出すモデル本体です。特徴マップは、画像内の位置と、その位置にある特徴の種類を表すチャネルを持ちます。ConvNeXtは、この特徴マップを段階的に変換するバックボーンです。
- Depthwise畳み込み
- チャネルごとに独立して周囲の位置を集約する畳み込みです。チャネル同士を混ぜる処理を別にすることで、ConvNeXtでは7×7という比較的大きい範囲を扱いやすくします。
- 1×1畳み込みとチャネル混合
- 同じ位置にある複数のチャネルを線形に組み合わせる処理です。周囲の位置は直接参照しません。ConvNeXtでは、Depthwise畳み込みが空間を混ぜ、その後の1×1相当の変換が特徴の組み合わせを学びます。
- 残差接続
- ブロックが計算した変化を元の入力へ足す接続です。入力の情報を保つ経路があるため、深いモデルを学習しやすくします。ConvNeXtの各ブロックもこの形を使います。
- LayerNorm
- 特徴の平均と分散を使って値のスケールを整える正規化です。ConvNeXtのブロックでは各位置のチャネル方向を正規化します。ミニバッチ内の統計を使うBatchNormとは、計算する軸や学習・推論時の扱いが異なります。
技術の仕組み
まず学習方法をそろえます
出発点はResNetです。著者らは構造を変える前に、学習を90エポックから300エポックへ延ばし、AdamWによる勾配更新と重み減衰の分離、データ拡張、正則化などを取り入れます。そのうえで、構造を変える探索では学習条件を固定します。
使われた拡張の一つが、画像と正解ラベルを同じ比率で混ぜるmixupです。モデル構造だけでなく、学習中にどんな入力と正解を見せるかも性能に関わります。ConvNeXtの結果を「畳み込み層を入れ替えただけの効果」と読むべきではありません。
画像を4段階の解像度で処理します
最初に4×4、ストライド4の畳み込みで画像を処理します。224×224の画像なら、56×56の特徴マップになります。以降は段階の間で2×2、ストライド2の畳み込みを使い、解像度を56、28、14、7へ下げながらチャネル数を増やします。
ConvNeXt-Tのチャネル数は96、192、384、768、各段階のブロック数は3、3、9、3です。高解像度の特徴から位置の細部を、低解像度の特徴から広い範囲の情報を取り出せます。検出・領域分割では、この複数段階の特徴を後段で活用できます。原論文2・3節、付録D
ブロック内で空間とチャネルを順に混ぜます
同じ解像度とチャネル数を保つ、基本ブロックの流れは次のとおりです。
入力 x(Cチャネル)
→ 7×7 Depthwise畳み込み
→ チャネル方向のLayerNorm
→ 1×1相当の線形変換(C → 4C)
→ GELU活性化
→ 1×1相当の線形変換(4C → C)
→ Layer Scaleと、学習時のStochastic Depth
→ 入力 x と加算
Depthwise畳み込みは、周囲7×7の特徴をチャネルごとに集めます。その後、幅を4倍に広げる変換でチャネルの組み合わせを増やし、GELUという非線形変換を通して元の幅へ戻します。一度広げて戻す構造を逆ボトルネックと呼びます。
空間を混ぜる7×7の処理は、幅を4倍にする前に置きます。これにより、広い範囲を見る演算を少ないチャネル数で実行できます。また、各畳み込みの後に活性化を重ねるのではなく、ブロック内のGELUは一つに整理されています。 MobileNetV2の逆残差構造と線形ボトルネックでは、幅を広げた後にDepthwise畳み込みを置きます。共通する拡張の考え方に加えて、空間を処理する位置と活性化の置き方を比較できます。
Layer Scaleは、残差として足す出力に学習可能なチャネル別係数を掛ける仕組みです。原論文の学習では初期値を1e-6にします。Stochastic Depthは学習中に残差側の経路を確率的に落とす正則化で、通常の推論ではこのランダムな間引きを行いません。原論文2.5・2.6・3.1節
著者実装は、チャネルを末尾へ移して線形層を使う構成を採っています。これは各位置に同じ変換を適用する点で1×1畳み込み相当です。独自実装では、LayerNormが高さ・幅ではなく意図したチャネル軸へ作用しているかも確認します。著者公開コード
分類では最後に画像全体を集約します
画像分類では、最後の特徴マップを空間方向に平均し、正規化と線形分類器でクラスを予測します。学習はラベル付き画像に基づく教師あり学習です。未ラベル画像から自動的に学習信号を作る方式そのものを提案した論文ではありません。
推論時は1枚の画像を同じ階層へ通します。畳み込みの重みは学習後に固定されるため、入力ごとに位置間の重みを計算する自己Attentionとは異なります。入力解像度を変える際に位置埋め込みを補間する必要はありませんが、解像度変更後の精度や前処理の適合性は別途確認する必要があります。
実験と結果
学習方法と構造の改善を分けて見ます
原論文2節の探索では、ImageNet-1Kの分類精度を使います。Top-1精度は、最も高い確率を付けたクラスが正解した割合です。
ResNet-50は学習方法の変更で76.1%から78.8%になり、その後の構造変更を経て82.0%へ到達します。前半の2.7パーセントポイントと、後半の3.2パーセントポイントは別の効果です。小規模側の探索結果は3つの乱数シードによる平均です。
途中では、Depthwise畳み込みのカーネルを3×3から7×7へ変えた段階で79.9%から80.6%へ改善します。一方、7×7より大きくしても改善は頭打ちでした。部品を大きくすれば際限なくよくなる結果ではありません。
これらは前段の変更を引き継いだ逐次的な探索です。例えば、元のResNetへ7×7だけを移した場合に、同じ差が出るとは言えません。原論文2節
同程度の計算量でSwinと比較します
表1の最終モデルは、224×224入力、ImageNet-1Kで学習した条件で次の結果です。探索中の82.0%と、最終評価の82.1%は区別します。
| モデル | パラメータ数 | FLOPs | Top-1精度 |
|---|---|---|---|
| Swin-T | 約2800万 | 4.5G | 81.3% |
| ConvNeXt-T | 約2900万 | 4.5G | 82.1% |
| Swin-B | 約8800万 | 15.4G | 83.5% |
| ConvNeXt-B | 約8900万 | 15.4G | 83.8% |
ConvNeXt-Tは同じ4.5G FLOPsで0.8ポイント高い結果です。ただし、大きいモデルでも差が一律に広がるわけではありません。学習は300エポック、AdamW、バッチサイズ4096などの条件で、データ拡張や正則化も併用しています。
論文で示される87.8%は、約3.5億パラメータのConvNeXt-XLをImageNet-22Kで事前学習し、ImageNet-1Kへ適応した384×384入力の結果です。小型モデルをImageNet-1Kだけで学習した数値と混同できません。原論文3節・表1
領域分割でもバックボーンとして機能します
ADE20KではUperNetという領域分割モデルのバックボーンを置き換えて評価しています。ImageNet-1K事前学習、512×512の学習用切り出し、16万反復の条件で、複数スケールを使う評価のmIoUはSwin-Tの45.8に対しConvNeXt-Tが46.7でした。
mIoUは、予測した領域と正解領域の重なりをクラス別に計算して平均する指標です。この比較は、分類精度の改善が領域分割にもつながり得ることを示します。ただし、ConvNeXt-T単独が画素ラベルを出すのではなく、UperNetと組み合わせて適応させた結果です。原論文4節・表4
何に使える?
以下は仕組みと実験から考えられる応用案です。原論文が各業務の導入効果を検証したわけではありません。
商品や部品画像の分類
商品写真のカテゴリ付けや、部品の種類を判定する分類器のバックボーン候補になります。自社のラベル付き画像で分類器を学習・微調整する構成が考えられます。形や模様を畳み込みで段階的に集約する仕組みが、こうした判別を支えます。
ただし、自然画像の分類性能から、微細な欠陥の見逃し率までは決まりません。撮影装置や製造ロットを分けた評価を用意し、欠陥の大きさ別に精度を測る必要があります。
画像内の領域を取り出す社内ツール
設備写真から対象物の領域を抽出するなど、位置情報を必要とする処理にも候補になります。複数解像度の特徴を出すため、領域分割器へ接続しやすい構造です。切り出した領域を後続の検査や集計へ渡す処理を作れます。
ここでは分類モデルの末尾だけを変えれば完成するとは限りません。画素単位の教師データ、領域を復元する後段モデル、境界の評価も必要です。
別の学習方式と組み合わせる視覚部品
モデル構造と学習目的は分けて考えられます。例えば、DINOv3が巨大モデルから実用サイズへ知識を蒸留する仕組みでは、ConvNeXt系も蒸留先に使われています。
これは、同じ構造でも何を教師として学ぶかで特徴が変わることを示す接点です。ConvNeXt原論文の教師あり分類結果と、別の自己教師あり学習・蒸留で得られた特徴の品質は、それぞれの学習条件に基づいて判断します。
開発や事業へのヒント
既存モデルの改善余地を、条件をそろえて調べます
この論文から取り入れやすいのは、比較の手順です。既存のResNet系分類器があるなら、まずデータ分割と評価方法を固定し、学習期間や拡張を見直す比較を作れます。その後、ConvNeXtなどへ構造を変えた効果を調べます。
学習期間を増やした結果と、同じ学習費用で得られる結果は異なります。精度に加えてGPU時間を記録すると、月に何回再学習できるかまで含めた判断ができます。原論文の大きなバッチ設定を、そのまま小規模開発の必須条件にする必要はありません。
小規模プロダクトでは重みと前処理を一緒に比較します
事前学習済みモデルを出発点に、自社データで分類ヘッドだけを学習する方法と、本体も微調整する方法を比較するのが現実的です。これは開発への応用案で、原論文が少数例での優位を保証したものではありません。
モデル名だけでなく、事前学習データ、入力解像度、正規化、切り出し方法を記録します。解像度を上げると小さな対象が残りやすくなる一方、演算量とメモリも増えます。モデルの大小と解像度を別々の選択肢として測ると、費用対効果を整理しやすくなります。
提供環境での処理時間を判断材料にします
画像解析SaaSなら、バッチ処理の枚数と、利用者が1枚送ったときの待ち時間を分けて測ります。FLOPsが近くても、Depthwise畳み込み、メモリ配置、実行するGPUやCPUによって速度は変わります。
原論文のV100ではConvNeXt-TとSwin-Tのスループットは近い一方、付録EのA100・TF32・channels-lastの条件では差が大きくなります。「CNNならどこでも速い」と決めず、画像の読み込み、転送、前処理も含めて測ることが、サービスの処理単価を見積もる材料になります。原論文表1・付録E
限界
まず、ConvNeXtは自動的に軽量になる技術ではありません。Tinyでも約2900万パラメータあり、XLは約3.5億です。高精度の結果には大規模な事前学習も関わるため、小型端末の制約や自社データの規模に合わせて選ぶ必要があります。
次に、畳み込みの重みは入力ごとに変わりません。7×7の局所処理を深く積み重ね、縮小した特徴も使って広い範囲を扱いますが、一層で任意の遠い位置を入力依存に結ぶ自己Attentionと同じ操作ではありません。原論文も、複数モダリティ間の相互作用や疎・構造化出力ではTransformerの柔軟性が有利になり得ると述べています。原論文付録F
実装面では、LayerNormの軸、段階間の正規化、残差のスケーリング、前処理の差が再現性に影響します。標準的な部品で書けても、古いResNetの一部を置き換えるだけで論文の結果が再現するわけではありません。
また、設計探索は変更順序に依存します。各変更をすべての組み合わせで試した実験ではなく、特定のデータ・計算規模で得た知見です。2022年時点の比較から、現在のすべての視覚モデルに優位だとは言えません。
最後に、自然画像での精度は業務データの性能を保証しません。小物体、特殊な撮像、画像外の未知クラス、撮影条件の変化については、独立した評価が必要です。原論文は、特定の業務に必要なラベル枚数や誤判定時の運用まで決めるものではありません。
よくある質問
Q. ConvNeXtはCNNですか、Transformerですか?
A. 畳み込みを中心とするCNNです。階層構造、LayerNorm、幅を広げる変換などをTransformerの設計から参考にしていますが、基本ブロックに自己Attentionは使いません。
Q. ConvNeXtを使えば、ラベルなしで学習できますか?
A. 構造だけでは学習信号は決まりません。この記事の原論文はラベル付きの画像分類学習が中心です。未ラベル画像を使うには、自己教師あり学習や蒸留など、別の学習目的と手順が必要です。
Q. 7×7畳み込みは計算が重くなりませんか?
A. ConvNeXtはチャネルごとに独立したDepthwise畳み込みを、幅を4倍へ広げる前に使います。通常の全チャネルを混ぜる7×7畳み込みとは費用が異なります。ただし、実行速度は演算量だけでは決まらず、配備先での計測が必要です。
Q. 画像分類の重みを、そのまま領域分割に使えますか?
A. バックボーンの初期値として利用する考え方はありますが、分類用の出力は画像全体のクラスです。原論文の領域分割はUperNetと組み合わせて学習しています。画素ごとの教師信号や、領域を出力する後段も用意する必要があります。
Q. 小さな画像分類サービスでも採用する意味はありますか?
A. 事前学習済みモデルを使い、自社データで精度・待ち時間・メモリを比較する候補になります。最初から大規模事前学習を再現する必要はありません。既存モデルの学習条件を改善する比較も含めると、構造変更に見合う効果があるか判断しやすくなります。
今日の学び
この論文は、画像認識でTransformerと従来のCNNに見られた性能差を、学習方法と構造の両面から調べました。ConvNeXtは、7×7のDepthwise畳み込み、チャネルの拡張、正規化や階層構造の見直しで、Attentionを使わずに競争力のある認識性能を示しました。
得られるヒントは、強いモデルの仕組みを部品へ分解し、既存の構造にも移せるか検証することです。AIアプリ開発でも、学習条件と構造の効果を分け、精度と実行費用を同じ条件で比べる姿勢が役立ちます。