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

More than 3 years have passed since last update.

darknet_rosにおける物体認識のfps値を向上させよう!

Last updated at Posted at 2021-05-17

本記事の目的

前回Jetson nanoを用いて物体検出を行いましたが、その際のfps値が8~10程度だったので今回はとにかくfps値を上げる方法について模索します。

パフォーマンスの最大化

 以下コマンドでパフォーマンスモードを変更できます。-mの後の数字が0のときが最大(Maxモード)で1が最小(5Wモード)です。

$ sudo nvpmodel -m 0
$ sudo jetson_clocks

画像サイズの変更

darknet_ros.launchを見てみましょう。

<?xml version="1.0" encoding="utf-8"?>

<launch>
  <!-- Console launch prefix -->
  <arg name="launch_prefix" default=""/>
  <arg name="image" default="/camera/rgb/image_raw" />

  <!-- Config and weights folder. -->
  <arg name="yolo_weights_path"          default="$(find darknet_ros)/yolo_network_config/weights"/>
  <arg name="yolo_config_path"           default="$(find darknet_ros)/yolo_network_config/cfg"/>

  <!-- ROS and network parameter files -->
  <arg name="ros_param_file"             default="$(find darknet_ros)/config/ros.yaml"/>
  <arg name="network_param_file"         default="$(find darknet_ros)/config/yolov2-tiny.yaml"/>

  <!-- Load parameters -->
  <rosparam command="load" ns="darknet_ros" file="$(arg ros_param_file)"/>
  <rosparam command="load" ns="darknet_ros" file="$(arg network_param_file)"/>

  <!-- Start darknet and ros wrapper -->
  <node pkg="darknet_ros" type="darknet_ros" name="darknet_ros" output="screen" launch-prefix="$(arg launch_prefix)">
    <param name="weights_path"          value="$(arg yolo_weights_path)" />
    <param name="config_path"           value="$(arg yolo_config_path)" />
    <remap from="camera/rgb/image_raw"  to="$(arg image)" />
  </node>

 <!--<node name="republish" type="republish" pkg="image_transport" output="screen" 	args="compressed in:=/front_camera/image_raw raw out:=/camera/image_raw" /> -->
</launch>

この内、yolov2-tiny.yamlのyolov2-tiny.cfgで画像サイズを調整することが出来ます。
デフォルトでは以下のような値になっていました。

68747470733a2f2f757365722d696d616765732e67697468756275736572636f6e74656e742e636f6d2f35323330373433322f3131383530303435382d63326565333038302d623736322d313165622d393536342d3964393062353

この際、fps値は8~10程度でした。
そこで以下のサイトを参考にwidthとheigthを288まで下げました。

width  = 288
height = 288

結果としてfps値は12~18程度と向上しましたが、認識精度が劣化しました。

68747470733a2f2f757365722d696d616765732e67697468756275736572636f6e74656e742e636f6d2f35323330373433322f3131383530313736342d30373265303038302d623736342d313165622d393830632d6436616131623064343836322e706e67

次に144まで下げてみました。

width  = 144
height = 144

結果としてfps値は25~35程度まで向上しましたが、認識する対象物の数が減少しました。

68747470733a2f2f757365722d696d616765732e67697468756275736572636f6e74656e742e636f6d2f35323330373433322f3131363537353038372d34616631636630302d613934392d313165622d396134332d6263636130346463376439622e706e67

最後に32まで引き下げてみました。

width  = 32
height = 32

結果としてfps値は30~40程度まで向上しましたが、捉える画像サイズが小さすぎて何も検出しなくなりました・・・(笑)

認識精度の高いネットワークの利用

YOLOには認識精度の高い通常モデルと、認識精度が若干劣る代わりに高速に動作するtinyモデルがあります。以下の記事によると通常モデルのYOLOの認識精度は55.3、tinyモデルの認識精度は33.1で、演算量はそれぞれ、65.86 Bn、5.56 Bnになるそうです。そこで通常のyolov3をwidth=288,heigth=288の画像サイズで試しました。

<arg name="network_param_file"         default="$(find darknet_ros)/config/yolov3.yaml"/>

結果として認識精度は向上しましたが、fps値が2.5程度まで低下しました。

まとめ

  • fps値を向上させる方法について調査しました
  • ネットワークが単純なtinyモデルを使用すればある程度fps値を上げて認識する事が出来ましたが、精度はかなり低く出ました
  • ネットワークが複雑な通常のモデルを使用したことで認識精度は向上しましたが、fps値がかなり低下しました

参考文献

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