分1234お久しぶりです。私事でなかなか執筆の時間がとれず,前回の掲載から長く時間が空いてしまい申し訳ありませんでした。皆さんから寄せられたコメントには非常に励まされました。いうわけで,今回はいよいよ最終回です。前回はオブジェクト検出器を使って顔を検出するところまで行いました。今回は,オリジナルオブジェクト検出器を作成してみます。今回作成するプログラムのソースコードは,こちらから一括してダウンロードすることができます。Data.zip学習の流れと仕組み学習の流れ前回のおさらいになりますが,オブジェクト検出器は機械学習という方法を通して作成されます。コンピュータプログラムに検出したいオブジェクトの画像(正解画像)とそうでない画像(非正解画像)を与えることで,オブジェクトが含まれている画像の傾向というのをコンピュータに覚えさせていきます。学習の流れを簡単にまとめると以下の通りです。正解サンプル画像と非正解サンプル画像を用意するサンプル画像のリストファイルをそれぞれ作成する正解サンプル画像を元に,学習用正解ファイルを生成する学習用正解ファイルと非正解リストファイルを元に,学習を行うここで解説する学習方法の詳細については,インストールディレクトリ下の"apps/HaarTraining/doc/haartraining.htm"を参照して下さい。今回は,画像の中から下図のような技術評論社のロゴを抽出するプログラムを作成します。技術評論社ロゴ学習の仕組み第3回で解説したとおり,OpenCVのオブジェクト検出はAdaBoostで学習させた強識別器を複数連結(カスケード)したものになっています。Cascade検出器の学習は,この1番目の強識別器から順番に進めていきます。各ステージ(強識別器の学習)には,目標とする認識率(正解画像を正解と判断した率)及び許容できる誤認識率(非正解画像を正解と誤って判断した率)があり,それを達成するまで繰り返し矩形特徴(弱識別器)を追加しながらAdaBoostによる学習を行っていきます。全体が目標とする認識率,及び誤認識率を達成した時点で学習は終了です。このように,学習は多くの繰り返し処理を必要とするため,非常に時間がかかります(早くて数時間,長いと数日から数週間⁠)⁠。学習時間は,全学習ステージ数(標準で14⁠)⁠,目標とする認識率,学習データの数などによって左右されますので,必要に応じて調整してください。画像の収集まず,正解画像と非正解画像をそれぞれ収集します。OpenCVのドキュメントによると,学習に用いる上で効率的なサンプル数は,正解画像7000枚,非正解画像3000枚とのことですが,ここでは正解画像4000枚,非正解画像1700枚程度で行います。それだけ大量の画像をどこから集めるかですが,インターネット上には様々な画像素材提供サイトがあるので,そこから探すというのも一つの手です。コンピュータ・ビジョンの研究分野では,実験用に顔画像やオブジェクト画像を提供している研究室がたくさんあるので,そういったデータを利用するのも良いかもしれません。http://www.vision.caltech.edu/Image_Datasets/Caltech256/などがあります。正解画像を集める方法には2通りあります。一つは頑張って例えば自分でデジカメで撮影したり,インターネットから学習画像を集めること。一つは,1枚の画像に対して回転や変形などを加えることで,学習画像を増やす方法です。前者は顔や自動車など,個人差(車種)や表情などで形が変形するものに対して有効な方法で,後者はロゴなど形が一定のものを見つけたい時に適用します。ここでは,後者の方法を用いて技術評論社のロゴを検出するプログラムを作成する予定ですが,前者についても解説します。画像を収集したら,それを記述するリストファイルを作成します。opencv著者プロフィール皆川卓也(みながわたくや)ジェイマジック株式会社のラボに所属する傍ら,慶応義塾大学の博士課程でコンピュータビジョンを研究する社会人ドクター。画像認識とIT技術を融合して新しいソリューションを開発することを生業とする自称テクニカル・ソリューション・アーキテクト。ジェイマジックでは、「顔ちぇき!~誰に似てる?~TM」や「SAYLTM」のシステムの立ち上げに携わる。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。