チュートリアルはまだありませんが、これについてのCaffeマスタースレッドにはがありますが、Caffeでセマンティックセグメンテーションを行うためのチュートリアルがかなりあります。まず、Fully Convolutional Networks masterのチュートリアルと、tutorial on using SegNet(別途GitHub here)のチュートリアルを参照するか、DeepLabを使用する必要があります。これらは、セマンティックセグメンテーションのためにCaffeを使用する最先端の方法です。
より直接あなたの質問に答えるために、
1)データ準備:より最近の深い学習アプローチに興味を示している誰かとして 、あなたはおそらく、データを行うには一つの方法が存在しないことを発見しただろう準備。それらは数学的に可能なもの(最終的に完全に接続されたレイヤーを持つネットワークでは、同じ比率、通常は同じサイズの画像が必要です)とパフォーマンス(平均減算)を向上させるものの両方に依存します。つまり、いくつかのテクニックがあります(この時点で、完全畳み込みネットワークのようにさまざまなスケールの画像を使用することが簡単にできると想定します)。クロップの仕組みを見たい場合は、 CaffeのImageNetチュートリアルのデータ準備についての説明)。 Transformer
クラスを使用して、ほとんどの人は、次の操作を行います。セグメンテーションの文脈では
transformer.set_transpose('data', (2,0,1)) # move image channels to outermost dimension
transformer.set_mean('data', mu) # subtract the dataset-mean value in each channel
transformer.set_raw_scale('data', 255) # rescale from [0, 1] to [0, 255]
transformer.set_channel_swap('data', (2,1,0)) # swap channels from RGB to BGR
を、それはあなたがする必要があるすべてです。セマンティックラベルは、画像そのもの(通常)の形をしています。例えば、パスカルVOCカフェの例では、あなたが
n.data, n.label = L.Python(module = 'pascal_multilabel_datalayers', layer = datalayer, ntop = 2, param_str=str(data_layer_params))
としてラベルに読み** 2)ネットワーク層の定義**
ネットワーク層の定義については、ニューラル程度華麗なビットの1つを覚えています入力と出力のほかに、さまざまな種類のデータを扱うことができます。したがって、中間層のすべてが同じになり、実際には入力が同じになります。あなたが最後に必要とするのは、画像に対するクロスエントロピー損失を評価するためのものです。 DeepLabのために、彼らはこれを行う"Interp" layerを書いた。一方、SegNetは"Upsample" layer typeと書いています。これはsoftmaxの前に使って、ラベルと同じサイズのネットワーク出力を作成してから、simply use a Softmax
私はこのすべてに欠点がないと思いますこれをCaffeで正しく行うための明確な方法ですが、うまくいくのは成功例がたくさんあることです。これが役に立ったら