2013/07/21

Raspberry Pi の顔認識を高速化したかったけれど・・・

 Raspberry Piで画像認識を試していますが,なかなか処理に時間がかかっています。実用レベルにするためには,もう少しスムーズに動いてほしいものです。
 というわけで,考え付く対策をイロイロ試してみました。ただ結果は残念なことに,ほとんど効果がなかったわけですが・・・。


1.不要なデーモンを停止してみる

画像処理に必要ない(と思われる)デーモンを停止してみました。まずはデーモンを管理できるツールのインストール。

pi@raspberrypi ~ $ sudo apt-get install chkconfig

デーモンの一覧を取得し,必要なさそうなものを停止します。

pi@raspberrypi ~ $ chkconfig --list
alsa-utils                0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
avahi-daemon              0:off  1:off  2:on   3:on   4:on   5:on   6:off
bluetooth                 0:off  1:off  2:on   3:on   4:on   5:on   6:off
bootlogs                  0:off  1:on   2:on   3:on   4:on   5:on   6:off
bootmisc.sh               0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
checkfs.sh                0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
checkroot-bootclean.sh    0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
checkroot.sh              0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
console-setup             0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
cron                      0:off  1:off  2:on   3:on   4:on   5:on   6:off
cups                      0:off  1:off  2:on   3:on   4:on   5:on   6:off
dbus                      0:off  1:off  2:on   3:on   4:on   5:on   6:off
dphys-swapfile            0:off  1:off  2:on   3:on   4:on   5:on   6:off
fake-hwclock              0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
hostname.sh               0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
hwclock.sh                0:off  1:off  2:off  3:off  4:off  5:off  6:off
ifplugd                   0:off  1:off  2:on   3:on   4:on   5:on   6:off
kbd                       0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
keyboard-setup            0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
killprocs                 0:off  1:on   2:off  3:off  4:off  5:off  6:off
kmod                      0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
lightdm                   0:off  1:off  2:off  3:on   4:on   5:on   6:off
motd                      0:off  1:on   2:on   3:on   4:on   5:on   6:off
mountall-bootclean.sh     0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
mountall.sh               0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
mountdevsubfs.sh          0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
mountkernfs.sh            0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
mountnfs-bootclean.sh     0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
mountnfs.sh               0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
mtab.sh                   0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
networking                0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
nfs-common                0:off  1:off  2:off  3:off  4:off  5:off  6:off
ntp                       0:off  1:off  2:on   3:on   4:on   5:on   6:off
plymouth                  0:off  1:off  2:on   3:on   4:on   5:on   6:off
plymouth-log              0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
procps                    0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
rc.local                  0:off  1:off  2:on   3:on   4:on   5:on   6:off
rcS                       0:off  1:off  2:off  3:off  4:off  5:off  6:off
rmnologin                 0:off  1:off  2:on   3:on   4:on   5:on   6:off
rpcbind                   0:off  1:off  2:off  3:off  4:off  5:off  6:off
rsync                     0:off  1:off  2:on   3:on   4:on   5:on   6:off
rsyslog                   0:off  1:off  2:on   3:on   4:on   5:on   6:off
saned                     0:off  1:off  2:on   3:on   4:on   5:on   6:off
sendsigs                  0:off  1:off  2:off  3:off  4:off  5:off  6:off
ssh                       0:off  1:off  2:on   3:on   4:on   5:on   6:off
sudo                      0:off  1:off  2:on   3:on   4:on   5:on   6:off
triggerhappy              0:off  1:off  2:on   3:on   4:on   5:on   6:off
udev                      0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
udev-mtab                 0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
umountfs                  0:off  1:off  2:off  3:off  4:off  5:off  6:off
umountnfs.sh              0:off  1:off  2:off  3:off  4:off  5:off  6:off
umountroot                0:off  1:off  2:off  3:off  4:off  5:off  6:off
urandom                   0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
x11-common                0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on

pi@raspberrypi ~ $ sudo chkconfig triggerhappy off
pi@raspberrypi ~ $ sudo chkconfig alsa-utils off
pi@raspberrypi ~ $ sudo chkconfig motd off
pi@raspberrypi ~ $ sudo chkconfig plymouth off
pi@raspberrypi ~ $ sudo chkconfig ntp off

 ショートカットキーや音に関するデーモンを停めました。他にももっと停止できるかもですが,機能がよくわからないものも多かったので,今回はこのくらいにしておきます。再起動すると,設定が有効になります。その後,顔認識プログラムを実行しましたが,認識にかかる時間は短縮されませんでした。

2.プロセスの優先度を上げる

niceコマンドを使うと,プロセスの優先度を変えることができます。最も高い優先度で顔認識プログラムを実行してみましたが,変化はありませんでした。

3.オーバークロック

もうこうなったら,CPUのクロックごと上げてやります。クロックの設定はraspi-configコマンドで行うことができ,最高1GHzまでオーバークロックできます。しかし,オーバークロックはシステムを不安定にさせ,CPUの寿命を縮めるとのうわさもあるので(真偽は不明ですが),少し低めの950MHzにしました。700MHz→950MHzですから,3割増しくらいの効果は期待できそうです。
 …が,結果は効果なし。そう単純な問題ではないのかもしれません。


 効果がなかった他の原因として,Raspberry PiがLogicool C270の要求スペックを満たしていないことも考えられます。もともとHD画質のWebカメラで,画像サイズを小さくすれば問題ないと思っていましたが,Raspberry Piには負荷が大きいのでしょうか?それにしても,オーバークロックでも変化がないのはおかしいのでは?
 …解決には時間がかかりそうです。

0 件のコメント:

コメントを投稿