メインコンテンツへスキップ
見出し画像

Pythonでやってみた(画像処理編1):物体検出(YOLOv3)

    1.概要

     Pythonを使用して物体検出をしてみます。物体検出モデルとしてYOLOv3を使用しました。
    ※2022年1月15日現在:リアルタイム検出がエラーのため未実装ですが静止画はできているためとりあえず投稿

    2.参考資料

     You only look once (YOLO) とはリアルタイムで高精度に物体を検出してくれるAIモデルです。詳細・実演はYOLO開発者:Joseph Redmon氏のTED公演をご確認ください。

     YOLO実装は基本的にサイトをそのまま実行していきます。

    3.環境構築(Windowsユーザー)

     YOLO実装にはLinuxコマンドが必須となるためWindowsユーザーには鬼門となります。YOLO実装のために環境構築をしていきます。

    3-1.WSLのインストール

     Linuxコマンドを使用するためにWSLをインストールします。また使いやすいようにWindows Terminalも合わせて入れておきます(下記参照)。

    3-2.Linuxコマンドの追加

     4章でも説明しますがmake, gcc, g++コマンドを追加します。(ビルドするらしいけどちゃんと理解できていません。)

    [Ubuntu terminal]
    sudo apt install make
    sudo apt install gcc
    sudo apt install g++

     必須ではないけどエラー対応用で下記もインストール

    sudo apt install pkgconfig

    4.YOLOの環境構築

     YOLOを実装してきます。ターミナルは(Windows Terminalを使用して)WSLのUbuntuターミナルを使用していきます。

    画像

    4-1.git cloneでdarknetファイルをインストール

     cdコマンドで作業ディレクトリファイルを保存するフォルダに移動して下記を実行します。

    [Ubuntu terminal]
    git clone https://github.com/pjreddie/darknet
    画像

     完了したら作業ディレクトリに"darknet"フォルダが作成されます。

    画像

    4-2.darknetフォルダをビルド

     4-1.が完了するとdarknetフォルダが作成されます。cdコマンドでdarknetまで移動します。ディレクトリがdarknetであることを確認したら"make"を実行します。Error表記がなければ成功です。

    画像

    【参考:パッケージのエラー対応】
     初めてmakeコマンドを実行したら下記のように「makeコマンドはないけど下記でインストールできるよ」と出ました。"sudo apt install make"としてmakeコマンドを実行すると「別の入れて」となり、結論として3-2.の3つのコマンドをインストールしました。

    画像

    4-3.YOLOの事前学習の重みをDL

     事前に学習されたYOLOの重みをインストールします。

    [Ubuntu terminal]
    wget https://pjreddie.com/media/files/yolov3.weights
    画像

     完了するとdarknetフォルダ内に"yolov3.weights"が作成されます。これで準備は完了です。

    画像

    5.YOLO実行:物体検出

    5-1.画像での物体検出

     まずテスト画像でYOLOを試します。下記コード実行するとdarknet\dataフォルダにあるdog.jpgから物体を検出しdarknetフォルダ内に"predictions.jpg"を作成します。

    [Ubuntu terminal]
    ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
    画像
    画像

     参考までにdataファルダに"konan.JPG"を入れ下記でも実行できました。

    [Ubuntu terminal]
    ./darknet detect cfg/yolov3.cfg yolov3.weights data/konan.JPG
    画像

    5-2.リアルタイム

     エラーでできないので追って・・・・


    参考資料

    あとがき

     静止画まではできたけどリアルタイムじゃないと面白くないので頑張ります。


     
     

    KIYO

     
     
    普段は製造業で企画/開発/設計しております。記事はプログラミング・機械学習、IoT関係の記事をメインで作成し、なるべく1つの記事で知りたいことを網羅していきます。内容は学術的より実装・アウトプット(ほしくなるもの)を重視して作成しています。 面白そうな仕事があればやりたいです!

    あなたへのおすすめ