0

私がやろうとしているのは、トレーニング済みの WEKA モデルを使用して画像を分類することです。ImageJ/Fiji の Advanced Weka Segmentation プラグインの存在は認識していますが、カスタムメイドの特徴ベクトルを使用しているため、それでは機能しません。

とにかく、実行しようとしている ImageJ マクロ内で:

exec("java", "-cp", "/home/dionysis/weka-3-7-7/weka.jar", "weka.classifiers.trees.RandomForest",  "-T", "/home/dionysis/Desktop/CNH/cnh-data/2class-deffeat-data-20121218.arff", "-l", "/home/dionysis/Desktop/CNH/cnh-data/2class-deffeat-ranfor-classifier-20121218.model.model", "-p", "0", ">", "/home/dionysis/Desktop/testrun-data.out");

つまり、weka の端末コマンドを実行しています。Linux ターミナルでは問題なく動作しますが、マクロ内で呼び出しても何も起こりません。エラーも発生しません。

最初は、別のJVMで実行されているJavaプログラムから呼び出されたシステムのJVMでJavaプログラムを実行しようとしていたことが問題だと思っていました(ImageJ/Fijiは独自のJVMにバンドルされています)。このため、システムの JVM を使用して ImageJ/Fiji を実行しようとしましたが、うまくいきませんでした。

これに関するヒントはありますか?よろしくお願いします...ありがとう!

4

1 に答える 1

3

ImageJ / Fijiを実行しているときにすでにJavaを実行しているので、を介してJavaランタイムを再度呼び出す必要はなく、マクロ関数execを使用するだけです。call("Class.method", arg1, ...)

Wekaがフィジーに含まれているので、のようなパブリック静的メソッドを実行できるはずですcall("trainableSegmentation.Weka_Segmentation.loadData", "/home/user/data.arff");ここを参照)。ただし、Javaクラスをさらに操作したい場合は、フィジーにも含まれているJavaScriptPythonなどのより強力なスクリプト言語を使用することをお勧めします。

于 2013-02-05T13:17:47.687 に答える