前提・実現したいこと
スマートフォンから物体を認識できるwebアプリをjavascriptで作成しているのですが参考にしたサイトでは学習済データを使用しているのでその学習データを自前で学習したyolov3データセットに変更したいと考えています。
発生している問題
自前のyolov3データセットに変換する方法がわからない。
該当のソースコード
html
1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <meta charset="UTF-8"> 6 7 <title>YOLOとp5.jsによるリアルタイム物体検出</title> 8 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 10 <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.0/p5.min.js"></script> 11 <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.0/addons/p5.dom.min.js"></script> 12 <script src="https://unpkg.com/ml5@0.1.2/dist/ml5.min.js" type="text/javascript"></script> 13 14</head> 15 16<body> 17 <h1>ISHINDENSHIN</h1> 18 <p id="status">モデルの読み込み中...</p> 19 <script src="sketch.js"></script> 20</body> 21 22</html>
js
1let video; 2let yolo; 3let status; 4let objects = []; 5 6function setup() { 7 // ドキュメント内にcanvas要素を作成し、サイズをピクセル単位で設定する。 8 // https://p5js.org/reference/#/p5/createCanvas 9 createCanvas(320, 240); 10 // Webカメラからのオーディオ/ビデオを含む新しいHTML5 video要素を作成する 11 // https://p5js.org/reference/#/p5/createCapture 12 video = createCapture(VIDEO); 13 // ビデオのサイズはキャンバスと同じ 14 video.size(320, 240); 15 16 // YOLOオブジェクトを作成する 17 yolo = ml5.YOLO(video, startDetecting); 18 19 // 元のビデオは隠す 20 video.hide(); 21 status = select('#status'); 22} 23 24// 毎フレーム、p5.jsによって呼び出される。 25function draw() { 26 // イメージをp5.jsのcanvasに描画する。 27 // image(img, x, y, [width], [height]) 28 // https://p5js.org/reference/#/p5/image 29 30 // width: 描画するキャンバスの幅を保持するシステム変数。heightも同様 31 image(video, 0, 0, width, height); 32 33 for (let i = 0; i < objects.length; i++) { 34 noStroke(); 35 fill(0, 255, 0); 36 // クラス名を境界ボックス左上に描く 37 // 画面にテキストを描画する。最初のパラメータで指定された情報を、以降の追加パラメータで指定された位置の画面に表示する。 38 // text(str, x, y, [x2], [y2]) 39 // https://p5js.org/reference/#/p5/text 40 text(objects[i].className, objects[i].x * width, objects[i].y * height - 5); 41 noFill(); 42 strokeWeight(4); 43 stroke(0, 255, 0); 44 // 境界ボックスを描く 45 // 矩形を画面に描画する。 46 // rect(x, y, w, h, [tl], [tr], [br], [bl]) 47 // https://p5js.org/reference/#/p5/rect 48 rect(objects[i].x * width, objects[i].y * height, objects[i].w * width, objects[i].h * height); 49 } 50} 51 52function startDetecting() { 53 status.html('モデルを読み込んだ'); 54 detect(); 55} 56 57// ビデオからのイメージを物体検出する 58function detect() { 59 yolo.detect(function(err, results) { 60 // 結果を配列objectsに割り当てる 61 objects = results; 62 // 連続して検出 63 detect(); 64 }); 65}
試したこと
もともと他人が作った学習済モデルを使って動作させることは可能なのですが自作のyolov3で学習済のモデルをプログラムの中に組み込む方法がわかりません..
参考にさせていただいたサイトでは以下のようにgithubに学習データを置いてそれを実行時にロードしていると言った手法になると思うのですがそれを自前の学習済データに置き換える方法を模索しています。
参考サイト
あなたの回答
tips
プレビュー