1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Teachable Machineを使った、この忘れ物誰のー?

Posted at

名称未設定のデザイン (2).png

今回作成したもの

先日、保育園の帰りに他の子の着替えが荷物に入っていました。
名前が書いてあったので、その子に返しましたが、
大人になって名前書くこと減ったなーと感じました。


今回は忘れ物があったときに誰のものかわかるツールとして、
Teachable Machineを使って機械学習をさせて、物の判定を作りました。
忘れ物ツールとしてあらかじめ機械学習したものをカメラに向けると誰の何か教えてくれます!

今回は
・横山の派手な眼鏡ケース
or
・田中のセンス良い扇子

上記アイテムを判定してくれています。

会社の備品などはテプラとかを使って所有者を記載しているかと思いますが、
私物であったり、名前が付けれないものを登録できます!

使用したツール

Teachable Machine
CodePen

作成方法

Teachable Machineの作成方法

①Teachable Machine:https://teachablemachine.withgoogle.com/
 上記を開き画像プロジェクトを作成する。

image.png


②クラス(物の名前)を書く 例:田中のセンス良い扇子
image.png


③ウェブカメラから長押しして録画で対象物を覚えさせる!
 (100枚ぐらい録画したらいいかな?)
 終わったらモデルをトレーニングして機械学習開始!
image.png

そしたら完成!!
かなり簡単ですね、、、


④ドライブに保存する
 メニューのドライブにプロジェクトを保存を押す。
image.png


④共有リンクを取得する
プレビューだけでも判定してくれるので、それでもいいですが、
Webアプリに組み込むことができます。

モデルをエクスポートする⇒モデルをアップロードを押し、
共有可能なリンクをコピーします。

次項目で、今回はCodePenを使いWebアプリ化してみましょう!

image.png

CodePenのコードサンプル

今回はコードサンプルを用意しました。
CodePen:https://codepen.io/pen/
を開き、下記コードを貼ってください。

HTML
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>忘れ物</title>
    <script src="https://unpkg.com/ml5@latest/dist/ml5.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.21.1/axios.min.js"></script>
</head>
<body>
    <h1>忘れ物ツール</h1>
    <video id="webcam" autoplay playsinline width="430" height="320"></video>
    <p id="result">Loading model...</p>
</body>
</html>
CSS
#webcam {
  transform: scaleX(-1);
}
JavaScript
let classifier;
        let video;
        const modelURL = '●●●URL挿入●●●';

        // Load the Teachable Machine model
        async function loadModel() {
            classifier = await ml5.imageClassifier(modelURL + 'model.json');
            document.getElementById('result').innerText = 'Model loaded';
        }

        // Setup the webcam
        async function setupWebcam() {
            video = document.getElementById('webcam');
            try {
                const stream = await navigator.mediaDevices.getUserMedia({ video: true });
                video.srcObject = stream;
            } catch (err) {
                console.error('Error accessing the webcam:', err);
            }
        }

        // Make a classification
        async function classifyVideo() {
            const results = await classifier.classify(video);
            document.getElementById('result').innerText = `Label: ${results[0].label} Confidence: ${results[0].confidence.toFixed(4)}`;
            
            // Send the classification result using Axios
            axios.post('https://your-server-endpoint.com/classification', {
                label: results[0].label,
                confidence: results[0].confidence
            }).then(response => {
                console.log('Result sent successfully:', response.data);
            }).catch(error => {
                console.error('Error sending result:', error);
            });

            // Repeat classification
            classifyVideo();
        }

        // Initialize everything
        async function init() {
            await setupWebcam();
            await loadModel();
            classifyVideo();
        }

        // Start the process
        window.onload = init;

image.png

先ほどコピーした共有可能なリンクを赤網掛部分に貼って完成!!

今後の発展性

機械学習としてTeachable Machineを作りましたが、意外と簡単でした。
店頭の品切れ判定をして、品切れ判定をすると通知するなど、
かなり使える技術だと感じました。

Teachable Machineでは音声、ポーズなどの判定もあるようなので勉強していきたいと思います。

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?