LoginSignup
7
3

More than 3 years have passed since last update.

Teachable Machineで学習したデータをNode.jsでシンプルに利用する

Last updated at Posted at 2020-08-11

いい感じのサンプルがなかった

node-redenebularとはTeachable Machineの連携が結構あったり、フロントエンド側ばかりたったので、Node.jsで画像ファイルを読み込んで判定するシンプルな実装をメモ

https://www.npmjs.com/package/@teachablemachine/image
ここもやはりフロントエンドのサンプルしかなくて…

https://www.tensorflow.org/js
tensorflowをそのまま利用しようとも考えたけど、もっとTeachableMachineに特化して使いやすくできるのでは…

2020年11/30追記

いい感じのライブラリありました。

インストールしたもの

  • @teachablemachine/image: 0.8.4
  • @tensorflow/tfjs: 2.1.0
  • canvas: 2.6.1
  • jsdom: 16.4.0
npm i @teachablemachine/image @tensorflow/tfjs canvas jsdom

ソースコード

const { JSDOM } = require('jsdom');
var dom = new JSDOM('');
global.document = dom.window.document;
global.HTMLVideoElement = dom.window.HTMLVideoElement;
const canvas = require('canvas');
global.fetch = require('node-fetch');

const tmImage = require('@teachablemachine/image');
const fs = require('fs');

// https://teachablemachine.withgoogle.com/
// ここでエクスポート、クラウドにモデルをアップロードした後に取得できる
const URL = '{{URL}}';

async function init() {
  const modelURL = URL + 'model.json';
  const metadataURL = URL + 'metadata.json';
  // モデルデータのロード
  const model = await tmImage.load(modelURL, metadataURL);

  // クラスのリストを取得
  const classes = model.getClassLabels();
  console.log(classes);

  // 同じフォルダ内の画像を読み込む 今回は自分の顔画像
  const image = await canvas.loadImage('ono.png');

  // 読み込んだ画像で判定してみる
  const predictions = await model.predict(image);
  console.log(predictions);
}

init();

実際実装してみたらフロントエンド前提のものでちょっとスマートじゃない。
もしかしたらアップデート待ちでいいのかも

出力結果

Image from Gyazo

「おの」は自分の顔

一応成功しました!

7
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3