python
1import os 2import glob 3import cv2 4 5for f in glob.glob('*.png'): 6 img = cv2.imread(f) 7 img_bin = cv2.inRange(img, (120, 21, 145), (214, 152, 204)) 8 fname, fext = os.path.splitext(f) 9 cv2.imwrite(f, img_bin)
上記のフォルダ内画像全二値化プログラムを使用し、ok,ng,sample全て同一条件で二値化して
opencvでカスケード分類をしましたが、画像数が各50枚以下ということもあるのか、精度は全然だめで、
そもそも二値化前と比べて精度が上がったのかよく分かりません(多少上がったかも知れない)。
もっと精度を上げるために、sample画像を何等かの方法で増やそうと思い、
createsamplesを使ってどうにかできないかと思っているのですが、
これは1つの画像を元に類似画像を作るもので、複数画像をcreatesamplesする方法がわかりません。
createsampleした画像はvecファイルにまとめられていますが、このvecファイルをどうにかいじればよいのかも知れませんが、
どのようにするのが良いでしょうか。
OpenCVの物体検出を選んだ理由を教えていただけますか?(RPiでサクサク動かしたい等)
物体検出は統計的な手法ではありますが、現在主流の深層学習に比べて検出力はだいぶ低いです。「ガチ」で当てにいくのであればYOLOなどを使うと良いと思います。
アドバイス:https://www.pro-s.co.jp/blog/system/opencv/6202
物体検出をするのであれば、こちらのサイトが非常にわかりやすく参考になると思います。
YOLOってなんなんでしょうか?
深層学習による物体認識技術の一つです。YOLOもOpenCVのカスケードと同じように「どこに」を検出できますが、OpenCVのカスケードは「何が」が基本的に1つしかできませんが、YOLOであれば「何が」が原理上何種類でも対応できます。また、「どれ位あっていそう?」という確率もついてくるので、データさえ揃えられるのであればOpenCVより使い勝手は良いと思います。
それは、OPENCVみたいに、python等のプラグインみたいなものですか?
何が、が複数種類、とは、okファイルが複数ということでしょうか、
他で教えて貰ったやり方で一応okファイル複数の場合もできたのですが、
今度は何でもかんでも正解にしてしまいました。
また、色を考慮に入れる事はできないんでしょうか、YOLOは。
> それは、OPENCVみたいに、python等のプラグインみたいなものですか?
そうなります。YOLOもPythonからインポートして使います。
> 何が、が複数種類、とは、okファイルが複数ということでしょうか、
それもできますし、違う種類のものもできます。
もし、リンゴがあって、きれいなリンゴと虫食いリンゴがあったときに、
「きれいなリンゴと虫食いリンゴを分けたい」であれば、
きれいなリンゴ(カテゴリ0)、虫食いリンゴ(カテゴリ番号1)とすればOK/NGの判定ができます。
「とりあえず何でもいいからリンゴを見つけたい」であれば、
きれいなリンゴ(カテゴリ番号0)、虫食いリンゴ(カテゴリ番号0)とすれば、出来栄えはどうであれリンゴを根こそぎ探すようになります。この使い方はOpenCVの物体検出の働きとそっくりな挙動をしめす(上にYOLOの方が精度が上の)はずです。
> 他で教えて貰ったやり方で一応okファイル複数の場合もできたのですが、
> 今度は何でもかんでも正解にしてしまいました。
OpenCVの物体検出は識別をするものというより、候補を割り出す働き(なので、候補を出した先にある「OK」「ダメ」は別のアルゴリズムで判定というやり方)の方がでOpenCVの物体検出できることに近いと思います。
漏れがあると後続の処理にすら流せなくなってしまうため、「あっているかはともかく、なるべく根こそぎ拾う道具」と割り切って使う方が良いと思います。
> また、色を考慮に入れる事はできないんでしょうか、YOLOは。
YOLOはカラー画像のデータを使えます。頑張れば深度情報を使った4chでも使えるかもしれません。
OpenCVの物体検出はグレースケールだけのはずですので、もしOK、NGの特徴が色にも反映されやすいのであればYOLOの方がやりやすいと思います。
ん、カラーも認識材料に用いれるのでしょうか?
1.具体的にopcvと比べ、yoloはどのようやな検出方法が違うのか。
2.yoloはいかにして色を検出材料に用いているのか。
を知りたいのですが。
> カラーも認識材料に用いれるのでしょうか?
少なくとも3.xまでのOpenCVの物体検出では3chカラー情報を材料に使えません。
YOLOでは3chカラー情報も材料に使うことができます。
1. 検出方法
OpenCVの技術
簡単に言えばいわゆる「機械学習」で領域検出する方法です。
具体的にはHOGやHAAR-LIKEを特徴量として、従来の統計学を使って似ている部分を探す検出方法です。
https://docs.opencv.org/3.4/d2/d64/tutorial_table_of_content_objdetect.html
YOLOの技術)
簡単に言えば「深層学習」で領域検出する方法です。
具体的には畳み込みやプーリングといったフィルタ(層毎に割り振られた処理)によって生成される特徴量(計算結果)を使い、その計算結果に非線形の活性化関数をかけて、教師データに似た特徴を示す部分を探す検出方法です。
https://arxiv.org/abs/1506.02640
2.yoloはいかにして色を検出材料に
一枚のカラー画像を「縦横とRGBという3方向に広がっている箱」ととらえてください。これをそのまま畳み込んでいくイメージです。リンク先の「ネットワーク構造」の項目のイメージです。
https://dev.classmethod.jp/articles/research_paper_yolo/
なんとなくですがイメージはつかめました。
Darknetというものをインストールする必要があるのですが、これは安全なのでしょうか?名前がちょっと。
回答1件
あなたの回答
tips
プレビュー