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

カメラでリアルタイム物体検知システムの作成

Last updated at Posted at 2024-06-02

github

背景

物体検知をカメラでやりたくて、GoogleColabでコード書いて実行しました

前準備

  1. 自分のGoogleDriveにアクセスし、機械学習用のフォルダを作成
  2. 機械学習用のフォルダの中に、学習させる元の写真データフォルダを作成(例:僕の場合「切り抜き」という名前でフォルダを作成)
  3. このgithubにあるコード3つすべてを機械学習用のフォルダの中にアップロードする
  4. フォルダの構造が以下のようになればよし!(**注意:**この時「Hasu_data_verjpg」と「ReSizeAfter」というフォルダが無くて大丈夫。リサイズ.ipynbで自動的に作成するフォルダなので、手動で作成しないこと)
    スクリーンショット (1940)

全体における使い方

基本全て上から順にコードを実行していきましょう!

リサイズ.ipynbの使い方

HEICからJPGへ

上から4つ目のコードは、HEICからJPGに変換するコードなので、iPhoneで写真を撮った場合のみこのコードを実行する。
最初からJPGなら実行する必要はない。
この時、34行目
input_folder = '/content/drive/MyDrive/蓮ノ空CD機械学習/切り抜き'
のinput_folderのパスで学習データが入っているフォルダのパスを入力。
パスはGoogleColabo内のファイルというところでフォルダを右クリックするとパスがコピーできるのでそれをペーストすると楽
36行目output_folder = '/content/drive/MyDrive/蓮ノ空CD機械学習/Hasu_data_verjpg'
のフォルダ作成するフォルダの名前は自分の好きなように変更していいですよ

JPG画像のリサイズ

一番最後のコードが画像を小さくするコードです。
35行目new_size = (320, 320) # 幅と高さを指定の所でサイズを調整する。
元からJPGで学習フォルダを作った場合やフォルダ名を変えた人は、
31行目input_folder = '/content/drive/MyDrive/蓮ノ空CD機械学習/Hasu_data_verjpg'
のパスを正しく指定する。

モデル作成.ipynb

上から4個目のコード

変更すべき場所は16行目source_dir = "/content/drive/MyDrive/蓮ノ空CD機械学習/Hasu_data_verjpg"
28行目os.makedirs("%s/HoliHoli" % train_dir)から下すべて
train_dirが学習用フォルダでvalid_dirがテスト(評価)フォルダです
28から31行目までが、学習用フォルダの分類分けで、画像処理した時それが何かを示すためのラベル付けのようなもの

上から5個めのコード

ラベル付けし名前の所を自分のやつに変更

上から9個目のコード

前処理のコードになります。
基本的に変更すべきところは、5,7,10行目
バッチサイズは2の3乗で決めます。値として32がいいらしい

上から15個目のコード

学習モデルの構築コード!
変更すべき所は、4,6,8行目
学習率は根性で見つける
バッチサイズは前処理で指定した数値と同じにしましょう
エポック数は経験から150~200。これは後々でるlossグラフから過学習しているかを判断し、過学習の場合エポック数を下げるといいでしょう

上から16個目のコード

変更すべきは5,6,10行目
Conv2Dの第一引数がフィルターの数で、Denseがユニット数

上から18個目のコード

モデル1(畳み込み層とプーリング層が一回)で指定した数値と同じにする

学習結果の可視化から始まるグラフが出るコード

これは誤差を出すグラフで以下のようにギザギザの振幅がでかいと過学習と言える。0に近似すると誤差が少ないという事なのでいいモデルと言える。
学習結果の可視化

acc(精度)を確認する.から始まるコード

これは精度のグラフで1に近似するほど良いモデル。
振幅が大きい場合は、先ほど紹介した上から9個目のコード以降の数値を変更すると良くなる。

Google Driveに最適なKerasのモデルを保存,「my_janken_best_model.h5」ファイル名の変更が可能から始まるコード

モデルの名前は何でもいいけど拡張子は「h5」にしないとだめです

一番最後のコード

変更すべきところ、28,50,52,54行目
自分のモデル名とラベル名に変更

カメラでテスト.ipynbの使い方

AIモデルファイルを自分のDriveからGoogle Driveからコピーするで始まるコード

3行目の所はモデルのパスをコピーすること

最適モデルは自分が作ったモデルまたはVGG16_model_4の場合,これを実行:で始まるコード

自身のモデル名にすること

最適モデルはEfficientNetモデルより作ったものの場合,これを実行:で始まるコード

自身のモデル名にすること

処理を行うコールバック関数を定義で始まるコード

18行目img_w, img_h = 192, 192は学習モデルと同じサイズにすること
35行目以降
if prelabel == 0: #if,elifの部分は具体的な問題に対して変更 label='HoliHoli' elif prelabel == 1: label='Kabe' elif prelabel == 2: label='Natumeki' elif prelabel == 3: label='lttf'
の所も自身のラベルに変更すること

Webカメラを使うJavascriptのコード(標準コード)で始まるコード

19行目のdisplay_size = 540は自身のPCに合わせて変更するといいでしょう。

実行したらこんな感じ

丸とか×とかは動画編集したものなので普通は出ない。
無題の動画 ‐ Clipchampで作成.gif

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