Auto Encoder は、 Encoder と Decoder の2つのネットワークを使って、 入力画像から出力画像を生成するものです。 このとき出力画像を入力画像と一致するようにネットワークをトレーニングします。 そうやって入力画像からそれとそっくりな出力画像を生成できるようになったら 中間生成物である Encoder の出力情報(これを潜在ベクトルと呼ぶ) を利用することを考えます。
Encoder の出力情報(潜在ベクトル)は、入力のそれより少なくなるようにモデルを設計しているので、 潜在ベクトルは入力画像の特徴を凝縮した形で表現されていると考えることができます。 ならば、潜在ベクトルが似ている画像は、 元の画像も似た画像に違いない。 この性質を利用して、潜在ベクトルが似た画像を探すことで、 画像を分類したり・画像を検索したりすることが実現できる、という発想です。
» Read More以前のエントリーで PyTorch と Diffusers ライブラリを使って Stable Diffusion を使いました。 TensorFlow でも Stable Diffusion できる ことがわかったので、備忘録として書き残します。 tensorflow-metal を使うことで TensorFlow を M1 macbook air などの Apple silicon 搭載マシンの GPU を使って実行できます。
こちらの方法 Conda なしで Stable Diffusion する(Diffusers ライブラリを使用)M1 mac と Linux + CUDA でも、Apple silicon の GPU を活かして Stable Diffusion を動かすことができますが、 コードをそれように変更する必要がありました。 一方で、tensorflow-metal では Tensorflow にプラグインする形なので、 コード変更が不要です。 単に tensorflow-metal のモジュールをインストールしておきさえすれば、GPU 対応になり処理が速くなる、という仕組みです。
» Read MoreDenoising Diffusion Implicit Models を試した。 このページではデータセットは oxford_flowers102 を使用していますが、それに代えて 顔コレ および ポケモン データセット を使ってトレーニングしてみました。
» Read MoreGANとは Generative Adversarial Network の略語、簡単に言うと贋作をつくるやつ。 例によって MNIST のデータセットを使う。
MNIST を使って cGAN( Conditional Generative Adversarial Network ) を使うと、 数字を指定して、その数字の贋作手描き数字画像をつくれるとのこと。
ここではまだ GAN / DCGAN を試しただけです。
» Read More過去のエントリーでは Python でトレーニングしたモデルを変換して TensorFlow.js で使いましたが、 今回は トレーニングから TensorFlow.js で行います。 そのため、 このエントリーのトレーニング用のコード(モデルを構築するなど) を JavaScript (TensorFlow.js) に移植します。
» Read Moreこのページでは、コードを簡潔に表現するため、 生成したテンソルの破棄する記述はあえて省略しています。 ご了承ください。 必要なら、 tf.dispose() や tf.tidy() を適宜使用してください。
前回のエントリーで Python の TensorFlow で MNIST の分類モデルを作成しました。 今回は、そのモデルを変換して TensorFlow.js で使います。
» Read MoreKeras のこの記事 https://keras.io/examples/vision/mnist_convnet/ を参考にしながら、最終的には これを TensorFlow.js に移植する試み。
今回は Python でモデルを構築して、実際に手描き数字を推測させてみるところまで進めます。
» Read MoreUbuntu 22.04 で CUDA 11 + cuDNN 8 環境をつくった。
すべて apt でインストールが完了するわけではなく、cuDNN については、引き続き nvidia サイトから該当ファイルを入手する必要あり。 sudo apt install cuda-toolkit-11-cudnn-8 だけで、インストールが完了する時代が来ればいいのに。
» Read More