主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을영문으로보려면여기를클릭하십시오。

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

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

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

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

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

카메라에연결하고사전훈련된GoogLeNet신경망을불러옵니다。이단계에서는임의의사전훈련된신경망을사용할수있습니다。이예제를실행하려면MATLAB支持US金宝appB摄像头包와深度学习工具箱™模型GoogLeNet网络가필요합니다。필요한지원패키지가설치되어있지않으면이를다운로드할수있는링크가제공됩니다。

相机=摄像头;网= googlenet;

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

카메라의스냅샷분류하기

영상을분류하려면신경망의입력크기에맞게영상의크기를조정해야합니다。신경망영상입력계층의InputSize속성의처음2개요소를가져옵니다。영상입력계층은신경망의첫번째계층입니다。

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

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

图im =快照(相机);image(im) im = imresize(im,inputSize);(标签,分数)=(净,im)进行分类;标题({char(标签),num2str (max(分数),2)});

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

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

h =图;ishhandle (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);ax₁=情节(1、2、1);ax2 =情节(1、2、2);

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

我=快照(相机);image(ax1,im) im = imresize(im,inputSize);(标签,分数)=(净,im)进行分类;标题(ax₁,{char(标签),num2str (max(分数),2)});

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

[~, idx] =排序(得分,“下”);idx = idx (5: 1:1);类= net.Layers . class(结束);classNamesTop =字符串(类(idx));scoreTop =分数(idx);

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

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

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

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

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

h =图;h.Position (3) = 2 * h.Position (3);ax₁=情节(1、2、1);ax2 =情节(1、2、2);ax2。PositionConstraint =“innerposition”

영상을연속해서분류하고영상과상위5개의예측에대한히스토그램을함께표시합니다。

ishandle (h)%显示和分类的图像我=快照(相机);image(ax1,im) im = imresize(im,inputSize);(标签,分数)=(净,im)进行分类;标题(ax₁,{char(标签),num2str (max(分数),2)});选择前5个预测[~, idx] =排序(得分,“下”);idx = idx (5: 1:1);scoreTop =分数(idx);classNamesTop =字符串(类(idx));绘制直方图barh (ax2 scoreTop)标题(ax2,“五大”)包含(ax2,“概率”xlim(ax2,[0 1]) yticklabels(ax2,classNamesTop) ax2. xlim(ax2,[0 1])YAxisLocation =“对”;drawnow结束

참고항목

|

관련항목