Teachable Machine 2章 予測結果の描画 (draw_detectionの実装)の件で教えてください。

Teachable Machine を学んだことを通して、他に応用することを考えています。
スコア0 ~ 1の値について下記の記載があります。

def predict(self, input_data):
    self.interpreter.set_tensor(self.input_details[0]['index'],
                                input_data)
    self.interpreter.invoke()
    detection = self.interpreter.get_tensor(self.output_details[0]['index'])
    return detection

def draw_detection(self, frame, detection):
    for i, s in enumerate(detection[0]):
        tag = f'{self.classes[i]}: {s*100:.2f}%'

ここで, s がスコアだと思います。このスコアを detector.py ではなくて、main.py 側で
50%以上あるかを判定させて、結果の信頼性に応じて出力を変更したい考えています。
そのために、まず、スコア s が予測結果として出力される文法上の決まり事がよく
わからないため、教えて頂きたいと思います。
おそらく、その前に記載されている、

detection = self.interpreter.get_tensor(self.output_details[0][‘index’])

あたりが関係しているように思いますが、よくわかりません。

ご教授願います。

以上

おっしゃる通り、detection 変数には各クラスのスコアが入っています。具体的にはTeachable Machine上でクラスを作成した順番にスコアが入っていますので、例えば以下のようなデータが入っています。

[0.8,  0.1,  0.05,  0.05,  0]

この時、もっともスコアが良かったのは先頭のクラスで0.8です(教材で言えば neutralクラスのスコアが最も高かったことになります)。

このデータをプログラム上で扱う時、描画を行うためにクラスIDとスコアの両方へアクセスしたいため、インデックス番号と要素の両方が取り出せるenumerateという関数を利用しています。

    for i, s in enumerate(detection[0]):