ご相談・お問い合わせ
3 分で読むことができます

物体検出の開発経過 その1

執筆者 BI LAB編集室 更新日時 2020年8月04日

こんにちは。
今回は、開発途中のブログ内容となります。2カ月ほど前にPythonOpenCVを使った車の物体検出を開発試行してました。現在、諸事情のため保留中ではありますが、せっかくなので経過を報告したいとおもいます。

目次

 その前にラオスの事を少しだけ紹介します。ラオスの認知度が低いというか、どこにあるのか知らない人が多いので、実は私も行く前までにどこにあるのか知らなかったのですが。。。

1855372 ラオスは東南アジアに位置しASEAN唯一の内陸国です。北は中国、ミャンマー、東はベトナム、西はタイ、南はカンボジアに囲まれています。ASEAN唯一の内陸国で海はありません。タイとの国境沿いにメコン川が流れており、生活の一部となっており、ラオス人にとても親しまれています。主な輸出産業は電力で輸出額の30%も占めます。メコン川を利用した水力発電によって、隣国タイなどに売電をしています。
 そんなラオスも経済成長著しく日本の若者と同じくスマホをもち日本と変わらない光景を目にします。もちろん通話やゲームもしますが、PayPayのような電子決済サービスOnePayというものがあり路上にある屋台とかでも使えます。Uber Eatsのような宅配サービスFood PandaやUberのような配車サービスLocaなど、日本と同じか規制がない場合はビジネス展開されています。個人的には配車サービスよりはトゥクトゥクという乗り物の運転手に行き先や値段を交渉して、ぼったくられていない金額で行く方が楽しいです

 

OnePayFoodPanda

Loca 
 
 
 
 
 
 
 
 
 
 
 
 このように昔ながら考え方、発展途上国=貧しいとはならず一部の地域はでITサービスが充実しており、その国独自の発展仕方があるのではないかと楽しみにしています。
 
 

では、本題へ戻ります。

 今回挑戦したのは、車の物体検出のためにOpenCVを使ったカスケード分類器というものを試みました。巷によくある顔認識を車におき換えたものと思ってだければとおもいます。
おおまかな流れとして機械学習させるための画像集め→機械学習→分類器を作成するという工程です。精度を上げるためどのくらいの写真を読ませるか肝になる感じです。出来た分類器を確認しながら繰り返していきます。

PythonOpenCVのインストール手順は省きますが、使ったPythonバージョンは3.8.3になります。

1.処理の流れ

  1. 5分おきにオフィス前の道路(車)の写真をとる。(Python
  2. 画像の中から取得したい物体画像と不要な画像を振り分ける。(目視)
  3. 取得したい物体画像をX,Y座標をテキストにする(NeoTrainingAssistant
  4. OpenCVを使って分類器を作成する。
  5. 実際に判断させて、問題があれば1から始めて写真を追加する。
     

 

2.画像取得(Python)

 Pythonを使って定期的に画像を取得します。


import cv2
import os
import datetime

 def save_camera(device_num, dir_path, basename, cycle, ext='jpg', delay=1, window_name='frame'):
   cap = cv2.VideoCapture(device_num) 
   if not cap.isOpened():
       return
   os.makedirs(dir_path, exist_ok=True)
   base_path = os.path.join(dir_path, basename)
     n = 0
   while True:
       ret, frame = cap.read()
       cv2.imshow(window_name, frame)
       if cv2.waitKey(delay) & 0xFF == ord('q'):
           break
       if n == cycle:
           n = 0
       cv2.imwrite('{}_{}.{}'.format(base_path, datetime.datetime.now().strftime('%Y%m%d%H%M%S'), ext), frame)
       n += 1
   cv2.destroyWindow(window_name)
save_camera (0, 'data/temp', 'camera_capture_cycle', 250)

<要点説明>

if cv2.waitKey(delay) & 0xFF == ord('q'):はqキーを押すと処理中断
・ファイル名は、年月日時分秒
save_camera (0, 'data/temp', 'camera_capture_cycle', 250)
    このファイルと同じ場所にdataフォルダを作りその配下のtempフォルダに写真が保存されます
    250はだいたいカメラフレームのタイミングのようなので、秒ではないようです。
    各自のPCについているカメラで調整となります。

 

画像がこのような形で、10秒程度ごとに保存されます。

 camera_capture_cycle_20200626124735256853

次回は取得した画像を振り分けと実際の分類器処理までお伝えできればと思います。

BI LAB編集室

執筆者 BI LAB編集室

BI LAB(データ活用研究所)編集室です。 BI、AI、DWHなどデータ活用に関するトレンドやニュースやコラムをほぼ毎日配信しています。押さえておきたい基本知識から、最新ニュース、事例インタビューやお役立ち情報・セミナーレポートまで、データ活用の専門家ならではの視点と情報量でお届けします。

 

こちらの記事もおすすめです

2 分で読むことができます。

Twitterアカウントロック! ~解除までの道のり~

3 分で読むことができます。

ワールドカップを支えるテクノロジーとは?IMUとVAR技術について

2 分で読むことができます。

家計調査の話