2016-06-01 39 views
1

Caffe Zooの多くの事前モデルの中から、重みを抽出する比較的簡単な方法はありますか?CAFFE(pyCaffeもありません)?つまり、.caffemodelをhdf5/numpyまたはPythonで読み取れる形式に解析しますか?CaffeをPythonにインストールせずに.caffemodelから重みを抽出する

私が見つけたすべての答えは、CaffeクラスまたはPycaffeでC++コードを使用しています。 私はpycaffeのコードを見てきましたが、実際にバイナリを理解するために必要なのは唯一の解決策だと思われますか?

+0

caffe-tensorflowコンバータ(https://github.com/ethereon/caffe-tensorflow)を使用できましたか? caffeモデルから重みを抽出するには?私は最近、同じ問題に遭遇しました。私は自分のモデルをPython(私はkeras + tensorflowを使用しています)を介して微調整するために、事前に訓練されたモデルの重みを使用したいと思います。しかし、私が使用したいと思っている事前に訓練されたモデルは、カフェモデルを持っています... – Ruby

+0

はい、このkaffeものは、githubにmrry repoに行くことができ、彼のvgg16を見ることができるいくつかの理由であなたのために働いていない場合、あなたがpycaffeを構築していれば、変換を行うのはかなり簡単です。 – jean

+0

ありがとう! Vgg16は私が見ているものです。 – Ruby

答えて

2

ethereonは、という素晴らしいライブラリを作成して、CaffeモデルをTensorflowコードに変換しましたが、それだけではありません。また、ユーザーは.caffemodelファイルを.npyファイルにpycaffeを構築することなく変換することができます!それはcaffeが構築されているかどうかをテストし、純粋なgoogle protobuf実装に戻っていないかどうかをテストします。

3

最近、caffeはBINARYPROTOまたはHDF5の2つの形式で重みを保存できます。拡張子が.caffemodelのバイナリウェイトファイルはBINARYPROTO形式で、拡張子.caffemodel.h5はHDF5形式です。 HDF5形式は最近Caffeに導入されて以来、 "モデル動物園"で現在遭遇しているほとんどのモデルは、より伝統的なBINARYPROTO形式になると期待しています。

ウェイトがHDF5形式で保存されている場合は、h5pyパッケージを使用して選択することができます。

ただし、BINARYPROTO形式は、で定義されているgoogleプロトコルバッファ形式のバイナリシリアル化に基づいています。私はプロトコルバッファーの専門家ではありませんが、が実際にという難しい時に、caffe.proto定義ファイル(caffeビルドの一部です)を明示的に "コンパイル"せずにバイナリーファイルを解読していると思われます。

私は重みを選ぶ最も簡単な方法は、caffeをインストールし、python/C++インターフェイスを使用することです。どうしてそんなことをしないの?

+0

私はcaffeがhdf5の使用を開始したことを知らなかった。私はh5pyを知っていて、それについて知って以来、私はそれをたくさん使ってきた。ええ、私はそれがGoogleプロトコルのバッファを解析するのは簡単ではないはずの答えを見るか、少なくとも私はそうするknwoledgeを持っていないと思う。あなたの答えをありがとう私は拡張子が.h5のいくつかの新しいモデルを見つけようとしているか、それにエスケープがなければpycaffeを使用します。 – jean

+0

。@ Shai - 'Caffe 'によって生成されたログを解析すると'学習率 'と'損失'が得られます。これらが 'Caffe 'の新しい実行ごとに変更されない場合、異なる実行のために' .caffemodel'に格納された 'weights'がまったく同じであると結論付けるのは公正でしょうか? –

+0

@ChetanArvindPatilなぜ彼らは同じであるべきですか?たとえ損失が同じであっても、必ずしも*勾配*がゼロであるとは限りません。 – Shai

1

なぜあなたはcaffe/pycaffeなしでそれをしたいのか分かりませんが、新しいマシンにcaffeを導入するのはうんざりですか?しかし、カフェモデルは特別なバイナリデータ型のカフェであるため、他のツールを使用しても簡単には使えません。

これを行うと主張するなら、別のフレームワーク、Mocha on Juliaがあります。これは、カフェモデルをhdf5に抽出する方法を提供します。これがあなたを助けることができれば幸いです。

+0

実際にCaffeのインストールはちょっと面倒ですが、私は自分のパーソナルコンピュータにインストールしてpycaffeをビルドしましたが、インストールをテストしたことはありません(succeddingから離れて、エラーメッセージなしでimport caffeを書くことは別です)。さらに私は他のほとんどのフレームワークを使用しており、空き領域を使用できます。私はJuliaのMochaを見ていきますが、Juliaをインストールしなければならないと思っています。純粋なPythonで簡単にハックする方法はありません。 – jean

+0

あなたの答えをありがとう! – jean

関連する問題