ポイント
Webで物体検出を動かしてみる
  Webで最新のDeepLearningによる画像の物体検出を簡単にやってみるための記事
- 
	Point 1ML5.jsを試用ML5.jsは誰でも簡単に最新の機械学習技術をブラウザで使うことができるライブラリ
 - 
	Point 2CocoSSD学習済みモデルを使用YoloやCocoSSDがML5.jsでは選択して使用することができる.ここではCocoSSDを使った非常にシンプルなサンプルを掲載
 - 
	Point 3領域とその名前を表示通常のスマホであらかじめ指定してある画像から物体の写っている領域とその種類を表示します.
 
  
  
  ステップ概要
Webで物体検出を動かしてみる
	   ml5.jsを使用した簡単な物体検出プログラム(HTML+JS)を準備します.
	 
	 
	 
	 
	 
       
	   Pythonを使って簡易的なWebサーバを立てます
	 
	 
	 
	 
	 
       
	   実行して実際に画像上の領域の検出とその名前の表示を確認
	 
	 
	 
	 
	 
       
	   モデルの初期化などコード全体の解説
	 
	 
	 
	 
	 
       
	   物体検出を実行している箇所に関して解説
	 
	 
	 
	 
	 
       
	   結果表示を行なっている箇所の解説
	 
	 
	 
       Step
 
		  物体検出プログラムを準備
		  
		
		    今回はml5.jsの公式サンプルをベースにややアレンジして紹介しています.
  
それでは、プログラムを用意し動かしていきます.全体の解説は追って行います.
以下のようなフォルダの構造になるように次のファイルを置いてください.
    
続いて各ファイルの中身です.
まず,index.htmlは以下のコードとなります.
  
次にJavaScript側のソースコードは以下になります.
  
imagesフォルダにあるcat.jpgに関しては下記より取得ください.
  
    
    
    
    
    
    
    
      
  
		     : ブラウザで開く
  
    https://github.com/ml5js/ml5-examples/tree/release/p5js/YOLO/YOLO_single_image
  
以下のようなフォルダの構造になるように次のファイルを置いてください.
Folder : 物体検出プログラムのフォルダ
 index.html
 index.js
 images/
 cat.jpg
まず,index.htmlは以下のコードとなります.
HTML : canvasを載せたHTML
  index.html
  
    
<html>
  <head>
    <script src="https://unpkg.com/ml5@latest/dist/ml5.min.js" type="text/javascript"></script>
  </head>
  <body>
    <canvas id="canvas" width="640px" height="480px"></canvas>
    <img id="srcimg" width="640px" height="480px" src="images/cat.jpg">
    <script src="index.js"></script>
  </body>
</html>      
    
  
JavaScript : ML5.jsのCocoSSDによる物体検出を行う
  index.js
  
    
let objectDetector;
let ctx;
let img = document.getElementById("srcimg");
async function init() {
    objectDetector = await ml5.objectDetector('cocossd', detect)
    ctx = document.getElementById("canvas").getContext('2d');
}
window.addEventListener('DOMContentLoaded', function () {
    init();
});
function detect() {
    objectDetector.detect(img, function (err, results) {
	if (err) {
	    console.log(err);
	    return
	}
	
	if (results) {
	    draw(results);
	}
    });
}
function draw(objects) {
    ctx.drawImage(img, 0, 0);
    for (let i = 0; i < objects.length; i++) {	
	ctx.font = "16px Arial";
	ctx.fillStyle = "green";
	ctx.fillText(objects[i].label, objects[i].x + 4, objects[i].y + 16);
	
	ctx.beginPath();
	ctx.rect(objects[i].x, objects[i].y, objects[i].width, objects[i].height);
	ctx.strokeStyle = "green";
	ctx.stroke();
	ctx.closePath();
    }
}
    
  
	cat.jpg
      
      
	リンク
      
    
	    











