Skip to content

TeamSOBITS/human_feature_detection

Repository files navigation

JP | EN

Contributors Forks Stargazers Issues

Human Feature Detect

目次
  1. 概要
  2. セットアップ
  3. 実行・操作方法
  4. マイルストーン
  5. 参考文献

概要

画像や点群から人の特徴を推論するパッケージです.
APIなどのネットワークを使用しないため,ネットワークなしで,オフラインの推論が行えます.
画像や点群を入力値として推定結果を返り値とするため,ROSのService通信を用いて特徴を検出します.

(上に戻る)

セットアップ

ここで,本レポジトリのセットアップ方法について説明します.

環境条件

以下に正常動作環境を示します.

System Version
Ubuntu 20.04 (Focal Fossa)
ROS Noetic Ninjemys
Python 3.0~

インストール方法

  1. ROSのsrcフォルダに移動します.
 $ cd ~/catkin_ws/src/
  1. 本レポジトリをcloneします.
 $ git clone https://github.com/TeamSOBITS/human_feature_detection.git
  1. レポジトリの中へ移動します.
 $ cd human_feature_detection
  1. 依存パッケージをインストールします.
 $ bash install.sh
  1. パッケージをコンパイルします.
 $ cd ~/catkin_ws/
 $ catkin_make

(上に戻る)

実行・操作方法

2次元で行える特徴検出(性別と年齢)

  1. なんらかのカメラを起動する
    Topicとしてsensor_msgs/Image型が出ればどのカメラでも構いません.
    例として,PCに付いているカメラを起動させてみる方法を以下に記述する.
    $ roslaunch usb_cam usb_cam-test.launch
    これが上手く行かない場合は,カメラが存在しないPCかubuntu上でカメラが使えないPCの可能性が高いので,USB接続でROS通信ができるカメラを起動する.
  2. human_feature_detection.launchというlaunchファイルを実行します.
    $ roslaunch human_feature_detection human_feature_detection.launch
    これによって,画像から推論を行えるROSのService通信のServerが起動します.
  3. [任意]TopicにPublishされているImageを送ってみる
    exampleコードを準備したのでそれを使っていきます.
    example/sample_2d.pyにある19行目のTopic名を「1.」で起動したカメラのTopic名に変更する.
    そのままでは,「/camera/rgb/image_raw」になっていて,主にxtionなどのカメラのTopic名となっている.
    以下のコマンドを実行すると,3秒のカウントダウンの後に写っていた画像についての推論を行う.(カウントダウンが開始されない場合,カメラが起動していないかTopic名が間違えている可能性があります)
    $ rosrun human_feature_detection sample_2d.py
    ターミナルに,検出した人数と,それぞれの年齢と性別,表情が出力されました.
    ちなみにこの結果を反映させた画像は,result.pngとしてimagesフォルダの中に保存されていますので確認してみてください.

(上に戻る)

3次元で行える特徴検出(身長と服の色)

  1. 点群をPublishすることのできるカメラを起動する
    depthカメラを起動してください.
  2. 点群のTopic名を設定する
    paramとしてhuman_feature_detection.launchファイルの6行目に,「1.」のTopic名に設定します.
    例として,azure kinectの点群名である/points2に設定しています.
  <param name="topic_name" value="/points2"/>

他のパラメータについて

  <param name="target_frame" value="base_footprint"/>  <!-- ロボットの基準フレーム。これによって身長を地面を基準とする頭の高さとできる -->
  <param name="face_range" value="0.20"/>               <!-- 顔の大体の大きさ。服の色を測る際に頭の先からどれだけ下の点群を参照するか -->
  <param name="clothes_range" value="0.35"/>            <!-- 服のおおよその縦幅。服の色を測る際、どれだけ広範囲を参照するか -->
  1. 設定が完了したら,human_feature_detection.launchというlaunchファイルを実行します.
 $ roslaunch human_feature_detection human_feature_detection.launch

これによって,点群から推論を行えるROSのService通信のServerが起動します. 4. [任意]指定した点群をリクエストしてみる
exampleコードを準備したので,それを使っていきます.
3次元での推論をする場合は,カメラの前方1メートルあたりに立ってください.

 $ rosrun human_feature_detection sample_3d.py

ターミナルに,身長と服の色が出力されました.
出力されない場合,「2.」で設定した点群名(topic_name)や基準のフレーム名(target_frame)が間違っている可能性が高いです.

Note

このexampleコードを使えば,ロボットのカメラから得た画像や点群から,データをServiceのServerに送信することで,人の特徴を推定することができます.
exampleフォルダを確認し,それぞれのサンプルファイルからServiceのクライアント(リクエスト側)について学びましょう.

Service Server

  • 2次元画像での推論(年齢と性別)をする場合
/human_feature_detection/features (human_feature_detection/Features)
  • 3次元点群での推論(身長と服の色)をする場合
/human_feature_detection/feature3d (human_feature_detection/Feature3d)

(上に戻る)

マイルストーン

現時点のバッグや新規機能の依頼を確認するためにIssueページ をご覧ください.

参考文献

(上に戻る)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published