社会人研究者が色々頑張るブログ

pythonで画像処理やパターン認識をやっていきます

PytorchによるGAN(1):全体像の把握

GAN

GAN(generative adversarial networks)[1]とは、2014年に登場したNeural Networkの学習スキームです。
一般的なNeural Networkは入力ベクトルとそれに対応する正解ベクトルの写像(対応)関係を回帰する学習を行うのですが、GANでは敵対的学習という画期的な学習方法を提案しています。
敵対的学習では、学習させたいNetwork(便宜上Generatorと呼びます)とDiscriminatorというGeneratorを学習させる為のNetworkの2つのNetworkを用います。

通常の学習 GAN
f:id:nsr_9:20210906174812p:plain f:id:nsr_9:20210906174819p:plain
続きを読む

index画像からone-hotベクトル画像を作る方法

やりたいこと

Image Segmentationはpixel単位でカテゴリIDを予測するタスクです。
教師画像の形式はLoss関数の関係上、カテゴリIDをそのまま扱うのではなく、One-Hot-Vectorで扱います。

One-Hot-VectorはカテゴリIDを2進数の様に扱うデータ表現であり、Neural Networkで扱いやすい(学習しやすい)表現方法となります。

普通のデータ表現 One-hot Vector
f:id:nsr_9:20210902161118p:plain f:id:nsr_9:20210902161124p:plain

この例では、スカラー値のラベル表現ですが、One-hot-Vectorを画像で行うと次のようになります。

普通のデータ表現 One-Hot-Vector Image
f:id:nsr_9:20210902162919j:plain f:id:nsr_9:20210902163107p:plain

この様な感じで、pixel単位でカテゴリIDが記録されているグレースケール画像から、One-Hot-Vector画像(Category数, H, W)をPytorchで作成するコードを紹介します。

続きを読む

PytorchによるImage Segmentation(1)

はじめに

Image Segmentationは画像を領域ごとに分割する技術であり、Conputre Vision技術の中でも特に汎用性の高い技術です。
応用範囲は非常に広く、医療画像解析や自動運転技術、工場の自動化、ロボティクス等々の様々な分野に応用されています。

以下に、Cityscapesと呼ばれる、Image Segmentationの代表的なデータセットの画像を示します。
f:id:nsr_9:20210901141618p:plain

続きを読む

pytorchのお勉強(6):GPUの利用

はじめに

Pytorchのお勉強の続きです。
前回までに学んだ内容でDeepNeural Networkでやりたい一通りの事はできるようになりましたが、肝心のGPUを用いた高速化を学んでいませんでした。

GPUはGraphic Processing Unitと呼ばれる並列計算が得意な演算装置です。
ゲームやグラフィック・ツールを高速に動作させる為に作られた外部演算装置であり、CPUで構成されたホスト計算機にくっつけて動作させます。
現在では並列演算の性能の高さを活かし、Deep Learningや物理シミュレーションなどの科学計算や、仮想通貨のマイニングなどにも応用されています。

今回は、pytorchの学習、推論にGPUを用いる方法を学んでいきます。
この公式ドキュメントを参考に進めていきます。

続きを読む