2017-06-11 2 views
0

MatConvNetで構築されたネットワークは、異なるスケールの画像を受け取り、それを評価します。例えば: -ディープネットワークがオブジェクト検出にさまざまなスケールの画像を受け入れる方法を教えてください。

%img is an image of size 730*860*3 
%net is loaded DagNN obj 
scales = [-2 -1 0 0.5 1] 
for s = 2.^scales 
    img = imresize(raw_img, s, 'bilinear'); 
    img = bsxfun(@minus, img, averageImage); 
    inputs = {'data', img}; 
    net.eval(inputs); 
end 

デバッグ時には、私はリサイズimgを発見し、ループのすべての反復を評価しました。しかし、ネットワーク(net)は固定画像を受け入れることになっていました。よう - 訓練されたネットワークロードした後

K>> net 

net = 

    DagNN with properties: 

       layers: [1x319 struct] 
        vars: [1x323 struct] 
       params: [1x381 struct] 
        meta: [1x1 struct] 
         m: [] 
         v: [] 
        mode: 'test' 
       holdOn: 0 
    accumulateParamDers: 0 
     conserveMemory: 1 
     parameterServer: [] 
       device: 'cpu' 

: -

K>> net.vars(1, 1).value 

ans = 

    [] 

そしてITER 1 :-(forループ内の)2 ITER

K>> net.vars(1, 1).value 

ans = 

    [64 64 3] 

()

K>> net.vars(1, 1).value 

ans = 

    [160 160 3] 

など.... だからどのようにth e DagNNはそのような入力を処理しており、それ自体を評価していますか?(私はMatConvNetを初めて使用しているため、ドキュメンテーションのヘルプを見つけることができませんでした。だからこの質問に答えて、ケラスでそのようなものを作る方法を提案してください)

答えて

0

一般に、ConvNetは画像の入力サイズを気にしません。すべての層が畳み込みのような演算を実行している(例えば、プールも畳み込みのように空間的に振る舞う)。大きな入力を提供すると、大きな出力が得られます。入力サイズを気にするのは、損失レイヤだけです。損失層がなければ、コードは全く破損しません。 MatConvNetに完全に接続されたレイヤーはありません。すべてが畳み込みです。

ところで、ConvNetを早く使っている人の中には、完全に接続されたレイヤと畳み込みレイヤの間に実際に違いがないため、FCNは面白い名前だと思う人もいます。

+0

@UjjalKumarDas次にKerasの問題です。 MatConvNetでは、固定サイズ入力を使用する必要はありません – DataHungry

+0

ありがとうございます。私が知る限り、私はkeras(python)でCNNを実装しました。固定サイズの画像を提供することになっていました。しかしここでは物事が違う。私はあなたに[this](http://ethereon.github.io/netscope/#/gist/8a0d5ef37da9dc4cd611d178404b3641)を素早く見てほしい。ここでは、ネットワークは固定サイズのデータ​​を受け入れるように定義されています。しかし、実行時にそれは私を混乱させた異なるサイズの画像を受け入れました。 _私はPythonで同じことを実装できる方法はありますか?_あなたの答えを探しています。もう一度感謝します。 –

+0

申し訳ありませんが、[ネットワーク](http://ethereon.github.io/netscope)の[link](https://github.com/peiyunh/tiny/blob/master/tiny_face_detector.m#L130) /#/ gist/8a0d5ef37da9dc4cd611d178404b3641)の図を参照してください。 –

関連する問題