この記事では、自動微分を使用してニューラルネットワークのカスタムレイヤーを構築し、空間変換ネットワークを使用した分類子に基づいて、MATLABでニューラルネットワークの標準的な深層学習レイヤーを操作するというトピックを取り上げます。
Spatial Transformer Network(STN)は、ニューラルネットワークの構築と改善に使用できる差別化可能なLEGOモジュールの一例です。 STNは、トレーニング可能なアフィン変換とそれに続く補間を適用して、画像から空間的不変性を奪います。大まかに言えば、STNのタスクは、元の画像を回転または縮小/拡大して、メインの分類ネットワークが目的のオブジェクトをより簡単に識別できるようにすることです。 STNブロックは、畳み込みニューラルネットワーク(CNN)に配置でき、ほとんどの場合独立して動作し、メインネットワークからの勾配を学習します(このトピックの詳細については、リンク:Habr およびManualを参照してください)。
私たちの場合、タスクは99クラスの車の風防を分類することですが、最初に、もっと簡単なものから始めましょう。このトピックに精通するために、手書きの数字からMNISTデータベースを取得し、MATLAB深層学習ニューラルレイヤーとカスタムアフィンイメージ変換レイヤーのネットワークを構築します(使用可能なすべてのレイヤーとその機能のリストはここで確認できます)。
変換のカスタムレイヤーを実装するには、テンプレートユーザーレイヤーとMATLABの可能性を使用して、エラーの派生物の逆伝播を構築します。これは、ユーザートレーニングサイクルの詳細なトレーニングセットを犠牲にして実現されます-dlarray(テンプレートに精通している場合はリンク上にあり、 dlarray構造に精通することができます用リンク)。
この機能を実装するMATLAB関数はdlarray構造をサポートしていないため、dlarrayの機能を実装するには、イメージのアフィン変換を手動で登録する必要があります。以下は私たちが書いた変換関数です。プロジェクト全体はここから入手できます。

, , . , . , , - - .

, . Y, . (, ), . .
Y |
|
|
|
|
|
|
|
|
, , STN. MNIST.


, , , , , .
, MNIST, .
— , — , — RGB, , , . . , , , , 2, , 0, , , . , , STN , , , . , . STN - , , dropout STN.
, , [0;255], [0;1], — . .

, 255 0.3 0.75, . , .

, , , , [-10;10] [-50; 50]. MATLAB, dlarray . .
.


, , , , 90. , , , , , . , , , , .
, STN, . .

, .
, , STN .