主要内容

딥러닝을사용하여웹캠상분류하기

이예제에서는사전훈련된심층컨벌루션신경망GoogLeNet을사용하여웹캠의영상을실시간으로분류하는방법을보여줍니다。

Matlab®과간단한웹캠및심층신경망을사용하여주변의사물을식별합니다。이예제에서는사전훈련된심층컨벌루션신경망(CNN또는事先)GoogLeNet을사용합니다。1백만개가넘는영상에대해훈련된GoogLeNet은영상을키보드,커피머그잔,연필,각종동물등1000가지사물범주로분류할수있습니다。GoogLeNet을다운로드하고MATLAB을사용하여계속해서카메라영상을실시간으로처리할수있습니다。

GoogLeNet은다양한상을대하는다양한특징을학습했습니다。영상을입력값으로받아영상에포함된사물의레이블과각사물범주의확률을제공합니다。주변의사물을사용하여GoogLeNet이영상을얼마나정확히분류하는지실험해볼수있습니다。GoogLeNet의사물분류에대해자세히알아보기위해,최종결정된클래스만표시하는대신상위5개의클래스에대한점수를실시간으로표시할수있습니다。

카메라와사전훈련된신경망불러오기

카메라에연결하고사전훈련된GoogLeNet신경망을불러옵니다。이단계에서는임의의사전훈련된신경망을사용할수있습니다。이예제를실행하려면MATLAB支持包的万博1manbetxUSB网络摄像头와深度学习工具箱™模型为GoogLeNet网络가필가필。필필。

摄像头=网络摄像头;Net = googlenet;

이예제를다시실행하려면먼저清晰的相机명령을실행하십시오。여기서相机는웹캠에대한연결입니다。이렇게하지않으면동일한웹캠에대한또하나의연결을만들수없기때문에오류가표시됩니다。

카메라의스냅샷분류하기

http://mail상을분류하려면신경망의입력크기에맞게http://mail상의크기를조정해야합니다。신경망상입력계층의InputSize속성의처음2개。网址:상입력계층은신경망의첫번째계층입니다。

inputSize = net.Layers(1).InputSize(1:2)
inputSize = 224 224

카메라의상을예측된레이블및해당레이블의확률과함께시합니다。分类를호출하기전에먼저신경망의입력크기에맞게상의크기를조정해야합니다。

图im = snapshot(camera);image(im) im = imresize(im,inputSize);[标签,分数]=分类(网,im);标题({char(标签),num2str (max(分数),2)});

카메라의상을연속해서분류하기

카메라의상을연속해서분류하려면위단계들을루프내에포함시키십시오。图를열어둔상태로루프를실행합니다。실시간예측을중지하려면图를닫으십시오。각반복의끝에서drawnow를사용하여图를업데이트합니다。

H =图;Ishandle (h) im =快照(相机);image(im) im = imresize(im,inputSize);[标签,分数]=分类(网,im);标题({char(标签),num2str (max(分数),2)});drawnow结束

상위예측시하기

예측된클래스는빠르게바뀔수있습니다。따라서상위예측들을한번에시하는것이유용할수있습니다。예측점수가가장높은클래스들을플로팅하여상위5개의예측과그확률을표시할수있습니다。

카메라의스냅샷을분류합니다。카메라의상을예측된레이블및해당레이블의확률과함께시합니다。分类함수의分数출력값을사용하여상위5개예측의확률히스토그램을@시합니다。

图창을만듭니다。먼저창의너비가2배가되도록크기를조정한다음서브플롯2개를만듭니다。

H =图;h.Position(3) = 2*h.Position(3);Ax1 = subplot(1,2,1);Ax2 = subplot(1,2,2);

왼쪽서브플롯에상과분류를함께시합니다。

Im =快照(相机);image(ax1,im) im = imresize(im,inputSize);[标签,分数]=分类(网,im);标题(ax₁,{char(标签),num2str (max(分数),2)});

점수가가장높은클래스를선택하여상위5개의예측을선택합니다。

[~,idx] = sort(score,“下”);Idx = Idx (5:-1:1);classes = net.Layers(end).Classes;classNamesTop = string(class (idx));scoreTop = score(idx);

상위5개의예측을히스토그램으로@시합니다。

barh(ax2,scoreTop) xlim(ax2,[0 1]) title(ax2,“五大”)包含(ax2,“概率”) yticklabels(ax2,classNamesTop)YAxisLocation =“对”

@상을연속해서분류하고상위예측@시하기

카메라영상을연속해서분류하고상위예측을표시하려면위단계들을루프내에포함시키십시오。图를열어둔상태로루프를실행합니다。실시간예측을중지하려면图를닫으십시오。각반복의끝에서drawnow를사용하여图를업데이트합니다。

图창을만듭니다。먼저창의너비가2배가되도록크기를조정한다음서브플롯2개를만듭니다。좌축의크기가변경되지않도록하려면PositionConstraint속성을“innerposition”으로설정하십시오。

H =图;h.Position(3) = 2*h.Position(3);Ax1 = subplot(1,2,1);Ax2 = subplot(1,2,2);ax2。PositionConstraint =“innerposition”

ishandle (h)显示和分类图像Im =快照(相机);image(ax1,im) im = imresize(im,inputSize);[标签,分数]=分类(网,im);标题(ax₁,{char(标签),num2str (max(分数),2)});选择排名前五的预测[~,idx] = sort(score,“下”);Idx = Idx (5:-1:1);scoreTop = score(idx);classNamesTop = string(class (idx));绘制直方图barh (ax2 scoreTop)标题(ax2,“五大”)包含(ax2,“概率”) xlim(ax2,[0 1]) yticklabels(ax2,classNamesTop) ax2。YAxisLocation =“对”;drawnow结束

참고 항목

||

관련 항목