YoloとEfficientNetの違いと用途

ラズパイ5のカメラから動画取り込んでリアルタイムの認識は、

https://isehara-3lv.sakura.ne.jp/blog/2025/03/29/yoloを使ってみる/

でやってみたけれど、EfficientNetとの比較をラズパイ5でやってみる

Yoloのコードは極めてシンプルだけれども、EfficientNet(TFlite上で動作)は

前処理(cv2使用)やラベルテキスト(ImageNetLabels.txt)からの抽出処理を自前でやらないといけない、まあコードはLLM生成ではありますが

判定を甘くして、上位5個の候補を出力しています、TF(Tensor Flow)だともう少しコードは簡単らしいけれども

# 画面全体から尤もらしい物体を選択する

import cv2
import numpy as np
import matplotlib.pyplot as plt
import tflite_runtime.interpreter as tflite

# モデルロード
interpreter = tflite.Interpreter("EfB3_imagenet.tflite")
interpreter.allocate_tensors()

# 入出力情報
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

# 画像前処理
img_path = "test.jpg"
img = cv2.imread(img_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_resized = cv2.resize(img, (300, 300))
input_data = np.expand_dims(img_resized, axis=0).astype("float32")

# 推論
interpreter.set_tensor(input_details[0]['index'], input_data)
interpreter.invoke()
output_data = interpreter.get_tensor(output_details[0]['index'])[0]

# ラベル読み込み
with open("ImageNetLabels.txt", "r") as f:
    labels = [line.strip() for line in f.readlines()]
if labels[0].lower() == "background":
    labels = labels[1:]  # ずれを修正

# 結果表示
top_k = output_data.argsort()[::-1][:5]
for i in top_k:
    print(f"{labels[i]}: {output_data[i]*100:.2f}%")

# 結果を画像に描画
for i, idx in enumerate(top_k):
    label = labels[idx]
    score = output_data[idx]
    cv2.putText(img, f"{label}: {score*100:.2f}%", (10, 30 + i*30),
                cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 0, 0), 2)

# 表示と終了処理
img_bgr = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
while True:
    cv2.imshow("Window", img)
    if cv2.waitKey(1) & 0xFF == ord('q'):  # qキーで終了
        break
cv2.destroyAllWindows()

<Yolo>

 

 

<EfficientNet>

 

ということで目的によっての使い分けですが、person検出目的ならばYoloだろうというのが現時点、EfficientNetのラベルテキスト(ImageNetLabels.txt)にはpersonというラベルは存在してません

人検出で軽量化を目指すなら、TFlite + efficientdet_lite0.tfliteのような解もありそうですが、ラベル(coco_lables.txt)には80分類ぐらいあります、ちなみにyoloは50分類

 

admin

SpotifyConnect vs AirPlay

時々ではありますが、iPadでSpotifyを動作させているときに、接続が切れてしまう時が月一ぐらいで発生する

iPad(Spotifyインストール) — Node 2(BlueSound)/Volumio2(Raspberry PI zero)の構成でSpotify ConnectでNode 2を選択すれば、Node 2が再生権利を持っていてダイレクトにSpotifyを再生します、接続切れ問題発生時は多くはNode 2のリブート、あるいはWi-Fiルーターの再起動で回復しますが、今回は回復せず

代替え手段としてAirPlayがありますが、これはCD品質なのでそこそこ音は良いのですが、iPadでデコードするから消費電力は増加するはず、Spotify Connectの時はiPadは単なるコントローラーで、iPadは音楽再生時の音源処理がないから

AirPlayを使ってみると、遅延(再生スタート・停止時の)があるようです、と言ってる間に復旧したから原因は不明、Spotify Connectを無効にしてしまうタイミング(一時的にアカウント無効になったとか)があるとしか思えないけども

 

admin

Apple Silicon系のMacBookでNASへのtimemachineバックアップ失敗

まあ以前からMx系のMacBookでは問題は時々起きていますが、

https://isehara-3lv.sakura.ne.jp/blog/2023/10/08/しばらくtimemachineが遅延で完了してなかった/

timemachineeditor使って、毎日早朝にNASのHDDにバックアップしてますが、

最近ほぼ確実にtimemachineバックアップに失敗して、マニュアルでバックアップ起動してます、おそらくIntel CPUに比較してApple siliconのパワーマネージメント系エンハンスが原因だろうと思うので、

スリープさせない設定にして、1回目はバックアップ取れてた、まあまだこの先はわからないけれどもね、ダメなら次を考える

timemachineeditorのマニュアル見る限りも、sleep時のバックアップは不安定と書いているし

https://tclementdev.com/timemachineeditor/

schedule wakesのリンク先には、

https://support.apple.com/ja-jp/guide/mac-help/mchl40376151/mac

sleepを解除する方法の記載、最初からスリープさせなきゃ良いだろうと取れる

 

P.S. (2025/4/7)

ハズレ、でした

 

admin

iTermが原因で夜間のUpdate適用ができなかった

ターミナルソフトをiTerm2に変えると、夜間のアップデート適用に失敗していた、

原因はiTerm終了時に確認を求める設定だからと言うことで、設定のPrompt before closingをneverに設定すれば良いと、確かにアプリ閉じる時に確認されなくなった

 

admin

VMware上のUbuntu24.04のファイル領域拡張

滅多に行わない作業ということと、Ubuntuのバージョンで変わってきている様子、

概ね目安は80%に達したら拡張というふうに考えているので、10GBだけ拡張、参考は以下のサイト

https://qiita.com/mcyang/items/a32b914db073f308a3cb

やることは、

① 物理ボリューム拡張

② 論理ボリューム拡張

③ ファイルシステム拡張

の3点になります、実行結果だけですが、

およそ50%まで余裕ができました、

コンテナが標準で使うようになって、VMwareのUbuntuの出番は少ないのですが、何かの時には出番というところ

 

admin