初めに
前回は,看板検知の学習モデルについて記してきました.今回は,その検知したモデルを使って実際に検知し,それを可視化する為のプログラムを書いていこうと考えています.
実現したい機能
・yolov5で動画を使って推定し推定した動画を保存する.
・検知されたときに別システムに検知を可視化する.
・検知された時間やモノを記録する.
この辺を実際に実現していきたいなと思います.
実現したい機能の実現
前置き
実は,似た機能を前にtensorflowとpython,processingを利用して簡易的なものを作ったことがあるのでそのプログラムを流用して書いていきたいと思います.
プログラムはgithubに載せてあります.※学習モデルの作り方やどうそのモデルをlabelプログラムで動かしたかを作った本人は忘れています.
URL https://github.com/S-mishina/Personal-estimation
このプログラムのsketch_190628a/sketch_190628a.pdeが可視化部分です.
システムの全体についてもここに一応載せておきます.
ここから実際にyolov5の改造をしていきます.
特定の何かが検知されたときに何かアクションを起こす.
今回は簡単に実装してみたかったので検知したいものが見つかったときにはそれを検知しましたよ
という通知を出すプログラムにした.
label1 = str((names[int(c)])) # add to string
if label1=="chair":
print("椅子を検知しました.")
まぁ簡単なコードなので誰でもわかると思いますが,一応説明すると,yoloでオブジェクトを検出するとおそらく検出したものがnames[int(c)]というところで記録されるみたいでした.なのでそれを文字列化して文字列化したものが自分が検出したいものとマッチしているかを見てマッチしていれば検出OK,マッチしていなければ検出NGという具合になっています.
このプログラムの展望
この実装した機能の展望としてはここからソケット通信で検出したかどうかを文字ベースじゃなくて可視化できるシステムにつなげていきたいと考えています.
検知された時間やモノを記録する.
今回は椅子を検出することを目的としているので椅子が検出されたときにログを取るプログラムを書いていきたいと思います.
インポート部分
import pathlib
ファイル作成部分
#初期化
set_logging()
device = select_device(opt.device)
if os.path.exists(out):
shutil.rmtree(out) #出力フォルダーを削除します
os.makedirs(out) #新しい出力フォルダーを作成します
d_today = datetime.date.today()
f = pathlib.Path('daystext/'+ str(d_today) +'.txt')
f.touch()
記録部分
label1 = str((names[int(c)])) # add to string
if label1=="chair":
print("椅子を検知しました.")
with open('daystext/'+str(d_today)+'.txt', 'a') as f:
dt_now = datetime.datetime.now()
f.write(str(dt_now)+"椅子を検知しました."+"\n")
記録されたもの
2020-10-12 17:27:42.914446椅子を検知しました.
2020-10-12 17:27:42.941445椅子を検知しました.
2020-10-12 17:27:42.968444椅子を検知しました.
2020-10-12 17:27:42.996444椅子を検知しました.
2020-10-12 17:27:43.024443椅子を検知しました.
2020-10-12 17:27:43.051442椅子を検知しました.
2020-10-12 17:27:43.079441椅子を検知しました.
2020-10-12 17:27:43.108440椅子を検知しました.
2020-10-12 17:27:43.135454椅子を検知しました.
2020-10-12 17:27:43.162439椅子を検知しました.
2020-10-12 17:27:43.190452椅子を検知しました.
2020-10-12 17:27:43.218437椅子を検知しました.
2020-10-12 17:27:43.245436椅子を検知しました.
2020-10-12 17:27:43.274445椅子を検知しました.
2020-10-12 17:27:43.301448椅子を検知しました.
2020-10-12 17:27:43.329434椅子を検知しました.
2020-10-12 17:27:43.357433椅子を検知しました.
2020-10-12 17:27:43.384432椅子を検知しました.
こんな感じで記録されていきます.
###動画を記録する部分
ここは結構大変そうなのでとりあえず次回に回します.
ごめんなさい.
次回へ
主に今回はyolov5のデフォルトプログラムを改良して物体を検知した後に記録するというプログラムを主にして書いて行きました.
次回は可視化する部分を具体的に書いていけたらいいなと考えていますのでよろしくお願いします.