不正解画像リストを作るopencv_traincascadeを実行する最後にはじめにかなり前の記事ですが。「近いうちにカスケード分類器を自作してみようと思います。」という後書きを書いていたのを今更ながらに見つけたので、全く近いうちにできてないのですが、昔の自分の思いを受け継いでやってみました。複数の正解画像を利用してカスケード分類器を作成しています。(1枚の画像を水増ししてカスケード分類器を作る場合と少しだけ手順が異なります)環境を整える作業用のフォルダ(以後「cascadefiles」とします)を好きな位置に作り、その中に次の4つのフォルダを作ります。posvecnegcascadeout次にカスケード分類器のトレーニング用の実行ファイルをOpenCVの本体から持ってきます。私の場合はOpenCVの中に求めていた実行ファイルがありませんでした。HomeBrewでOpenCV(4.5.0)をインストールしていたのですが、カスケード分類器のトレーニング用の実行ファイルはOpenCV(3.*.*)をインストールしないといけないようです。いうことで次のコマンドでOpenCV(3.*.*)をインストール。opencv@3終わったらFinderから「/usr/local/Cellar/opencv@3/3.*.*/bin」に移動します。「opencv_createsamples」と「opencv_traincascade」をコピーして最初に作った「cascadefiles」に貼り付けます。画像を用意する「pos」の中に正解画像、「neg」の中に不正解画像を用意します。正解画像リストを作る正解画像は「pos」の中に画像を用意したあと、正解画像がリスト化された次のようなテキストファイル(以後「poslist.txt」)を作成して、これも同じく「pos」の中に入れます。<対象の位置>対象の位置は次の順番になっています。y軸の長さ後ろの2つが座標ではなく長さになっているので注意してください。自分は1本の動画から1フレームずつ取り出してアノテーションをしたのですが、こちらの記事のようなアノテーションプログラムを作りました。よかったら参考にしてみてください。「cascadefiles」で次のコマンドを実行します。<正解画像数>」を追加して実行してください。その他のオプションについては次の通りです。12345>]正解画像数が指定より少ない場合(オプションで指定しない場合1000枚)次のように出力されますが問題ありません。samples「vec」ファイルの中に「posvec.vec」ができていれば完了です。ディレクトリ「pos」の中に「posvec.vec」が生成される不正解画像リストを作る不正解画像の方は比較的何でも良いようなので、ネットからダウンロードするなりして「neg」に入れてください。続いて不正解画像ファイルのパス(「cascadefiles」からみた相対パス)がリスト化された次のようなテキストファイル(以後「neglist.txt」)を「neg」の中に用意します。neg/1.jpgneg/2.jpg...<不正解画像ファイルのパス>次のコマンドを「cascadefiles」で実行することで簡単に用意できます。./neg/neglist.txtディレクトリ「neg」の中身opencv_traincascadeを実行する最後に「opencv_traincascade」を実行してカスケード分類器を作成します。sample)と同等だとエラーが発生するので(正解だと判別されていない場合があるため)、学習したデータ数よりも小さな値を指定してください。ALL--lbpFeatureParams----HOGFeatureParams--しばらくすると次のようなメッセージが表示されて学習が終わります。terminated.「casacadeout」の中にカスケード分類器「cascade.xml」が生成されていたら完成です。ディレクトリ「cascadeout」に「cascade.xml」が生成される既存のカスケード分類器のように利用することができます。最後に思っていたよりも実行ファイルの実行の仕方が難しかったです。急ぎ足で記事を書いてしまったので、オプションなどの説明を省いてしまいました。今回は見せられない画像(共同研究的な意味ですよ!)で作ったものの記録で書いてしまったので、いずれは結果まで見せられる画像を使ってオプションなどの説明も含めた記事を書こうかなと思います。見つかりませんでした。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。date*日本語が含まれない投稿は無視されますのでご注意ください。10年前のマウスを分解してみた2023.07.25【雑記】Excel,Word,PowerPointを読み取り専用で開くスクリプトを作った。【C++】簡単なソケット通信プログラムを作ってみた。無料webツール置き場。動作に問題があれば連絡ください。情報系に関連しないことはこちらで。不定期更新の気ままなブログです。情報学部生の気ままなブログ.ホーム検索トップサイドバータイトルとURLをコピーしました。