カテゴリー: YOLO

  • 物体認識を使った新しい行動解析ツール”YORU”とは一体なんなのか

    物体認識を使った新しい行動解析ツール”YORU”とは一体なんなのか

    2024年11月にbioRxivにこれまでの行動解析ツールとは異なる手法を使ったYORUという行動解析ツールについて発表されました。
    今回はそのツールについてどのようなツールなのかを解説していきたいと思います。

    YORUのプレプリント

    YORUのドキュメント

    YORUとは

    YORUとは深層学習を使った動物の行動解析ツールです。

    YORUのサイトより引用


    これまでもDeepLabCutSLEAPといった深層学習を使ったツールは多く公開されています。
    これらのツールは深層学習と用いて動物の体の部位をトラッキング、そして姿勢推定を行うツールです。(ここではトラッキングツールと呼びます。)

    姿勢を推定することによって、動物がどのような姿勢をしているのかを明らかにし、行動解析を行います。

    これに対して、YORUは物体認識というアルゴリズムを用いて行動を認識します。
    簡潔には、身体部位のトラッキング等は行わず、動物の行動している様子から行動を直接定義します。

    人がりんごやみかんを見分けるときに、形や色といったことを情報に見分けていると思います。
    物体認識では物体を分類することに長けているため、こういった見た目によるものの見分けを行います。

    これを動物の行動解析に用いることで、動物の行動をその見た目から分類します。
    YORUのツール内では、これを行動オブジェクト(Behavior object)と呼んでいます。

    トラッキングツールでは行動は点と線で認識され、YORUでは行動をボックスで囲われるように解析されます。

    物体認識による行動定義のメリット

    物体認識による行動のメリットとしては

    ・個体数が増えてもエラーが出にくい

    ・動物の向きに影響されにくい

    ・解析速度が速い

    ・トラッキングでは捉えにくい行動(マウスがうずくまるといったような行動)を捉えられる

    といったことが考えられます。

    トラッキングツールの弱点である、複数個体の行動解析を簡単に、かつ解析コストをかなり抑えて解析することが可能です。
    さらに、身体部位の位置情報による行動定義が困難な行動も簡単に解析可能です。

    例えば、手をあける、閉じるという行動を考えてみましょう。
    トラッキングツールであればカメラで指先をトラッキングして閉じている、開いているを定義すると思いますが、手を閉じたときに指先が見えなくなると、トラッキングできず、位置情報を正確に計算できなくなります。

    しかし、物体認識であれば手がひらいた状態と閉じた状態の手の形を見ているので、一部が見えなくなっても正確に捉えることが可能です。

    個体数増加に強いという理由に関しても、トラッキングツールであれば個体数が増えると、身体部位がどの個体なのかを割り振って、正確に各個体の行動をとらえなければなりませんが、YORUであれば各個体の形状のみで解析するため、個体の識別や各個体への割り振りを行う必要がありません。

    解析速度も速いため、リアルタイム解析が可能であり、ある行動をしたときに装置制御を行うといったことも可能であり、行動実験の自動化を行うことができます。

    物体認識による行動定義のデメリット

    もちろんデメリットもあり、

    ・一連の行動は捉えることができない

    ・個体識別は行えない

    ・未知の行動を捉えることはできない

    ・見た目でわかりにくい行動は捉えられない

    ・定義した行動の詳細がわからない

    といったことがあります。
    これらのデメリットは逆にトラッキングツールの強みとしても挙げられるところであり、どちらが優れているというよりは、メリット・デメリットをお互いに補完し合っているような感じです。

    そのため、実験者は状況に応じた適切な手法を選ぶ必要があります。

    YORUは何がすごいのか

    さて、YORUの根本に使われている物体認識による行動解析のメリット・デメリットを述べましたが、YORUは一体何がすごいのでしょうか。

    全てGUI化されている

    YORUではプログラミングを行うことなく、行動解析を行うことが可能です。

    これはDeepLabCutやSLEAPなどのツールも同様であり、生物学者にとってこれらの解析を使うための一助となります。

    デザイン


    YORUのデザインはこれまでのツールと違い、かなり研究ツールっぽくはない感じがします。

    リアルタイム解析を導入している

    YORUではこれまでのツールでは珍しく、リアルタイム解析のGUIが完備されています。

    リアルタイム解析のシステムを作るのはプログラミングがある程度できればそこまで問題ではありませんが、そうでないとかなりハードルが高いです。

    ただ、YORUでは全てプログラミングなしで、リアルタイム解析、さらには外部トリガーまでを行うことが可能になっています。

    多様な実験装置に適応可能である点

    リアルタイム解析の最も高いハードルとして、自身の実験系の装置を動かすコードとこれらの解析をどのように組み合わせるのかというのがあります。

    YORUではプラグインシステムを導入しており、外部装置を制御するプログラムを選ぶことができます。

    つまり、自身のシステムにあったプラグインを選択すれば良いのです。

    また、プラグインは自作することも可能であり、自身の装置の制御プログラムをプラグインにすることで簡単にYORUのリアルタイム解析と合致させることができます。

    これは他のツールにはない、かなり使いやすいシステムとなっています。

    最後に

    YORUは発表されたてで、まだまだ使いにくい点・ドキュメントの不足が目立ちます。

    しかし、これからこれらが整備されていくことによって、どのように使われていくのか非常に楽しみです。

  • [2022年12月更新]YOLOXのインストール方法

    [2022年12月更新]YOLOXのインストール方法

    YOLOXとは

    YOLOシリーズがたくさん出ている中、2021年7月に最新のYOLOXが出ました。

    YOLOXに関する論文はこちら (現在プレプリントです。)
    また、GitHubはこちら

    YOLOは物体認識のアルゴリズムです。
    リアルタイムに動かすことを前提としており、非常に動作が軽量であり(認識だけならスマホでも動かすことができます)、システムの応用性もあり、IoT装置にも多く取り入れられています。

    物体認識アルゴリズムと聞くと少し難しそうですが、簡単に想像できるのは、カメラの顔や目の自動フォーカスです。
    ここが顔ですよと視覚が現れると思いますが、それが他の物体でも適応され、そしてそれぞれが何なのかを分類することができます。

    YOLOはたくさんのシリーズがあり、YOLO, YOLOv2, YOLOv3, YOLOv4, YOLOv5, YOLOXと出てきています。
    また、動作環境もPythonだけでなく、MATLABでも使うことができるなど、自分の使っているプラットフォームに適応させることができます。

    YOLOXはYOLOv3からのシステムとは異なり、YOLO(最初に出版された方法)でのシステムとなっており、動作も早く、また正確性もかなり向上しているとのことです。

    詳しくは他のブログサイトでも書かれています。

    YOLOXのインストール方法

    GitHubのサイトにもインストール方法が記載されていますが、英語なのと、仮想環境を使った方法では書かれていないので、今回はAnacondaで仮想環境を使って行う方法です。

    WindowsとMacの両方で、YOLOXのマニュアル通りにインストールするとエラーが連発しました。
    今後もバージョンによって、エラーが変わってきたりするので、その都度調べてください。

    macのターミナルでcondaコマンドを使う方法は以下から

    WindowsではAnaconda Promptを使うと良いかと思います。

    ターミナル(Anaconda Prompt)を開き、文字が並んでいる黒いウィンドウができます。
    最終行の左に(base)となっているかと思います。
    現在、仮想環境には入っていない状態です。

    仮想環境なしでもYOLOXは動作できますが、他のパッケージとの環境が交差してしまうので、仮想環境を作ることをお勧めします。

    まず以下のコードを入力し、仮想環境を作成します。

    conda create -n YoloX python=3.8

    YoloXは仮想環境名で、これでなくても大丈夫です。
    また、pythonのバージョンはpython=3.8で指定できます。

    その後以下のコードで仮想環境に入ります。

    conda activate YoloX

    これで、左の(base)が(YoloX)になっていたら成功です。

    CUDAのインストール

    まず、機械学習のライブラリを初めてインストールする方で、YOLOの学習をGPUで行うおうとする方はCUDAをインストールしましょう。
    (CPUでの学習はありえないほど時間がかかるのでおすすめしません。ただ、Apple Silicon搭載のPCではGPUを使うことは現在できません。)
    CUDAは公式サイトからダウンロードできます。

    CUDAのバージョンは、PyTorchで対応しているCUDAのバージョンを確認してから、そのバージョンをインストールするといいと思います。
    PyTorchの公式サイト

    過去のバージョンをインストールするには、Download nowを押した後の画面で、下の方のResourcesのArchive of Previous CUDA Releasesでインストールすることができます。

    最新バージョンでもできるかもしれませんが、取り合えず、PyTorchに合わせておけば問題なく動かすことができると思います。

    インストールされているかはwindowsで、「システム環境変数の編集」を開き、詳細設定>環境変数と開き、
    CUDA_PATHからはじまるパスがあるか確認しましょう。
    Vの後の数字がバージョンを示しています。

    PyTorchのインストール

    まず、インストールする前に、pipの更新をしておきましょう。
    Anaconda Promptで仮想環境に入り、以下のコマンドを実行します。

    python -m pip install --upgrade pip

    PyTorchの公式サイトに行き、自分の環境に合ったインストール方法を選びましょう。
    しかし、ここで問題となるのが、Packageの欄で、ここではpipを選択しましょう
    condaでインストールするとその後でエラーが出てしまいます。

    Run this Commandのコマンドをコピペして、仮想環境にインストールします。

    インストールが終わったら、以下のコマンドでPyTorchがインストールされているか確認しましょう。

    pip list

    この中に、torchが入っていればOKです!!!
    一応動作確認として、pythonを起動し、以下のコマンドを実行してみましょう。

    import torch
    print(torch.cuda.is_available())

    出力でTrueと出れば問題なくインストールできており、torchをGPUで動かす準備が整ったということになります。
    (Macに導入する際やGPUがないパソコンには、Folseと出てきますが、imortが出てきたら大丈夫です)
    エラーが出たらもう一度、インストールを見直してみましょう。

    YOLOXに関わるパッケージのinnsuto-ru

    GitHubからYOLOXの諸々のファイルをダウンロード(クローン)します。
    Gitコマンドが使える人は、以下のコードでクローンできます。

    git clone git@github.com:Megvii-BaseDetection/YOLOX.git

    その後、クローンしたフォルダにアクセスし、必要なパッケージをインストールします。

    まず、クローンしたYOLOXのフォルダにある、requirements.txtの中身を以下のように書き換えます。

    # TODO: Update with exact module version
    numpy
    #torch>=1.7
    opencv_python
    loguru
    tqdm
    #torchvision
    thop
    ninja
    tabulate
    
    # verified versions
    # pycocotools corresponds to https://github.com/ppwwyyxx/cocoapi
    #pycocotools>=2.0.2
    #onnx==1.8.1
    onnxruntime==1.8.0
    onnx-simplifier==0.3.5

    どうやら、pycocotoolsなどはこのコマンドで入れることができないようです。

    これが終わったら、requirements.txtを保存して、下のコマンドをターミナル(Anaconda prompt)で実行します。

    cd YOLOX
    pip3 install -r requirements.txt
    pip3 install cython pycocotools

    ダウンロードしたYOLOXのフォルダには”requirements.txt”というファイルがあり、ここに必要なパッケージが入っているので、これを読み取り専用で開き、記載されているパッケージをインストールするコマンドが二つ目のコマンドです。

    pip3 install cython pycocotools

    このコマンドによって、cythonとpycocotoolsをインストールすることができます。
    どうやらこれらは別途インストールする必要があるようです。

    このコマンドを実行すると、以下のエラーが出る人もいるかと思います。

          building 'pycocotools._mask' extension
          error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/

    Microsoft C++ Build Toolsがpycocotoolsには必要だそうです。(Mac版がないのに、Macでもエラーが出る。)
    WIndowsの人は一応インストールしておくと良いでしょう。

    これをインストールし、さらに以下のコードで再度インストールを試みてください。

    pip3 install "git+https://github.com/philferriere/cocoapi.git#egg=pycocotools&subdirectory=PythonAPI"

    それでもうまくいかない場合には、以下のコマンドで入れましょう。

    conda install -c conda-forge pycocotools

    基本的には今回のパッケージ等はpipでインストールしていますが、こればっかりはインストールできないので、condaでインストールするという最終手段を使います。

    次に、yolox_x.pthをダウンロードします。
    リンクを押すとすぐにダウンロードが始まります。

    ダウンロードしたファイルをgithubからクローンしたYOLOXのフォルダに入れましょう。
    これでデモの認識に使うモデルをダウンロードし、任意の場所に置くことができます。

    tools/demo.pyの上部に下記をプログラムに追記し、yoloxフォルダへアクセスできるようにします。

    #demo.pyの中身に書き込みましょう。
    import sys
    import os
    sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

    これを行わないと、yoloxのパッケージがありませんというエラーが出されます。

    その後、ターミナルで以下のコマンドを実行しましょう。
    これで、デモ動作ができているかどうかを確認することができます。

    python tools/demo.py image -n yolox-x -c yolox_x.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu 
    #gpuで動かさない場合には、gpuをcpuに書き換えてください。

    –device gpu は 状況に応じて –device cpuに書き換えてください。

    これで、YOLOX/YOLOX_outputs/yolox_x/vis_res/20……..の中に以下の画像が入っていればよいです。

    おまけ

    パソコンどれを使えばいいのかわからない方へ、パソコン購入相談をココナラでやることにしました!

    あなたの要望に合わせてパソコンを選び、提案します パソコン選びに困っている方々へ!様々な目的に対応できます!

    パソコンを選んだり、アドバイスすることが多く多くの友人からパソコンの相談やったら儲かるのにと言われました。
    それに感化されて一旦やってみようと思いました!

    パソコンの利用目的に合わせて、そしてパソコンの予算に合わせて購入をご提案します。
    特に機械学習に用いるパソコンを多く選び、使ってきています。

    そして、希望があればパソコンを今後買う時にどこに注目すると良いかもアドバイスしていきたいと思います。

    今まで選んだことあるパソコンとして、研究室の解析用パソコン、実用パソコン、ゲーム配信用パソコン、大学の新入生用のパソコン、建築学科用のCADが使えるパソコン、とりあえずのパソコンなど。

    MacとWindowsの両方使っているので、どちらのお話、ご提案もできます!

    ぜひ利用してみてください

  • 【2022年12月更新】YOLOv5のインストール方法[物体認識ツール]

    【2022年12月更新】YOLOv5のインストール方法[物体認識ツール]

    YOLOv5とは

    YOLOは物体検出を行うアルゴリズムです。YOLOはYou Look Only Onseの頭文字をとっています。
    物体のトラッキングとはまた少し違い、オブジェクトと、それがなんなのかを検出することができます。

    YOLOのHPより引用(https://pjreddie.com/darknet/yolo/)

    自動運転などでは、人なのか、ペットなのか、車なのかといった、人間がものを判断するように物体を検出、分類します。

    分類するアルゴリズムは複雑なので、ここでは説明は省きますが、調べてみると非常に多くのサイトで解説されています。

    現在YOLOは大体隔年ぐらいのペースで新しいバージョンが出ており、今ではYOLO v1~YOLOv5、そして、2021年8月に新しいバージョンであるYOLO Xが公表されました。
    バージョンによって何が違うのかは、細かい部分で大きな変更がありますが、基本的には新しくなるにつれて精度がよくなっていきます。

    今回は十分な精度かつ、現在かなり情報が多くなり、導入しやすくなったYOLO v5のインストールと動作確認までのステップを紹介していきたいと思います。

    インストール環境

    OS : Windows 10 (macOS Montereyでもできました)
    Python : 3.9.7 (3.6以降)
    CUDA : 11.3

    インストール方法

    仮想環境の作成

    Anacondaを用いて、仮想環境を作成します。
    Anacondaをインストールしていない人は、インストールしましょう。

    YOLOv5をインストールする際にはかなり多くのパッケージがあるので、仮想環境でインストールをお勧めします。
    仮想環境の名前はなんでもいいのですが、今回は”Yolov5_env”とします。
    anaconda promptで以下のコマンドを入力します。

    conda create -n Yolov5_env python=3.9

    これで仮想環境が作成されるはずです。
    仮想環境に以下のコマンドで入ります。

    conda activate Yolov5_env

    CUDAのインストール

    まず、機械学習のライブラリを初めてインストールする方で、YOLOの学習をGPUで行うおうとする方はCUDAをインストールしましょう。(CPUでの学習はありえないほど時間がかかるのでおすすめしません)
    CUDAは公式サイトからダウンロードできます。

    CUDAのバージョンは、PyTorchで対応しているCUDAのバージョンを確認してから、そのバージョンをインストールするといいと思います。
    PyTorchの公式サイト

    過去のバージョンをインストールするには、Download nowを押した後の画面で、下の方のResourcesのArchive of Previous CUDA Releasesでインストールすることができます。

    最新バージョンでもできるかもしれませんが、取り合えず、PyTorchに合わせておけば問題なく動かすことができると思います。

    インストールされているかはwindowsで、「システム環境変数の編集」を開き、詳細設定>環境変数と開き、
    CUDA_PATHからはじまるパスがあるか確認しましょう。
    Vの後の数字がバージョンを示しています。

    PyTorchのインストール

    まず、インストールする前に、pipの更新をしておきましょう。
    Anaconda Promptで仮想環境に入り、以下のコマンドを実行します。

    python -m pip install --upgrade pip

    PyTorchの公式サイトに行き、自分の環境に合ったインストール方法を選びましょう。
    しかし、ここで問題となるのが、Packageの欄で、ここではpipを選択しましょう
    condaでインストールするとその後でエラーが出てしまいます。

    Run this Commandのコマンドをコピペして、仮想環境にインストールします。

    インストールが終わったら、以下のコマンドでPyTorchがインストールされているか確認しましょう。

    pip list

    この中に、torchが入っていればOKです!!!
    一応動作確認として、pythonを起動し、以下のコマンドを実行してみましょう。

    import torch
    print(torch.cuda.is_available())

    出力でTrueと出れば問題なくインストールできており、torchをGPUで動かす準備が整ったということになります。
    (Macに導入する際やGPUがないパソコンには、Folseと出てきますが、imortが出てきたら大丈夫です)
    エラーが出たらもう一度、インストールを見直してみましょう。

    YOLOv5のインストール

    GitHubからYOLOv5のファイルをダウンロード(クローン)します。

    git clone https://github.com/ultralytics/yolov5

    gitコマンドが使えない方は、gitをインストールするか、YOLOv5のGitHubからファイルをダウンロードします。

    次に、以下のコマンドをAnaconda promptの仮想環境で実行します。

    cd yolov5
    pip install -r requirements.txt

    最初のコマンドは、GitHubでダウンロードしたyolov5のフォルダに移動するコマンドで、gitコマンドでインストールした人はこれで大丈夫ですが、直接サイトからダウンロードしたかたはそのディレクトリに頑張って移動しましょう。

    ダウンロードしたyolov5のフォルダには”requirements.txt”というファイルがあり、ここに必要なパッケージが入っているので、これを読み取り専用で開き、記載されているパッケージをインストールするコマンドが二つ目のコマンドです。

    インストールが終了したらどんなパッケージがインストールされたか確認しましょう。

    pip list 

    かなり多くのパッケージがインストールされたと思います。
    一旦これでYOLOv5のインストールは完了です。

    動作

    動作確認として、元々yolov5のフォルダに入っているデータで確かめてみましょう。
    Anaconda promptで仮想環境に入り、cdコマンドでyolov5のフォルダに移動します。

    そして、以下のコマンドを実行します。

    python detect.py --source ./data/images/ --weights yolov5s.pt --conf 0.4

    detect.pyがyoloを使って、物体認識するプログラムです。
    sourceで物体認識してほしい素材があるフォルダのパスを指定します。
    今回はyolov5に入っているimagesの画像を用いました。

    weightsでどのモデルを使用するかを選択します。
    今回はyolov5.ptを用います。

    confではどれぐらいの尤度(Likelihood)で物体を認識するかを示します。
    これに関しては、機械学習を勉強する際によく出てくる言葉です。
    わからなければこのままで問題ないと思います。

    実行すると、yolov5のフォルダのruns\detect\expに認識された画像が入っていると思います。
    このようにしてYOLOv5では物体認識が行われます。

    直面したエラー

    ModuleNotFoundError: No module named ‘torch’

    Yoloを動かそうとしたときにこのようなエラーが出ることがあります。
    これはPyTorchが利用できていない、モジュールが見つからないというようなエラーです。

    このエラーが出た際には、まず仮想環境でtorchがインストールされているかどうか確認しましょう。

    pip list

    ここにtorchがなければPyTorchをインストールしましょう。
    あるけれどうまくいかない、よくわからないというときは、pythonを起動し、PyTorchをインポート、利用できているかみましょう。

    import torch
    torch.cuda.is_acailable()

    利用できる際には、Trueと返され、うまくいかないときは、上記のエラーが表示されるかと思います。

    エラーの原因として考えられる一つとして、PyTorchをcondaコマンドでインストールしているという可能性があります。
    PyTorchはcondaコマンドでインストールしているけど、他のパッケージはpipコマンドでインストールしていると上記のエラーが出てしまうことがあります。

    その際には、condaコマンドでtorchをアンインストールし、pipコマンドでインストールしなおしましょう。

    モジュールが見つからない問題は、インストールする際のコマンドがpipなのか、condaなのかごっちゃになっている可能性があります。
    今回はpipで統一していますが、常にどのコマンドでインストールしているか気にするといいでしょう。

    リンク集

    Anaconda
    CUDA
    PyTorch
    YOLOv5 GitHub
    YOLOホームページ

    おまけ

    パソコンどれを使えばいいのかわからない方へ、パソコン購入相談をココナラでやることにしました!

    あなたの要望に合わせてパソコンを選び、提案します パソコン選びに困っている方々へ!様々な目的に対応できます!

    パソコンを選んだり、アドバイスすることが多く多くの友人からパソコンの相談やったら儲かるのにと言われました。
    それに感化されて一旦やってみようと思いました!

    パソコンの利用目的に合わせて、そしてパソコンの予算に合わせて購入をご提案します。
    特に機械学習に用いるパソコンを多く選び、使ってきています。

    そして、希望があればパソコンを今後買う時にどこに注目すると良いかもアドバイスしていきたいと思います。

    今まで選んだことあるパソコンとして、研究室の解析用パソコン、実用パソコン、ゲーム配信用パソコン、大学の新入生用のパソコン、建築学科用のCADが使えるパソコン、とりあえずのパソコンなど。

    MacとWindowsの両方使っているので、どちらのお話、ご提案もできます!

    ぜひ利用してみてください!