参考サイトに載っていたコードをそのまま実行すると問題なく結果がリアルタイムに表示されるのですが、ResNet-50をAlexNetに変更して利用するとカメラのキャプチャ画面が真っ暗で表示され、ラベルも同じもので固定されます。値はたまに変化しているのでプログラムが固まっている訳ではなさそうです。
実行時にエラーが表示されるなどもありません。
下記に示すコードの変更点はResNet-50をAlexNetに変更し、それに伴い入力画像サイズを変更したのみになっているつもりです。
原因が分かる方がいらっしゃれば教えていただきたいです。
変更後のソースコード
function raspi_webcam_alexnet()
raspiObj = raspi();
cam = webcam(raspiObj,1);
net = coder.loadDeepLearningNetwork('alexnet');
inputSize = [227, 227,3];
textToDisplay = '......';
start = tic;
fprintf('Entering into while loop.\n');
while true
img = snapshot(cam);
elapsedTime = toc(start);
if elapsedTime > 1
imgSizeAdjusted = imresize(img,inputSize(1:2));
[label,score] = net.classify(imgSizeAdjusted);
maxScore = max(score);
labelStr = cellstr(label);
textToDisplay = sprintf('Label : %s \nScore : %f',labelStr{:},maxScore);
start = tic;
end
img_label = insertText(img,[0,0],textToDisplay);
displayImage(raspiObj,img_label);
end
end
変更前のソースコード(参考サイトのソースコード)
function raspi_webcam_resnet()
raspiObj = raspi();
cam = webcam(raspiObj,1);
net = coder.loadDeepLearningNetwork('resnet50');
inputSize = [224, 224,3];
textToDisplay = '......';
start = tic;
fprintf('Entering into while loop.\n');
while true
img = snapshot(cam);
elapsedTime = toc(start);
if elapsedTime > 1
imgSizeAdjusted = imresize(img,inputSize(1:2));
[label,score] = net.classify(imgSizeAdjusted);
maxScore = max(score);
labelStr = cellstr(label);
textToDisplay = sprintf('Label : %s \nScore : %f',labelStr{:},maxScore);
start = tic;
end
img_label = insertText(img,[0,0],textToDisplay);
displayImage(raspiObj,img_label);
end
end