Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonを使用した畳み込み?


画像認識は、線形回帰や類似性の比較など、はるかに単純な方法を使用して行われていました。手書きのアルファベットを認識するという単純な作業でさえ、結果は明らかにあまり良くありませんでした。畳み込みニューラルネットワーク(CNN)は、画像を知覚するときに人間の脳の神経活動を大まかにシミュレートする計算上安価な方法を提供することにより、従来の方法から一歩進んだものになるはずです。

畳み込みニューラルネットワークの概要

Pythonを使用した畳み込み?

さまざまなオブジェクトを認識する方法と非常によく似ていますが、コンピュータアルゴリズムは、入力を一般化し、これまでに見たことのない画像を判断する前に、何百万もの画像を調べる必要があります。

コンピューターは、すべての画像をピクセルと呼ばれる数値の2D配列として認識します。画像内のオブジェクトを識別するために、コンピューターは特殊な種類の人工ニューラルネットワークである畳み込みニューラルネットワーク(CNN)を使用します。 CNNは、ネットワークで最も重要な操作の1つである畳み込みに由来します。

畳み込みニューラルネットワークでは、各レイヤーは幅、高さ、奥行きに編成されます。 CNNの主要部分である畳み込みは、2つの関数を組み合わせて3番目の関数を作成します(2つの情報セットをマージします)。これは、2つの行列を要素ごとに乗算し、その後に合計を続ける(画像)畳み込みを検討することを意味します。

畳み込みは、画像処理の3ステップの手順です-

  • 入力画像を取得します。

  • 入力画像に適用するカーネル行列。

  • そして、カーネルと畳み込まれた入力画像の出力を格納するための最終的な画像。

以下は、エッジ検出用の画像処理フィルターであるopencvを使用したsobelフィルターの小さな実装です。

サンプルコード

import cv2
import numpy as np

img = cv2.imread('beach.jpg')
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY).astype(float)

edge_x = cv2.Sobel(img,cv2.CV_64F,1,0,ksize = 3)
edge_y = cv2.Sobel(img,cv2.CV_64F,0,1,ksize = 3)
edge = np.sqrt(edge_x ** 2 + edge_y ** 2)

# image can be normalized to
# fit into 0..255 color space
cv2.imwrite('beach_convol.jpg', edge)

入力画像

Pythonを使用した畳み込み?

出力画像

Pythonを使用した畳み込み?


  1. PythonでOpenCVを使用したテンプレートマッチング

    テンプレートマッチングは、パッチまたはテンプレートを実際の画像からマッチングできる手法です。これは基本的にパターンマッチングメカニズムです。 PythonにはOpenCVモジュールがあります。 openCVを使用すると、一致するものを簡単に見つけることができます。したがって、この問題では、OpenVCテンプレートマッチング手法が使用されます。 OpenCV機能を使用するには、 pipを使用してダウンロードする必要があります 。 sudo pip3 install opencv-python テンプレートマッチングタスクには、精度係数があります。この係数はしきい値と呼ばれます。一例とし

  2. PythonOpenCvモジュールを使用したヒストグラムの等化

    これは、画像のヒストグラムを使用してコントラスト調整を行う画像処理の方法です。 実際、この方法は通常、多くの画像のグローバルコントラストを増加させます。特に、画像の使用可能なデータが近いコントラスト値で表される場合、この調整により、強度をヒストグラム上でより適切に分散でき、ローカルコントラストの低い領域が可能になります。より高いコントラストを得る。 OpenCVにはこれを行う関数cv2.equalizeHist()があり、その入力は単なるグレースケール画像であり、出力はヒストグラム均等化された画像です。 この手法は、画像のヒストグラムが特定の領域に限定されている場合に適しています。強度の