2016-11-30 4 views
-1

私はニューラルネットワークを使って少しプロジェクトをやっています。私は数字認識について、MNISTのデータセットを読んで、同じデータセットを作ることができるかどうかを考えましたが、毎日見ている通常のオブジェクトを考えました。 ここにアルゴリズムがあります(もしそうなら): すべてはpythonのopencvライブラリで行われます 1)イメージから等高線を取得してください。これは文字通り輪郭ではなく、そういうものです。画像にあるものを確認する

def findContour(self): 
    gray = cv2.cvtColor(self.image, cv2.COLOR_BGR2GRAY) 
    gray = cv2.bilateralFilter(gray, 11, 17, 17) 
    self.image = cv2.Canny(gray, 30, 200) 

2)トレーニングセットを作成するには、次の必要性: は、私はこのコードでこれをやりました。 このメッセージをコピーして編集します。回転を変えて反転する - 回転した輪郭からなる約40枚の画像が完成しました。 3)今私はこのイメージをCSVファイルにダンプするつもりです。 これらの画像は3D配列として表されているので、numpyから.flatten関数を使用して画像を平坦化します。次に、このフラット化されたベクトルは、最後の文字としてラベル付きでCSVファイルに書き込まれます

これは私がやったことです。 次に、最後の要素を入力xベクトルとして、最後の要素をyベクトルとしてすべて使いたいと思います。 (hereのように)

認識は同じ方法で行われます:画像の輪郭を取得し、それをニューラルネットワークに送り、出力はラベルになります。

試してみることもできますか?

+0

_それは機能しますか?_いいえ、本当にあなたは時間を無駄にしています。代わりにオブジェクト認識とそのテーマに関する最新の論文を読む。輪郭を抽出するだけではなく、もっと難しい(興味深い)ことを学びます... – Miki

+1

私は同意しません。現在の論文を読まないでください、他の方法よりはるかに混乱します。 Googleの "オブジェクト認識ニューラルネットワークチュートリアル"、またはそれらの行に沿って何かを見ることができますあなたが見ることができる多くのチュートリアルを見つけるでしょう! –

+1

@Christopherおそらく、私は簡単に始めてみましょう。オンラインチュートリアルを見てから、おもちゃの問題よりも意味のあることをしたいときは、新しい論文や最先端の​​アプローチを見てください。 ; D – Miki

答えて

1

実験の余地は十分です。しかし、学習の練習を除いて、ホイールを再開発すべきではありません。パラダイムを研究し、既に存在するものを学び、自分のホイールを改善する。

CNN(畳み込みニューラルネットワーク)で画像認識を開始することを強くお勧めします。 ILSVRC 2012の画像データセット(a.k.a. ImageNetファイル)で、多くの素晴らしい作業が行われました。実際、NNの人気の大部分は、Alex Krizhevskyの画期的な進歩(AlexNet、ILSVRCを獲得した最初のNN)とその後のトポロジー(ResNet、GoogleNet、VGGなど)の成果です。

単純な答えは、ネットワークが元の写真の中で重要なことを「決定」することです。確かに、イメージを平坦化して輪郭を供給しますが、元のイメージで実行されたトレーニングで優れた結果が得られれば驚くことはありません。

「画像認識の導入」に関するリソースを検索し、あなたの現在の読書やトピックの興味に合ったヒットをいくつか選んでください。そこにはたくさんの良いものがあります。

独自のモデルをプログラミングする場合は、担保をすべてゼロから作成するのではなく、既存のフレームワークを使用することを強くお勧めします。 CSV形式をダンプします。あらかじめパッケージ化されたI/Oルーチンと豊富なサポートを備えたより優れたものがあります。この考えは、常にデータを操作するのではなく、ネットワークを設計できるようにすることです。

人気のあるフレームワークには、Caffe、TensorFlow、Torch、Theano、CNTKなどがあります。これまでのところ、私はCaffeとTorchの学習曲線が最も簡単であることを発見しましたが、実際にはのほうがそれほど多くの違いはありませんが、をお勧めします。あなたの興味のある分野で良い文書と事例を持っているものを探してください。

関連する問題