コンテンツベースの画像検索システムを実装しようとしていますが、その前に、このタスクに適したいくつかのプログラミング言語の概要を取得したいと思います(優れたライブラリなどを持っています)。
誰もその種のタスクのためのいくつかの良い言語とライブラリを知っていますか?PythonやJavaはどうですか?
ベスト
コンテンツベースの画像検索システムを実装しようとしていますが、その前に、このタスクに適したいくつかのプログラミング言語の概要を取得したいと思います(優れたライブラリなどを持っています)。
誰もその種のタスクのためのいくつかの良い言語とライブラリを知っていますか?PythonやJavaはどうですか?
ベスト
回答:
仕事の範囲と規模をより具体的にすることができます(アカデミックプロジェクト?デスクトップまたはモバイルの商用製品?Webベースの商用プロジェクト?)。
いくつかの推奨事項とコメント:
Matlabはアカデミックな世界では一般的であり、アイデアをスケッチ/検証するのに非常に適しています。他の研究者(CVおよび機械学習)からの大量のコードにアクセスできます。プロトタイピングとデバッグは非常に高速で簡単になりますが、この環境で開発したものを本番環境に投入するのは困難です。コードの実行内容によっては、メモリ/パフォーマンスの問題が発生する可能性があります(Matlabのプリミティブに関して何をしたいのかを記述できず、ピクセルでループを開始する必要があり、Matlabがインタープリター言語ではない場合がありますこのコンテキストで支援)。データベース、Webサーバーなどとのやり取りは簡単ではなく、時には不可能です(MatlabプログラムがWebフロントエンドによって呼び出されるThriftサーバーになることはありません)。$$$かかります。
C ++は、多くのプロダクショングレードのCVシステムで使用されています(Googleの画像検索やストリートビュー、または多くの商用ロボットアプリケーションの規模で考えてください)。OpenCVのような優れたライブラリ、優れたパフォーマンス、運用環境への配置が簡単。機械学習を行う必要がある場合、多くのライブラリがあります(LibSVM / SVMlight、Torch)。「すべてのピクセルでループ」コードに頼る必要がある場合、それはうまく機能します。大規模な検索システムで必要なシステム/ストレージレイヤーのコーディングに使いやすい(例:イメージへの逆インデックスマッピング機能ハッシュを格納するための非常に大きなディスク上のハッシュマップ)。Thrift / Message Packのようなものは、検索プログラムをRPCサーバーに変え、Webフロントエンドから呼び出すことができます。ただし、プロトタイピングにはあまり機敏ではなく、新しいアイデアを試すのは非常にひどく、開発時間が遅い。経験の浅いコーダーの手に渡ると、パフォーマンスや不安定性の問題を追跡するのが難しくなる可能性があります。
Pythonは、何らかの形で両者の中間に位置しています。Matlabスタイルの数値計算(numpyとscipyを使用)に使用でき、OpenCVなどのライブラリにバインドできます。あなたはそれでシステム/データ構造のものをすることができ、許容できるパフォーマンスを得ることができます。MatlabやC ++よりも少ないものの、かなりの数の機械学習パッケージがあります。「すべてのピクセルでループ」コードに頼る必要がない限り、パフォーマンスの1:1.5から1:3の比率と2:1から10:1の比率で、C ++でできることのほとんどすべてをコーディングできます。ソースコードサイズ(議論の余地あり)。しかし、プロジェクトの成功次第では、パフォーマンスが問題になるポイントがあり、C ++への書き換えはオプションではありません。
特にあなたのプロジェクトはアカデミックであるため、Mathematicaは非常に優れた適切なソフトウェアシステムです。Mathematica 8には、画像処理、線形代数、数値、GPUなどの包括的な機能セットが付属しています。また、シンボリックシステムでもあるため、方程式の閉形式解を何度も導出できます。コンピュータビジョンタスクには非常に便利です。Mathematicaは、Python、C、C ++、Java、.NETなどのコードとも通信できます。