目次
2画像セマンティックセグメンテーションネットワークFCNのジャンパー構造
3画像セマンティックセグメンテーションネットワークFCNコードの実装-事前トレーニングネットワーク
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トレーニング中の画像