0

バックグラウンド:

Digits フレームワーク内またはその外部で Caffe を使用できるように、 CaffeDigitsの両方を使用したいと考えています。

ただし、特定のプロジェクトでは、Caffe が OpenCV 3 を使用し、Digits がデフォルトでインストールする OpenCV 2.4 を使用する必要はありません。このプロジェクトは Digits の外部で Caffe を使用しており、Digits フレームワークは一切使用していません。

Digits をインストールすると、私の OpenCV 3 インストールが OpenCV 2.4 で「上書き」され、元の Caffe インストール内で問題が発生しているようです。

わかりやすくするために、私が行った手順のリストを以下に示します。

Ubuntu 14.04 の新規インストールから:

  1. Ubuntu インストール ガイドに従ってインストールされた Caffe 依存関係 (OpenCV を除く)
  2. ソースから OpenCV 3 をインストール/usr/local
  3. テスト済み OpenCV インストール
    • OpenCV 3固有のコードを含むデモは正常に機能しました
  4. コンパイル済み Caffe、Makefile.configOpenCV 3 を使用するように設定
  5. テスト済みの Caffe インストール
    • すべてのテストに合格し、デモは問題なく動作しました
  6. インストールガイドに従ってインストールされた数字
    • Caffe と OpenCV 2.4 は、インストーラー スクリプトによってデフォルトでインストールされました。
    • OpenCV 2.4 によって破壊された OpenCV 3 (?)
  7. Digits Getting Started ガイドの手順を実行した
    • すべての手順が成功しました
  8. OpenCV の競合が疑われるため、Caffe デモをコンパイルしようとしました
    • OpenCV 3.0 と 2.4 の競合に関連するエラーが発生しました -- 詳細は以下をご覧ください。

コンパイル コマンド:

g++ classification.cpp -o classification -I/home/josh/software/caffe/include/ -L/home/josh/software/caffe/build/lib/ -lcaffe -I/usr/local/cuda/include -L/ usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand -I/home/josh/software/cudnn/include/ -L/home/josh/software/cudnn/lib64/ -lcudnn -L/usr/lib/ x86_64-linux-gnu/ -lglog -L/usr/local/lib -lboost_system -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -DUSE_OPENCV

エラーメッセージ:

/usr/bin/ld: 警告: /home/josh/software/caffe/build/lib//libcaffe.so で必要な libopencv_core.so.3.0 は、libopencv_core.so.2.4 /usr/bin/ld と競合する可能性があります: /tmp/ccHaWcOl.o: シンボル '_ZN2cv6String10deallocateEv' への未定義の参照 //usr/local/lib/libopencv_core.so.3.0: シンボルの追加エラー: DSO がコマンド ラインから見つかりません collect2: エラー: ld が 1 つの終了ステータスを返しました

質問:

  1. Caffe/Digits のインストールを中断せずに OpenCV バージョンの競合を解決するにはどうすればよいですか?
  2. OpenCV を削除して、Caffe と Digits を再インストールする必要がありますか?
    • その場合、Caffe (OpenCV 3 を使用) と Digits を並行して動作させながら、OpenCV のバージョンの競合を防ぐために、別の方法で何をする必要がありますか?
4

2 に答える 2

1

OpenCV ライブラリがインストールされると、共有ライブラリは libopencv_core.so.2.4.8 のように格納されます。2.4.8 は OpenCV のバージョン番号です。libopencv_core.so ファイルは通常、システムにインストールされている OpenCV の最後のバージョンにリンクしています。

したがって、libopencv_core.so は最初は libopencv_core.so.3.0 にリンクされていましたが、古いバージョンをインストールすると、リンクが更新されて古いバージョンにリンクされました。

回避策は、caffe で最新の OpenCV ライブラリを具体的に呼び出すことです。そのためには、caffe にある Makefile を変更する必要があります。opencv_*toの出現箇所をすべて置換:libopencv_*.so.3.0

于 2015-12-10T20:27:13.967 に答える