Tensorflowエントリと実践的な研究ノート(13)-FNN画像のセマンティックセグメンテーション

目次

1画像のセマンティックセグメンテーション

1.1アプリケーションシナリオ:

1.1.1ストリートのセマンティックセグメンテーション

1.2画像のセマンティックセグメンテーションの本質

1.3ネットワーク構造

1.4 2つの実装方法

1.4.1アップサンプリングを使用

特徴:

1.4.2入力と出力

1.4.3完全畳み込み

1.5アップサンプリング

1.5.1逆操作

1.5.2差分法

1.5.3 反池化

1.5.4デコンボリューション(転置たたみ込み)

2画像セマンティックセグメンテーションネットワークFCNのジャンパー構造

2.1 FCN効果

2.2 FCNの短所

3画像セマンティックセグメンテーションネットワークFCNコードの実装-事前トレーニングネットワーク

3.1事前トレーニング済みネットワーク

3.2サンプルサブモデルを作成する

3.3中間層を取得する

3.3.1サンプリングについて

3.4モデル予測

3.5予測結果

3.6ドロー損失関数

3.7トレーニング中の画像


1画像のセマンティックセグメンテーション

上の画像はセマンティックセグメンテーションの例であり、目的は画像内の各ピクセルのクラスラベル予測することです

 画像のセマンティックセグメンテーションは、コンピュータービジョンテクノロジーにおける画像処理と画像理解の重要な部分です。

セマンティックセグメンテーション画像内の各ピクセルについて、エンティティではなくカテゴリのみをセグメント化します

1.1アプリケーションシナリオ:

1.オートパイロットで立ち上がる

2.医用画像診断

3. UAV着陸地点の判断

1.1.1ストリートビューのセマンティックセグメンテーション

1.2画像のセマンティックセグメンテーションの本質

セマンティックセグメンテーションの目標:

通常、RGB画像(高さ*幅* 3)またはグレースケール画像(高さ*幅* 1)が入力として使用され、出力はセグメンテーション画像で、各ピクセルにはカテゴリラベル(高さ*幅*)が含まれます* 1)

具体的には、このような画像には、5つのカテゴリがあります。

現在、画像セグメンテーションの分野で最も成功しているアルゴリズムのほとんどは、同じ先駆者であるLongらによって提案された完全畳み込みネットワーク(FCN)または完全畳み込みネットワークから来ています。
FCNは、分類ネットワークをセグメンテーションタスクのネットワーク構造に変換し、セグメンテーションの問題でエンドツーエンドのネットワークトレーニングを達成できることを証明します。FCNは、セグメンテーションの問題を解決するためのディープラーニングの基礎となっています。

1.3ネットワーク構造

分類ネットワーク構造は、サーフェス上の入力(猫と犬)として任意のサイズの画像を受け入れることができますが、ネットワーク構造の最後に完全に接続されたレイヤーが存在するため、入力空間情報が失われるため、これらのネットワークを直接使用することはできません。セグメンテーションなどの密な推定問題を解決するため。

そのため、ネットワーク構造がピクセルレベルの密な推定タスクに適応できるようになります。そのため、ネットワーク構造はピクセルレベルの高密度推定タスクに適応できます。

1.4 2つの実装方法

  • 事前トレーニング済みのネットワークを使用して、畳み込み層を自分で作成する
  • UNET

Unetは2015年に生まれたモデルで、現在のセグメンテーションプロジェクトでほぼ最も広く使用されているモデルです。
Unetはより少ないトレーニング画像から学ぶことができます。画像数が40未満の生物医学データセットでトレーニングした場合でも、IOU値は92%に達する可能性があります。
 

1.4.1アップサンプリングを使用

特徴:

  • 基本的に分類ネットワーク + アップサンプリング =元の画像サイズ
  • アップサンプリングのプロセスでは、前の情報組み合わせてアップサンプリングを実行します。
  • 任意のサイズのネットワークを入力できる完全たたみ込みネットワークです

1.4.2入力と出力

ネットワークの入力は任意のサイズのカラー画像にすることができます。出力は入力と同じサイズで、チャネル数は次のとおりです。n(ターゲットカテゴリの)+1(背景)

1.4.3完全畳み込み

CNNたたみ込み部分のネットワークの目的は、完全に接続されているのでなくたたみ込み置き換えられ、入力画像が特定のサイズを超える任意のサイズになるようにすることです。

1.5アップサンプリング

畳み込み処理では、特徴画像が非常に小さくなるため(たとえば、長さと幅が元の画像の1/32になる)、元の画像サイズの密なピクセル予測を取得するには、アップサンプリングを実行する必要があります。

1.5.1逆操作

ダウンサンプリングと比較すると、簡単に考えることができる3つの方法があります。これは、最大プーリング、平均プーリング、および畳み込み演算の逆の使用に対応します。

私たちはアップサンプリングをしました

  • 1.補間
  • 2.反池化
  • 3.デコンボリューション(転置たたみ込み)
     

1.5.2差分法

2つの重みを追加し、2で割ります

1.5.3 反池化

最大プーリング

平均プーリング


1.5.4デコンボリューション(転置たたみ込み)

ここで非常に重要なデコンボリューションを使用します

組み込み関数があります。ストライドはデフォルトでは拡大されません= 2は2倍です

クラスオートエンコーダー構造

下の図に示すオートエンコーダのような構造を使用するか、最後のレイヤーの機能マップを元の画像サイズに直接アップサンプリングすると、多くの詳細が失われます。

2画像セマンティックセグメンテーションネットワークFCNのジャンパー構造

2.1 FCN効果

最下層(ストライド32)の予測(FCN-32s)を2倍にアップサンプリングし、poo | 4層(ストライド16)からの予測を融合(追加)して得られた画像。ネットワークのこの部分はFCN-16s。次に、予測のこの部分は2倍にアップサンプリングされ、pool3レイヤーからの予測とマージされますネットワークのこの部分はFCN-8sと呼ばれます。

アップサンプリング時間が長い場合、抽出された特徴が優れています

添加スキップ構造は(最後の層の予測組み合わせより豊富なグローバルな情報と)との予測(浅い層より局所細部とを、)
グローバル予測を観察しながら局所的な予測を行うことができるようになります。

2.2 FCNの短所

  • 得られた結果は十分に詳細ではなく、詳細に敏感ではありません。

  • ピクセル間の関係、空間的一貫性の欠如などは考慮しませんでした。

3画像セマンティックセグメンテーションネットワークFCNコードの実装-事前トレーニングネットワーク

3.1事前トレーニング済みネットワーク

VGG18を使用して、最終出力のアップサンプリングを行います

3.2サンプルサブモデルを作成する

3.3中間層を取得する

3.3.1アップサンプリング

3.4モデル予測

3.5予測結果

3.6ドロー損失関数

num = 3
for image,mask in test_dataset.take(1):
    pred_mask = model.predict (image)
    # 取出预测的是哪一个类,像素点1,2,3 具体的分类
    pred_mask = tf.argmax (pred_mask, axis=-1)
    # 扩展维度,取前面所有的维度
    pred_mask = pred_mask[..., tf.newaxis]
    plt.figure (figsize=(10,10))
    for i in range (num):
        plt.subplot (num,3, i*num+1)
        # 原始图像
        plt.imshow (tf. keras. preprocessing. image. array_ to_ img (image[i]))
        # 真实分割图
        plt.subplot (num, 3,i*num+2)
        plt.imshow (tf. keras. preprocessing. image. array_ _to_ img (mask[i]))
        # 预测图
        plt.subplot (num, 3, i*num+3)
        plt.imshow (tf. keras. preprocessing. image. array_ to_ img(pred_ mask[i]))

3.7トレーニング中の画像

 

 

おすすめ

転載: blog.csdn.net/qq_37457202/article/details/108020509