2018年4月21日土曜日

Matlab for Java : (11) DeepLearning(画像認識)

JavaからMatlabを使ってDeepLearning(画像認識)をやってみます。
(1) 画像の準備
今回は下記の画像を使いました。
http://gahag.net/010175-french-bulldog/
 画像の取り込みは、
ml.eval("img1 = imread('img/dog01.jpg');");
で直接やりました。

(2) DeepLearningの準備
今回はMatlabのAlexという学習済みネットワークを使います。
https://jp.mathworks.com/help/nnet/ref/alexnet.html
 
途中画像のトリミングをしないといけないので、
ml.eval("sz = deepnet.Layers(1).InputSize"); //ネットワークの最初の層の InputSize プロパティを使用して、ネットワークの入力サイズを求めます。
ml.eval("img = imresize(img1,[227 227]);");
のようにします。
https://jp.mathworks.com/help/images/ref/imresize.html
(3) Test
実際に画像が何かをテストします。scoreが0.01以上のものだけ出力します。
ml.eval("pred1 = classify(deepnet,img)");
ml.eval("categorynames = deepnet.Layers(end).ClassNames;");
ml.eval("[pred,scores] = classify(deepnet,img);");
ml.eval("highscores = scores > 0.01;");
精度も良さそうです。
(4)課題
hscoreがベクトルでJava側に渡す方法がわかりませんでした。

ソースコード

1 件のコメント: