第1章 fpgaでビデオ入力画像から人物を判定 人物検出!リアル … · 10...

1
第 1 章 人物検出!リアルタイム画像処理 システムの実装 10 今回取り上げる大テーマ「人物検出」に絞ってみても, OpenCVに はHOG(Histograms of Oriented Gradients, 詳細後述)+SVM(Support Vector Machine)による人 物検出ライブラリが用意されており,非常に簡単に入 力画像から人物検出が行えます.筆者が作成した OpenCV による人物検出プログラムをリスト 1 に,その 動作結果を図1 に示します. これを FPGA に落とし込めれば… 本誌特設記事でも紹介されていますが,C 言語高位 合成ツールが無償で使えるようになったので, リスト1 のソースを高位合成すれば,すぐにでも FPGA で人物検出ができそうですが,ことはそう簡単 ではありません.リスト1 の裏では,OpenCV環境で 用意されている膨大な関数やライブラリが動いている わけで,それらをすべてFPGA上に持って行かなけ れば動きません. 動画対応に… またリスト1 は,1枚の静止画にしか対応していま せん.もちろん動画をフレームごとに静止画にし,高 人物検出? OpenCV なら簡単でしょ! 最近は画像処理というと,OpenCV で環境を整える ことが多いのではないでしょうか.OpenCVを使え ば,さまざまな画像処理プログラムが簡単に記述でき るからです. (a)入力画像 (b)結果画像 図 1 PC 上の OpenCV で“サクッ”と動作確認…これを FPGA でやる リスト 1 OpenCV による人物検出プログラム cv::Mat img = cv::imread(" 入力画像ファイル名"); cv::HOGDescriptor hog; hog.setSVMDetector(cv::HOGDescriptor::getDefau ltPeopleDetector()); std::vector<cv::Rect> found; // パラメータ設定 hog.detectMultiScale(img, found, 0, cv::Size(8,8), cv::Size(16,16), 1.05, 2); // 検出結果の矩形を画像に書き込む std::vector<cv::Rect>::const_iterator it = found.begin(); for(; it!=found.end(); ++it) { cv::Rect r = *it; cv::rectangle(img, r.tl(), r.br(), cv::Scalar(0,255,0), 3); } 特集 入力画像から人物を検出! 1 PC上で人物画像を機械学習させた結果を使い FPGAでビデオ入力画像から人物を判定 人物検出!リアルタイム画像処理 システムの実装 石原 ひでみ Hidemi Ishihara 本章では,FPGA評価ボード ZYBOに接続したカメラで撮影した動画像を元に,リアルタイムで人物検出する 画像処理システムの開発事例について解説します.人物検出のアルゴリズムから,回路規模を抑えるための試行 錯誤についても解説します.本システムは,開発期間短縮のために使用した Vivado HLS による高位合成と,制御 タイミングを細かく把握できる RTL の混在設計で開発しています.

Upload: phamxuyen

Post on 01-Apr-2019

226 views

Category:

Documents


0 download

TRANSCRIPT

第1章 人物検出!リアルタイム画像処理 システムの実装10

 今回取り上げる大テーマ「人物検出」に絞ってみても,OpenCVに はHOG(Histograms of Oriented Gradients,詳細後述)+SVM(Support Vector Machine)による人物検出ライブラリが用意されており,非常に簡単に入力画像から人物検出が行えます.筆者が作成したOpenCVによる人物検出プログラムをリスト1に,その動作結果を図1に示します.● これをFPGAに落とし込めれば… 本誌特設記事でも紹介されていますが,C言語高位合 成 ツ ー ル が 無 償 で 使 え る よ う に な っ た の で,リスト1のソースを高位合成すれば,すぐにでもFPGAで人物検出ができそうですが,ことはそう簡単ではありません.リスト1の裏では,OpenCV環境で用意されている膨大な関数やライブラリが動いているわけで,それらをすべてFPGA上に持って行かなければ動きません.● 動画対応に… またリスト1は,1枚の静止画にしか対応していません.もちろん動画をフレームごとに静止画にし,高

● 人物検出? OpenCVなら簡単でしょ! 最近は画像処理というと,OpenCVで環境を整えることが多いのではないでしょうか.OpenCVを使えば,さまざまな画像処理プログラムが簡単に記述できるからです.

(a)入力画像 (b)結果画像

図1 PC上のOpenCVで“サクッ”と動作確認…これをFPGAでやる

リスト1 OpenCVによる人物検出プログラム

cv::Mat img = cv::imread("入力画像ファイル名");cv::HOGDescriptor hog;hog.setSVMDetector(cv::HOGDescriptor::getDefau ltPeopleDetector());std::vector<cv::Rect> found;

// パラメータ設定hog.detectMultiScale(img, found, 0, cv::Size(8,8), cv::Size(16,16), 1.05, 2);

// 検出結果の矩形を画像に書き込むstd::vector<cv::Rect>::const_iterator it = found.begin();for(; it!=found.end(); ++it) { cv::Rect r = *it; cv::rectangle(img, r.tl(), r.br(), cv::Scalar(0,255,0), 3);}

特集 入力画像から人物を検出!

第1章 PC上で人物画像を機械学習させた結果を使い FPGAでビデオ入力画像から人物を判定

人物検出!リアルタイム画像処理 システムの実装

石原 ひでみ Hidemi Ishihara

 本章では,FPGA評価ボードZYBOに接続したカメラで撮影した動画像を元に,リアルタイムで人物検出する画像処理システムの開発事例について解説します.人物検出のアルゴリズムから,回路規模を抑えるための試行錯誤についても解説します.本システムは,開発期間短縮のために使用したVivado HLSによる高位合成と,制御タイミングを細かく把握できるRTLの混在設計で開発しています.