2019年7月28日日曜日

Open CVの例

import cv2

img_src = cv2.imread("./bicycle.jpg",1)
img_gray=cv2.cvtColor(img_src, cv2.COLOR_BGR2GRAY)

thresh = 100max_pixel= 255ret, img_dst = cv2.threshold(img_gray, thresh, max_pixel,cv2.THRESH_BINARY)

cv2.imshow("Show BINARIZATION Image", img_dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

2019年7月21日日曜日

SONY NNC:DATA SETの作り方

左上のメニューから「TRAINING」をクリックし、次に右上側の「DATA SET」をクリックする。次に、画面上の方で、赤四角で囲った部分をクリック(OPEN DATASET)し(図1)、次に「Create Dataset」を選ぶ(図2)。
図1

図2

 次に図3のような画面がでるので、下記を参考にファイルの場所等を指定する。
図3


Source Dir
画像が置いてあるディレクトリ。そのなかに画像の種類ごとに分別してその種類ごとにフォルダに入れて置いておく。

Output Dir
ここに処理された画像とCSV形式の設定ファイルが置かれるので、空のディレクトリを作って指定してやる。

Shaping Mode(画像サイズを揃えるための処理)
Trimming:画像周辺の領域を削ってサイズを整える。
Padding:画像の空白部分にダミーの値(0)を入れてサイズを整える。
Resize: 画像を縦横に適当に引き延ばしてサイズを整える。

Output Color Ch
モノクロだったら1、カラー(RGB)だったら3。1 or 3はNNCのInputの設定をあわせる。

Output width Output height
適当な値を設定する。NNCのInputの設定をあわせる。

Shuffle the order of the data
画像の順番をランダムにするかどうか。通常はチェックを入れる。

Output file1 Output file2
Outputのファイル名(train fileとtest file)。デフォルトは両社の割合が100:0になっているが、通常は70:30 ~ 80:20 ぐらいにしておく。これはデータのうち、70%を使って学習し、残りの30%を使って検証するという意味。

2019年7月18日木曜日

SONY NNC:01_logistic_regression.sdcproj


01_logistic_regression.sdcproj: ロジスティック回帰を用いて、数字の49を判別させる。
datasetについて、Trainingは「small_mnist_4or9_training.csv」、Validationは「small_mnist_4or9_test.csv」を用いた。
 
  

Input (IO Layer)
 

Size: 画像入力の場合、「色数、高さ、幅」のフォーマットで表されるので、この場合モノクロで、28×28の画像サイズの入力を示す。

Dataset: データが入っている変数(x)。この場合、datasetで見るとx:imageのところに画像が入っていることが分かる。


Affine (Basic Layer)
 
Affine変換を用いた全結合層

人工ニューロンは
y=f(Σwx+b)と表現されるが、この()内がAffineであり、fの部分が活性化関数となる。

なので、おおまかな流れとしては判別対象が2つの場合は「Affine」「sigmoid」「binary cross entropy」となり、最終的な識別対象が2個以上の場合は「Affine」「softmax」「multicategory cross entropy」となる。


 

Sigmoid(Activation Layer)
 
 Sigmoid関数によるアウトプット。Affine変換を使って28×28の行列は内積計算しているので、Inputは1つ、Output1つの活性化関数となる。





 BinaryCrossEntropy (Loss layer)

 

 Input:1(値は0~1の間を取り、0に近いと数字4の確率が上がり、1に近いと数字9の確率が上がる。)

T.Dataset: データセットに含まれる変数のうち、このレイヤーの出力として期待する変数の変数名を指定します。

T.Generator:データセットの変わりに用いるGeneratorを指定。この場合、Noneなのでデータ生成を行わない。

T.GeneratorMultiplier:Generatorにより生成した値に対して掛ける係数を指定する。この場合、1となっている。(0に設定しても計算できていた。)