このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
00
MATLAB®,シンプルなWebカメラ,および深層ニューラルネットワークを使用して,身の回りの物を識別します。この例では,GoogLeNetを使用します。この事前学習済みの深層畳み込みニューラルネットワーク(CNNまたは事先)は,100多万枚を超えるイメージについて学習済みであり,イメージを1000個のオブジェクトカテゴリ(キーボード,マグカップ,鉛筆,多くの動物など)に分類できます。GoogLeNetをダウンロードし,MATLABを使用してカメラのイメージをリアルタイムで連続的に処理できます。
googlenetは広范囲のイメージに対するな特徴表现を习ししいますます入入イメージを取り,イメージ内のオブジェクトラベルラベル各カテゴリの确率を表示し。がどの程度正确に分类されるかを确认できます。ネットワークによるオブジェクト分类の详细を确认するには,最终的なクラスの判定だけでなく,上位5クラスのスコアをリアルタイムで表示します。
カメラを接続し,事前学習済みのGoogLeNetネットワークを読み込みます。この手順では任意の事前学習済みのネットワークを使用できます。この例には,MATLAB支金宝app持USB摄像头,包および深度学习工具箱™模型GoogLeNet网络が必要です。必要なサポートパッケージがインストールされていない場合,ダウンロード用リンクが表示されます。
相机=摄像头;网= googlenet;
例をもう一流传行するする合,まずコマンド清晰的相机
を実行します。ここで,相机
はWebカメラへの接続です。そうしない場合,同じWebカメラへの新しい接続は作成できないため,エラーが表示されます。
イメージを分類するには,ネットワークの入力サイズに合わせてイメージのサイズを変更しなければなりません。ネットワークのイメージ入力層の输入
プロパティから最初の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);
上第五位つの予測をヒストグラムとして表示します。
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';
上第五位つの予測のヒストグラムをイメージと共に連続的に表示して分類します。
而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结束