私のクラスでは、2つの分類器を使用してアプリケーションを作成し、画像内のオブジェクトがポルフィラ門(seasponge)または他のオブジェクトの例であるかどうかを判断する必要があります。
しかし、Pythonでの特徴抽出技術に関しては、完全に失われています。私のアドバイザーは、クラスでカバーされていない画像を使用するように私を説得しました。
誰もが意味のある文書や読書を検討したり、検討する方法を提案したりできますか?
私のクラスでは、2つの分類器を使用してアプリケーションを作成し、画像内のオブジェクトがポルフィラ門(seasponge)または他のオブジェクトの例であるかどうかを判断する必要があります。
しかし、Pythonでの特徴抽出技術に関しては、完全に失われています。私のアドバイザーは、クラスでカバーされていない画像を使用するように私を説得しました。
誰もが意味のある文書や読書を検討したり、検討する方法を提案したりできますか?
回答:
画像において、特徴抽出のためのいくつかの頻繁に使用される技術である二値化及びぶれ
2値化:イメージ配列を1と0に変換します。これは、画像を2D画像に変換するときに行われます。グレースケーリングも使用できます。画像の数値行列を提供します。グレースケールは、ディスクに保存するときに必要なスペースがはるかに少なくなります。
これは、Pythonで行う方法です。
from PIL import Image
%matplotlib inline
#Import an image
image = Image.open("xyz.jpg")
image
サンプル画像:
次に、グレースケールに変換します。
im = image.convert('L')
im
この画像が返されます:
そして、これを実行することでマトリックスを見ることができます:
array(im)
配列は次のようになります。
array([[213, 213, 213, ..., 176, 176, 176],
[213, 213, 213, ..., 176, 176, 176],
[213, 213, 213, ..., 175, 175, 175],
...,
[173, 173, 173, ..., 204, 204, 204],
[173, 173, 173, ..., 205, 205, 204],
[173, 173, 173, ..., 205, 205, 205]], dtype=uint8)
次に、ヒストグラムプロットまたは等高線プロットを使用して、画像の特徴を確認します。
from pylab import *
# create a new figure
figure()
gray()
# show contours with origin upper left corner
contour(im, origin='image')
axis('equal')
axis('off')
figure()
hist(im_array.flatten(), 128)
show()
これにより、次のようなプロットが返されます。
ぼかし:ぼかしアルゴリズムは、隣接するピクセルの加重平均を取り、周囲の色をすべてのピクセルに組み込みます。輪郭をより良くし、特徴とその重要性をよりよく理解するのに役立ちます。
そして、これはPythonでそれを行う方法です:
from PIL import *
figure()
p = image.convert("L").filter(ImageFilter.GaussianBlur(radius = 2))
p.show()
ぼやけた画像は次のとおりです。
したがって、これらは機能エンジニアリングを行うことができるいくつかの方法です。また、高度な方法を使用するには、コンピュータービジョンとニューラルネットワークの基本、さまざまな種類のフィルターとその重要性、およびその背後にある数学を理解する必要があります。
この優れたチュートリアルでは、現在ほとんどの視覚タスクで最先端のパフォーマンスを達成している畳み込みニューラルワークの基本について説明します。
http://deeplearning.net/tutorial/lenet.html
Theanoとその上に構築されたライブラリを含む、PythonのCNNには多くのオプションがあります(私はkerasが使いやすいことがわかりました)。
ディープラーニングを避けたい場合は、OpenCVを検討することをお勧めします。OpenCVは、他の多くのタイプの機能、ラインHaarカスケード、SIFT機能を学習できます。
Jeremy BarnesとJamesmfが言ったように、機械学習アルゴリズムを使用して問題に対処できます。それらは強力であり、機能を自動的に識別できます。アルゴリズムに正しいトレーニングデータを入力するだけです。画像で作業する必要があるため、畳み込みニューラルネットワークがより良いオプションになります。
これは、畳み込みニューラルネットワークについて学習するための優れたチュートリアルです。コードもダウンロードでき、問題の定義に応じて変更できます。しかし、処理のためにpythonとtheanoライブラリを学ぶ必要があり、そのための良いチュートリアルも得られます。