2016年11月13日日曜日

【Python × OpenCV】 歩行者検知でやってること

はじめに


前回の投稿でよく分からず使った歩行者検知について少し調べました。


  1. HOGってなんですか
  2. パラメータ調整の意味わからん

という二つの問題を今回解決していきます。


Histogram of Oriented Gradients (HOG)


MRPGのスライド53ページからの説明が分かりやすかったです。

ざっくりまとめると、

  • 人って大体同じシルエットだよね
  • シルエットはエッジとして検出できるよね → HOGと呼ぼう


これだけだと分かったつもり感溢れてるので、scikit-image使って可視化しました。

(実際に書いたコードはこちら)


左から順に 入力画像、HOG、HOG強調verの3枚です。
シルエットだけ取れてる感ありますね、すばらしい。


服のしわもエッジとして検出されるので、黒っぽい服の方が人として検出されやすいかも?


歩行者検知のパラメータ


以下のサイトにまとめてありました。
HOG detectMultiScale parameters explained

まず、歩行者検知のステップとして

1. 画像のサイズ変えて増やす                         2. HOGゲット                     3. 上から下までスキャン・分類 (SVM)
           

の大きく3つがあり、

  • scale       :  ステップ1の枚数決める
  • winstride  :  ステップ3のスライド窓の大きさ決める

ので、この二つがかなり大事でした。

枚数少なくて窓大きければ高速だけど性能悪い
枚数多くて窓小さければ低速だけど性能良い

というトレードオフです。

ちなみに前回いじった二つのパラメータはあまりいじるべきではないっぽいです(笑)

参考:Image Pyramid, Sliding Windows


おまけ:Non-Maximum-Suppression (NMS)


これは余分な検出をまとめるための処理です。


窓同士のかぶってる割合がthresholdより大きければ消す、というだけのものです。
Pedestrian Detection OpenCVを参考に実装してみました。

左がNMSなしで、右がNMSありです。 (finalThreshold=0の時)


ただ、finalThresholdを1以上に設定すればgroupingされるのでNMSはいらないかもです。

(左がNMSなしで、右がNMSあり :finalThreshold=1)



おわりに


以上、HOGとパラメータについて少し調べたまとめでした。
SVMについてはHOG特徴量とSVMを使った自動車の検出の説明が良い感じでした。
次はDPMかCNNに手を出す所存です、おわり。

2016年10月25日火曜日

【Python × OpenCV】 動画で歩行者検知

リクエストがあったので動画で歩行者検知してみました。

結果

中々良い感じ。

動画ファイル読み込み


動画の処理についてはいつも通りチュートリアルを参考にしました。プログラムの流れは

  1. cv2.VideoCaptureで動画を読み込んで
  2. frame毎に画像表示させる

という簡単な手順です。

ただ私の環境ではVideoCaptureが機能しなかったので、StackOverflowを見たところ、
OpenCVフォルダ内のffmpeg関連の名前変更してpythonフォルダにコピペする必要がありました。

VideoCaptureが動いたら、前回のコードと合わせて「動画で歩行者検知」完成です。


使った動画


問題点

とにかく重いです。
ただでさえ重い歩行者検知に加え、動画を読み込んでいるからだと思います。
なので一般的には、動画をフレーム毎に画像にしたデータ群を使って検証するみたいです。

結果は動画読み込みと同じですが、倍以上早いプログラムがこちらです。

パラメータは前回良かった

  • hit_threshold = 0
  • group_threshold = 5

を使いました。

おわりに


想像以上にこのデフォルト検出器の性能が良かったので、改良意欲が湧いてきました。
とはいえ専門家でもないので、実装しながら色々考えてみるつもりです、おわり。

2016年4月10日日曜日

和田光司さんを偲ぶ記事

2016年4月3日に亡くなられた和田光司さんの曲には多くの場面で助けてもらいました。

2015年から劇場版が始まり、盛り上がっていた矢先での訃報に未だにふわふわしています。

そんな気持ちを落ち着かせるために、超個人的な思い出を交えながら和田さんの曲を振り返っていくだけの記事がこちらです。
超暇な方のみお付き合い頂ければ幸いです。



1. Butter-fly 最終回ver
エンジェモン「きっとまた会える、君が望むなら」

この曲は、デジモンアドベンチャー全50話を観終わるまではただの「良い曲」でした。

最終回、冒険が終わってしまう悲しみの中で流れるpiano ver。
そしてミミの帽子が飛ぶ瞬間に流れるButter-fly。

感動とか、鳥肌とか、そんな表現では表しきれない次元を子供ながらに感じ取った瞬間でした。

アニメ放送後に映画化した「ぼくらのウォーゲーム」で再度聴いた時の、過去50話がフラッシュバックした瞬間も忘れられません。

あらゆる記憶がこのButter-flyと繋がって、今に繋がっている大切な一曲です。


2. Target -赤い衝撃-
僕らはデジヴァイス世代だったのですが、流行に乗り遅れた僕はD3にはまりまくってました(笑)

初代に比べて評価の低い02ですが、デジモンのビジュアルは圧倒的にかっこよくて、それだけで大好きでした。


3. ぼくらのデジタルワールド
02が終わった後にこれを聴いて、和田さんがいて、Aimさんがいて、声優たちが皆いて。

この作品が作り上げた世界、デジタルワールドの広さを認識した一曲。

「ナレーション、タケルだったのかよ!」

と思ったのも良い思い出。


4. The biggest dreamer
カードはとにかく買いました。

周りにデジモンカードやっている人いなくて誰も対戦相手いないのに買ってました。

「big and bigger biggest dreamer」なのか「bigger bigger biggest dreamer」なのか論争が巻き起こりましたが、どう考えても前者ですよね。


5. FIRE!!
ビックリマークは二つです。

ダントツ一番で大好きな曲です。

「法則なんて発明すりゃいいんだろ 自分勝手もたまに必要さ」

僕ら世代は兎角大人たちから批判された世代です。親からも先生からも世間からも、ゆとりがどーだ、最近の若者がどーだ、と制度改革のおもちゃにされ、叩きに叩かれた世代です。

そんな言われても言われたままやるしかない子供の僕らは、大人に対する不信感も強い世代だったと思います。

それをまるで全て分かっているかのようなこの曲にどれだけ救われ、励まされたことか。

この曲をきっかけに勉強のモチベーションを取り戻したことは何度もあります。
進路の選択にもこの曲が寄与する場面は数多くありました。

「叶う 叶うさ 発火点はもうすぐだぜ」
「できる できるさ 爆発してみせるんだ」
「Burn up'n Go !!」

中学受験、大学受験、院受験の全てにおいて僕は希望進路の全てを相談した大人達から否定されましたが、全て自分の信じた通り実現してこれました。

8割方FIRE!!のおかげです。

飛び越える対象がゴミ箱か跳び箱か論争も懐かしい思い出。


6. 勇気を受け継ぐ子供達へ
この曲は大学に入ってからYoutubeで見つけました。

「忘れないでほしい 街を歩く どんな人も together 君と同じように 皆子供だったことを」

「新しい 子供達が もう君の後ろを 歩いている」

大学一年の頃からずっと毎年8月1日に聴いている曲ですが、一昨日からずっと聴いています。


7. 未来への扉
和田さんがいたから、いつもそこに曲が生まれて、それを聴くたびにデジモンを思い出して。

毎年8月1日にはニコニコやお台場でお祭り騒ぎが開催されて。

そのたびに知らなかった和田さんの曲に出会ったりして。

そんな感じで見つけた曲です。


他にもSeven

An endless tale

イノセント


ヒラリ

など、いつも元気をもらえる曲ばかりでした。ありがとうございます。


今年の8月1日は特別な1日になるでしょう。
合掌。




~おまけ~

毎年8月1日に巡る動画も貼っておきます。





2016年3月28日月曜日

【Python × OpenCV】 はじめての歩行者検知

OpenCVインストールから歩行者検知までの概略まとめです。


はじめに



PythonユーザーなのでAnacondaにOpenCVをインストールしました。特に問題なし。

インストール後はチュートリアルを参考にコマンドを覚える作業。
(日本語サイトより公式チュートリアルの方が分かりやすかった。さすが公式。)


歩行者検知

ググッたら二つブログが出てきたので参考にしながら始めました。



Support Vector Machine(SVM)は聞いたことあるけどHOGは知らなかったので調べましたが。。。


”HOG(Histograms of Oriented Gradients)とは局所領域 (セル) の輝度の勾配方向をヒストグラム化したものです。”

”メリットとしては、勾配情報をもとにしているため、異なるサイズの画像を対象とする際も同じサイズにリサイズすることで比較可能になります。”



...分からない(^ ^;)

HOGの勉強はとりあえず後回しにして実装してしまいましょう!!


実装


OpenCVにはHOG+SVMを用いた人検出器が二種類用意されています。


1. cv2.HOGDescriptor_getDefaultPeopleDetector()
名前の通りデフォルトのこいつは、INRIA Person Datasetという64×128画素のデータセットで学習している検出器で、

2. cv2.HOGDescriptor_getDaimlerPeopleDetector()
こっちはDaimler Pedestrian Detection Benchmark Datasetという48×96画素データで学習している検出器。

二つ目の方が「画像内でサイズの小さい人」も検出できるよ、ということらしいです。


以上の情報を基に、デフォルトを使ったサンプルプログラムも用意されていたので、それをいじりながら書いたノートがこちらです。
Documentationそれに関するQ&Aも参考にしました。)

二つの検出器をそれぞれ実装して、パラメータをいじって性能を比べてみました。


実験(パラメータいじり)

OpenCV 2.4.6でHOGを試してみた」曰く、以下の2パラメータを調整すれば性能が変わるらしいですが。。。

  • hit_threshold : 特徴量とSVM分離超平面の間の距離に対する閾値。0が理想。
  • group_threshold : 似た検知を減らすための閾値。0だと全くグルーピングされない。
何を言っているのかさっぱりなので色々といじってみました。
データはCaltechが公開してるデータセットを使いました。


Default

1. hit_threshold=0, group_threshold=0(左), 2(中), 5(右)
確かにgroup_thresholdが0の時は検知したものは全て表示しているって感じですね。
値を上げていくとだんだんまとまって、5の時にはしっかり検出できているっぽくなります。

2. hit_threshold=1(左), 2(中), 3(右), group_threshold=0
hit_thresholdを上げると、一気に誤検知が減っている気がします。
しかし3まで上げてしまうと手前の男性の検知が消えてしまいました。
この理由はまだよく分かりませんが、hit_thresholdの方が感度が高そうということは分かりました。

Daimler

1. hit_threshold=0, group_threshold=0(左), 2(中), 5(右)
Daimlerの方はかなり誤検知が増えました。
group_thresholdを上げても奥の女性の検知はできていませんね。
この辺はもっと検知器に関する勉強が必要そうですね。。。


2. hit_threshold=1(左), 2(中), 3(右), group_threshold=0
ラストはDaimlerでhit_thresholdをいじりましたが、想像より良い感じです。
3まで上げた時はかなり正確に検知できています。
Defaultではhit_thresholdが感度高かった気がしたけれど、Daimlerではhit_thresholdの方がフレキシブルに変えられそうなイメージ。。。


おわりに

まだどちらが良いのかはよく分かりませんでした。とりあえずHOGについて勉強します。
動画でやりました→動画で歩行者検知
HOGとかパラメータについてまとめました→歩行者検知でやってること
Deep Learningも試しました→Windows 7(+GPU)でSSD-Keras動かしてみる



2016年3月26日土曜日

新しいスマホで月々3000円の始め方

(タイトルの3000円というのはもちろん本体価格込みです。)

今回、自分だけでなく家族にも同じプランをすすめて好評なので、まとめておこうと思います。

手順は大きく分けて二つ。診断してもらって買うだけです。


診断

1. SIMチェンジの「おすすめ格安SIM診断」をクリック
SIMチェンジというサイトの一番上にあります。

「SIMってなんだよ?」とか
「なんでそんな安くなるの?不安なんですけど」とか

買う前に事前知識を入れときたい人はこのSIMチェンジのページで色々勉強できます。

安くなれば興味ないわーって人は一番上にある診断をクリックするだけでOKです。


2. 6つの質問に回答
クリックしたら出てくるページで質問に答えます。

これは何百個もある格安プランからどれが一番オススメかを計算するための質問です。

動画はよく見るのか、SNSはよく使うのか、電話は使うのか、といった単純な質問だけです。

新たに契約する場合、最初の質問(契約中の会社)はテキトーでOKです。


3. おすすめプラン、君に決めた!
10個くらいおすすめプランが出てきますけど、こだわりがなければ一番上でいいと思います。

「このSIMプランを購入」をクリックすればそのプランを提供している会社のページに飛びます。


購入

1. 「新規申し込みはこちら」をクリック

ここからは会社によって違いはあると思いますが、例としてDMMさんでいきます。


2. 「端末とセットでお申し込みの方」で新規or乗り換えをクリック
「新しいスマホで」とタイトルに入れたのでもちろん端末とセットで、番号も変えたい人はここで変えられます。

以降は個人情報を入力していけば購入できます。
端末と通信量の選択ではこんな感じで選んでもらえれば、SNS使い放題の月々2653円です。

もっと動画とか観たい
もっと速い通信がいい
という場合でも、後から追加購入できるのでここでこだわる必要はないと思います。
こんな感じで通信量に関しては後々調整できます。
(僕はめんどくさいので一回も買ったことないです。)

以上です。

あとは届いたスマホにカード差し込んだら3000円スマホライフの始まり始まり。

おわりに
このスタイルを始めてもう一年以上経ちますけど、未だに7000-8000円払っている知人が多くて驚愕しています。
単純計算で年間5-6万も得できるので、こだわりがなければ変えた方が良いです。

ラインもfacebookも写真投稿もしまくっていますが不自由を感じたことは一度もないですし (^^)

という胡散臭いけどホントの話でした、おわり。

2016年3月24日木曜日

【スーダンのモリー先生】日本人はなんで結婚しないの?

前回まで


と旅行の記録をつらつらと書いたり、旅のしおりにまとめたりしました。
本稿はそれらとはちょっと異なり、旅先で考えさせられた「とある話」を、備忘のためまとめます。

その前にモリー先生というのは、本や映画にもなった実在の人物のことです。
雑誌のコラムニストとしてバリバリ仕事に打ち込むミッチ(著者)が、かつての恩師であるモリー先生の病状をテレビで知る。先生に会いに行ったミッチは、モリー先生のたわいない質問に答えられないまま帰る。その答えを言いにまた会いに行くと先生からは更に難しい質問をされ、いつしか彼らの議論は毎週火曜に行われるようになる。モリー先生の最後の授業がミッチの人生を導く。

というお話です。
このモリー先生が実にシンプルな、しかし人生において大事な質問をしてくる先生であり、
スーダンでまさに彼に相当する人物と話した時の記録が以下です。
------------------------------------------------------------------------------------------------------------------------------------------------------------------

(スーダン人と日本人が英語でした会話)

ス「君の奥さんは一人だけか?」

日「いや、まだ結婚していないよ」

ス「なんで結婚しないんだ?」

日「結婚にはお金がかかるからお金を貯めないと」

ス「ここまで来るお金はあるのにか?」

日「もっとかかるんだ」

ス「なんでお金がかかるんだ?」

日「結婚式を日本では盛大にやるから準備にお金がかかるんだよ」

ス「そんな盛大な結婚式をやることが目的で結婚するのか?

日「そうではないけど、、、他にも東京では家にお金がかかったり、家具とかなんでも高いんだよ」

ス「なんでだ?今も東京で暮らしているのに?」

日「良い家を買おうと思うと東京では大変なんだよ」

ス「良い家を買うために結婚するのか?

日「。。。」

ス「俺は前に日本人の医者にも結婚について聞いたことがあるが、彼も40なのに結婚していなかった。理由を聞くと次々と説明してくれたが、結婚ってそんなに難しいか?俺にはわからん。君達の言っていることは理解できる、ただ分からない。結婚したければすればいいのに。」

------------------------------------------------------------------------------------------------------------------------------------------------------------------
この結婚については実際のモリー先生とミッチのやり取りにも似たものがあったが、ミッチはひたすら
「仕事が忙しい」
ことばかり口にしていました。

これは日本人がどーの、という話ではなく、先進国全般の問題かなーと思います。

生活に余裕があり楽しみも十分にある現代では「生きる意味」だの「やりがい」だのが重視され、「まだ結婚したくない」という若者が増えている気がします。

それ自体はそんなに悪いことではないと思います。

けれどその結果、結婚や恋愛について考えることを後回しにする人も増えているのではないでしょうか。
ミッチもその一人で、今回スーダン人のおじさんに気付かされた僕もその一人です(笑)


そんな話でした、おわり。

2016年3月14日月曜日

【スーダン東部周遊】ハルツーム

前回投稿のアトバラ-メロウェ-シェンディの続きで、最後は最終日まで滞在したハルツームの記録です。
カッサラ、ポートスーダン、メロウェなど周った後だと首都ハルツームがめちゃくちゃ栄えて感じます(笑)
この日(10日目)はハルツームの南、カラークラに住むエイマット君にカラークラを案内してもらうことになりました。
いきなり案内された白ナイルのほとりがかなりオシャレでびっくり!
しかも何をするかと思えば、木陰でお茶飲みながら川眺めてダラダラするだけ(笑)

灼熱の国スーダンではこれだけでホント幸せになります。。。
川でかすぎてほぼ海辺ですね。
 
アイス食べたりボート乗ったりとにかくダラダラする時間。至福なり。

夕暮れには夕陽がナイル川に沈む瞬間も見れるそうです。
この日は薄い雲が出ていてあまりはっきりは見えなかったです。。。

日が暮れた後はエイマット君の家でチキンライスっぽいものを食べました。
こっちの食事はホントに日本人に合うと思います、超美味しかった。
ごちそうさまでした。

日が変わり11日目はハルツームでテニス

テニス後はオムドゥルマンのスーク(市場)へ。
結構古いものも多くあって知る人ぞ知る骨董品があるハンターハンター的市場ですが、
凝もできない一般人の僕にはよく分かりませんでした(笑)

あまり安くもないし、メロウェ遺跡の入り口で買った方が思い出になるかも??


スークを見た後はスーフィーダンスなるものを観にいきました。
ダンスをしたら神に近づけるらしいです。
正装した人々が輪を作り、その中に踊る人達がいる、という構図です。
誰でも中に入れます。
面白いかっこしたおじさんたちもたくさんいます。
疲れてたので踊りませんでしたが踊っている観光客もいましたね(笑)

この日はこれで終わり。

翌日(11日目)は国立博物館へ。
 
遊戯王みたいな展示がいろいろあります。
復元された寺院とかもあって中々面白い。

国立博物館の後は川原先生という方たちと食事をしましたが、その話はまた別の機会にします。

日が変わりお次は民族博物館へ
 
こっちは無料ですが、個人的には国立博物館より楽しめました
けっこう壮大なセットがちらほら
各民族の特徴とかも書いてあって良かったです。
1時間くらいで回れました。

お次はパレスミュージアムなる場所へ
隣は大統領官邸。
内装はキリスト教っぽかったです。
 
兜かと思いきや中国製らしい。あとアラビックな時計。



そして外に出るとかつて使ってたロールスロイスがずらりっ!!
圧巻でした

博物館巡りの後は白ナイルと青ナイルの合流点へ
左から奥へ流れているのが白ナイルで、右から奥へ流れているのが青ナイル。
ちょうど合流点でおっさんが釣りしてます。
おっさんは決してどきません。
どかないなら一緒に撮ろう、という事で撮っておきました。
 
そんなこんなで満喫したハルツーム観光でした。

これで写真も出し尽くしたので、次回はエイマット父が残した名言について考察でもする予定です。

(旅全体の流れは以下のしおりにまとめました。興味あれば何でも聞いて下さい :) )