主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

深層学習を使用したWebカメライメージの分類

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结束

参考

|

関連するトピック