画像の分類

20790 ワード

AIは手書きを認識できますか?


ニューラルネットワーク構造

  • 三層FNN
  • MNIST 0から9の手書き数字
  • 画像サイズは
  • 縦横28画素、背景値は0、デジタル領域値は255
  • である.
  • 背景値は0、数字期待領域は1であり、正常光照射学習
  • を行う.
    層数タイプサイズ活性化関数1層Flatten 28*28 2層FN 256 Relu 3層FNN 10 Softmaxなし

    Flatten層


    入力
  • FNNのデータは2次元データではなく1次元データです.
  • の2次元画像データをFNNに入力とき、2次元データを1次元データに変換するプロセス

  • 深さ学習モデル符号化

    """
    Author : Byunghyun Ban
    """
    from tensorflow import keras
    import data_reader
    
    # 몇 에포크 만큼 학습을 시킬 것인지 결정합니다.
    EPOCHS = 20  # 예제 기본값은 20입니다.
    
    # 데이터를 읽어옵니다.
    dr = data_reader.DataReader()
    
    # 인공신경망을 제작합니다.
    # Flatten함수의 input_shape를 이지디 데이터 크기로 설정
    model = keras.Sequential([
        keras.layers.Flatten(input_shape=(28, 28)),
        keras.layers.Dense(128, activation='relu'),
        keras.layers.Dense(10, activation='softmax')
    ])
    
    # 인공신경망을 컴파일합니다.
    model.compile(optimizer='adam', metrics=['accuracy'],
                  loss='sparse_categorical_crossentropy')
    
    # 인공신경망을 학습시킵니다.
    print("\n\n************ TRAINING START ************ ")
    early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
    history = model.fit(dr.train_X, dr.train_Y, epochs=EPOCHS,
                        validation_data=(dr.test_X, dr.test_Y),
                        callbacks=[early_stop])
    
    # 학습 결과를 그래프로 출력합니다.
    data_reader.draw_graph(history)

    物事を区別できますか?


    ニューラルネットワーク構造

  • は、前述の例と同様の構成
  • である.
    層数タイプサイズ活性化関数1層Flatten 32*32無2層FN 256 Relu 3層FNN 10 Softmax

    深さ学習モデル符号化

    """
    Author : Byunghyun Ban
    """
    from tensorflow import keras
    import data_reader
    
    # 몇 에포크 만큼 학습을 시킬 것인지 결정합니다.
    EPOCHS = 20  # 예제 기본값은 20입니다.
    
    # 데이터를 읽어옵니다.
    dr = data_reader.DataReader()
    
    # 인공신경망을 제작합니다.
    model = keras.Sequential([
        keras.layers.Flatten(input_shape=(32, 32)),
        keras.layers.Dense(128, activation='relu'),
        keras.layers.Dense(10, activation='softmax')
    ])
    
    # 인공신경망을 컴파일합니다.
    model.compile(optimizer='adam', metrics=['accuracy'],
                  loss='sparse_categorical_crossentropy')
    
    # 인공신경망을 학습시킵니다.
    print("\n\n************ TRAINING START ************ ")
    early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
    history = model.fit(dr.train_X, dr.train_Y, epochs=EPOCHS,
                        validation_data=(dr.test_X, dr.test_Y),
                        callbacks=[early_stop])
    
    # 학습 결과를 그래프로 출력합니다.
    data_reader.draw_graph(history)

    ビジュアル情報


    人間の脳が視覚情報を処理する方法


    ビジュアル情報ストリームのパス

  • 眼球から流出した情報は、以下の太陽穴皮質に伝達される.
  • 視覚皮質は、V 1、V 2、V 3、V 4、V 5、V 6等の領域に分けられる.

  • 視覚皮質感知形態v 1線、辺v 2透視感v 4ジオメトリIT最終視覚情報

    CNN(Convolutional Neural Networks)

  • は「合成乗ニューラルネットワーク」と呼ばれている.
  • CNNの主な材料はフィルターです.
  • 主な動作原理は、
  • 画像にフィルタを追加して、元のデータを変更し、変更後のデータを次のレイヤに出力することです.

    CNNの計算方法


    フィルタを適用して画像サイズを小さくする



    ダウンジャケット

  • フィルタを適用する際に画像を収縮させないテクニック
  • エッジディジタルゼロ加算技術
  • の原装寸法と同じです.

  • CNN事物区分

  • オリジナル画像は、0から255の間の数字で表すデータを255.0に分割し、0から1の間の数字を
  • に変換する.
  • 「BatchNorm」はDropoutのように人工知能性能を向上させるための演算である.
  • 「CNN-一般光源の構成-関数のアクティブ化-ポーリング」の順に適用します.
  • 「MaxPool」は「プール層」と呼ばれるツールで、画像サイズを小さくします.
  • CNNは、フィルタ付きの2次元画像を出力し、Flattenレイヤの1次元データ入力FNNに変換することができる.
  • 層数タイプサイズ活性化関数1層CNN 32,(3,3)−BantNorm−Relu−MaxPool(2,2)−2層CNN 64,(3,3)−BantNorm−Relu−MaxPool(2,3)−3層CNN 64,(3,3)−BantNorm−Relu−MaxPool(2,2)−4層TentFlaa−5層FN 128 Relu−ProopOutate=0.5−6層

    バッチの正常化

  • ニューラルネットワークの蓄積に伴い,学習過程における各層のニューラルネットワーク分布が異なり,前層の歪みも次層に影響を及ぼすという「内部公変数変化」の問題が生じる.
  • は通常の光源を配置し、性能を向上させた.
  • バッファ層

  • 画像のサイズを減らすために使用されます.
  • は平均プールも使用した.

  • 深さ学習モデル符号化

    """
    Author : Byunghyun Ban
    """
    from tensorflow import keras
    import data_reader
    
    # 몇 에포크 만큼 학습을 시킬 것인지 결정합니다.
    EPOCHS = 20  # 예제 기본값은 20입니다.
    
    # 데이터를 읽어옵니다.
    dr = data_reader.DataReader()
    
    # 인공신경망을 제작합니다.
    model = keras.Sequential([
        keras.layers.Conv2D(32, (3, 3)),
        keras.layers.BatchNormalization(),
        keras.layers.ReLU(),
        keras.layers.MaxPooling2D((2, 2)),
        keras.layers.Conv2D(64, (3, 3)),
        keras.layers.BatchNormalization(),
        keras.layers.ReLU(),
        keras.layers.MaxPooling2D((2, 2)),
        keras.layers.Conv2D(64, (3, 3)),
        keras.layers.BatchNormalization(),
        keras.layers.ReLU(),
        keras.layers.Flatten(),
        keras.layers.Dense(128, activation='relu'),
        keras.layers.Dropout(rate=0.5),
        keras.layers.Dense(10, activation='softmax')
    ])
    
    # 인공신경망을 컴파일합니다.
    model.compile(optimizer='adam', metrics=['accuracy'],
                  loss='sparse_categorical_crossentropy')
    
    # 인공신경망을 학습시킵니다.
    print("\n\n************ TRAINING START ************ ")
    early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
    history = model.fit(dr.train_X, dr.train_Y, epochs=EPOCHS,
                        validation_data=(dr.test_X, dr.test_Y),
                        callbacks=[early_stop])
    
    # 학습 결과를 그래프로 출력합니다.
    data_reader.draw_graph(history)