コメント欄だとわかりにくいのでこちらにまとめます。
質問への回答
ok,ng,sample全て同一条件で二値化
- OKとNGとの2つに分ける、であればこの回答は無視してください。
- グレースケールを二値化して白黒にする、であれば情報が欠落するので普通精度は落ちます。
もっと精度を上げるために、sample画像を何等かの方法で増やそうと思い
- 物体検出は「検出(判別はしない)」の道具ですので、もともと精度は見込めません。
- システム全体としての精度を求めるのであれば、
- 過剰に「物体検出」させて、そのあとに「判別処理」でOKかNGかそもそも別のものかを判別する。過剰検出させる方法については、物体検出器を作るブログの記事を読んで対応してください。
- 後述の改善策を採る。
複数画像をcreatesamplesする方法がわかりません。
createsampleした画像はvecファイルにまとめられていますが、このvecファイルをどうにかいじればよいのかも知れませんが、どのようにするのが良いでしょうか。
これも先のブログにまとめられています。
もう少し情報が必要であれば、サンプル画像をアップロードしてください。
物体検出について
これを満たすには、(よほど形状やグレースケールで判別できるものでない限り)「物体検出で過剰検出」させてそのあとに「後続の判別処理」が必須です。
OpenCVの物体検出の何がダメなのか?
-
(少なくともv3.xまで)OpenCVの物体検出ではグレースケールしか対応していない。情報の入力段階でカラー画像と比べて情報が1/3まで欠落している(dlibか何かの物体検出はカラー画像に対応していたと思います。
-
物体検出単体では人間が適当に決めたパラメータを元に検出しているため、本当にそれで充分とは限らない。
-
物体検出では検出力と検出の精度がイマイチな部分で完結するトレードオフの関係にあり、よほどわかりやすいもの対象物でない限り、満足な結果が得られない。
物体検出は一言で言えば、とっつきやすい一方、精度は期待できない枯れた機械学習の技術です。物体検出単品では「らしい場所」は提示できても、よほどわかりやすい対象物でない限り人間の認識からすれば「本当にそうかい?」と思う結果しかまずもって得られません。
「2. 後述の改善策を採る。」について
対策は大体以下の通りです。
1. 物体検出→物体の判別(SVM)
※2012年頃までの技術水準です。
課題:検出率が低い、SVMでは判別精度が低い
※これに対し、2012年頃にトロント大のヒントン先生がCNNベースの判別法を発表して今の深層学習の流れを作りました。
2. 物体検出→物体の判別(CNN)
※大体2015年頃までの技術水準です。
課題:検出率が低い、物体毎にCNNで判別するのでやたら遅い
3. 物体検出・物体の判別を同時に実施(YOLOやSSD)
※2015年以降の技術水準です。
課題:検出から判別まで深層学習で一撃でこなせるようになったので、速度も精度も劇的に改善
以降、YOLOのバージョンが上がりながら今に至る。
どうしてこんなに深層学習のYOLOの精度が高くて速いかを説明します。
- グレースケールではなくカラー画像を入力に使えることで、画像の表現力がもともと高い。
- 人間の職人芸から導かれた検出処理(例えば物体検出やSVM)が含まれていない
- (良くも悪くも人間の常識抜きに)機械が統計的に導いた膨大な数の検出処理で成り立っている
- 物体検出と物体の判別を融合させることで、比較的高速に、無駄なく、一撃(You Only Look Once)で処理きる
yoloはいかにして色を検出材料に
一枚のカラー画像を「縦横とRGBという3方向に広がっている箱」ととらえてください。これをそのまま畳み込んでいくイメージです。
「RGBの三つの異なるデータがあるのに、どうして最後にいつのまにかこれらが”組み合わさった”数値のデータに!」とモヤモヤすることと思います。これは「全結合層」という部分で膨大なデータを一次元に変換する処理があり、ここで数値の羅列に並んだ形に変換されて1つのデータに変換され、そのあと適当なデータ(座標やカテゴリ等)に分離されるととらえてください。
Darknetというものをインストールする必要があるのですが、これは安全なのでしょうか?名前がちょっと。
「中二病をこじらせた」タイトルとよく表現されていますが、安全と思います。Githubですべて公開されていますし、ほかの人たちも改善を加えたりしてよく手入れされています。
※githubのような公開されて、**よく手入れされている場所のソースコードやデータを使ってください。**正体のよくわからないサイトから複雑で膨大なソースコードを手に入れると、何か仕込まれている例があります(ずいぶん前に、膨大なソースコードの中にこっそりJPEGデータに偽装してIP等を送信するコードを挟み込んでいた人がいて、身内から干された、というアメリカ人がいました)。