電気泳動画像を生成するためのLoRA、Electrophoresis-V1 を使ってみたメモ

# ChatGPT先生と雑談

### **user**:

ChatGPT先生、今日は電気泳動について教えていただいてよろしいでしょうか？

---

### **assistant**:

もちろんです。電気泳動は分離技術の1つで、電界の中に置かれた荷電粒子がその大きさや電荷により異なる速度で移動する性質を利用しています。この方法は通常、生物学の分野でタンパク質やDNAのような大分子の解析に使用されます。

具体的には、一定の寸法の孔が含まれたゲルという媒体が使われます。試料はこのゲルの一端に置かれ、電流が印加されると荷電粒子は電極のある方向に移動します。大きな分子は小さな孔を通過するのが難しいため、移動率が遅くなります。逆に小さい分子はより迅速に移動します。

ゲル電気泳動という特定の形態は、生物学や生化学の研究で頻繁に利用されます。ゲル電気泳動により、研究者はまずDNA、RNA、タンパク質などの混合物を分離し、その後、各成分を特定の方法で染色して可視化します。

これにより、特定のDNA断片を含むゲノムの識別、特定のタンパク質の存在と量の確認、遺伝子治療で遺伝子が正常に挿入されたかを確認するといったことが可能となります。また、遺伝子の突然変異などもこの方法で評価することができます。

電気泳動は生命科学の分野で非常に重要なツールとなっており、医学、薬学、生物学などの分野に適用されています。

---

### **user**:

電気泳動を行う際には、必ずゲルのどこかに「ラダー」を入れるそうですが、それについて説明していただいてよろしいですか？

---

### **assistant**:

もちろんです。電気泳動を行う際には、しばしば「ラダー」と呼ばれるダイエットマーカーまたはマーカーラダーが使用されます。

ラダーは一連の既知の大きさのDNAまたはタンパク質の断片で構成されており、したがってその移動距離は既知です。電気泳動の過程でラダーはゲル上を移動し、その結果として一連の明瞭なバンドを形成します。これにより、未知の試料のバンドの大きさや量を推定できます。

通常、ラダーはゲルの端に配置され、同時に試料とともに電気泳動を行います。これにより、調査している試料と同じ条件下でマーカーが動かされるため、より正確な比較が可能になります。

簡単に言えば、ラダーは基準となるスケールのようなもので、これにより未知の試料のDNAやタンパク質の大きさを推定することができます。

---

### **user**:

具体的にどのようなラダーがあるのか、ご存知の範囲で詳しく教えてください。

---

### **assistant**:

ラダーの種類は主に実験の目的や対象となる分子により決まります。主なラダーの例をいくつかご紹介します。

1. "1kb DNA Ladder": このラダーは、DNAフラグメントが1キロベース（1000塩基対）ずつ増加する一連の断片で構成されています。これは、中間の大きさのDNA断片を解析するために一般的に使用されます。

2. "100bp DNA Ladder": これは、DNAフラグメントが100塩基対ずつ増加する一連の断片から構成されています。これは、より小さなDNA断片の解析に使用されます。

3. "Protein Ladder": タンパク質の電気泳動分析で使用されます。一般的には、範囲が広いいくつかの既知の大きさのタンパク質で構成されています。たとえば、10から250キロダルトンの範囲であることが一般的です。

これらのラダーは、未知のサンプルを解析する際に参照として使用されます。大きさの推定は、目的となるフラグメントのバンドがゲル上でラダーのどのバンドに対応する位置にあるかを見ることで行われます。

なお、これらのラダーの他にも多種多様なラダーが存在し、経験と目的によって選ばれます。さらに、これらのラダーは生物学的な研究を助けるための他の資材同様、生物学的な試薬を製造・提供している企業から購入することができます。

---

### **user**:

なるほど、ありがとうございます。ところで、Stable Diffusion ってご存知ですか？もしご存知でしたら詳しく教えてください。

---

### **assistant**:

"Stable Diffusion"は特に電気泳動や科学のコンテクストで用いられる専門用語ではありません。文脈によっては、物質が均等に拡散する状況を指すかもしれません。

一般的な拡散とは、物質が高濃度の領域から低濃度の領域へ自然に移動する現象で、時間とともにシステム内の物質が均等に分布することを目指します。これが"Stable Diffusion"と言えるかもしれません。

しかし、この用語が特定の科学的なコンセプトや技術を示しているとは限らず、その具体的な意味はその使用される状況や文脈によります。そのため、詳細を知るためには更なる情報が必要かもしれません。

---

### **user**:

生成AIの一種としてのStable Diffusionについて、何かご存知でしょうか？

---

### **assistant**:

あ、それなら話は別ですね。生物学的な文脈ではなく、深層学習の文脈での「Stable Diffusion」について説明します。

「Diffusion Models」は、機械学習の一部として開発された生成モデルの一種です。これは、一連の確率的な変換を使用してデータを無秩序な雑音に変換する方式で動作します。Diffusion modelsは自然界の自由拡散プロセスの特性を持ち、それによって形成される分布を学習することを特徴としています。

そして「Stable Diffusion」は、Diffusion Modelsの中でも特に強固な学習性能と高いサンプリング効率を持つとされています。モデルは長期にわたる時間スケールで安定し、適切なサンプリングを可能にすることで、より高度な生成結果を引き出します。

この種のモデルは、特に高品質で現実的な画像を生成するために使用され、最先端の生成モデル、例えばGAN（Generative Adversarial Networks）と比べても優れたパフォーマンスを発揮します。

しかし、深層学習は非常に高度で進歩が早い分野なので、詳細な説明や最新の結果を理解するためには、専門的な資料を探し、最新の研究を追いかけることが必要です。

---

### **user**:

ありがとうございます。Stable Diffusionが何をするものなのかは、ひょっとしてご存知ないですか？

---

### **assistant**:

「Stable Diffusion」という具体的なツールやフレームワークについては、現時点では具体的な情報がないため的確な説明が難しいです。ただし、上述のDiffusion Modelsの説明から推測するに、「Stable Diffusion」は一種の頑健な拡散モデルを意味している可能性があります。

他のデジタルインテリジェンスの研究と同様に、オープンエンドの生成モデルは、データから学習し、新しいサンプルを生成するためのものと考えられます。これにより、モデルは、新しいアートワークや音楽、文章、あるいはその他の形式の出力（自然言語の文、画像、音声データなど）を生成することができます。

その結果としての出力は、その設計やパラメータにより、さまざまな具体的な目的または目標に合わせて調整することができます。しかし、現時点では、「Stable Diffusion」がどのような特定のタスクに使用されるのか、あるいはどのようにこれを可能にするのかについては具体的な詳細が不足しています。

それゆえ、もし特定の「Stable Diffusion」システムやツールについて詳しく知りたい場合は、その具体的な文献やリソースを参照することをお勧めします。そのような情報が与えられれば、私たちはより具体的で正確な説明を提供することができるでしょう。

---

### **user**:

分かりました。ありがとうございます。Stable Diffusionとは、画像生成AIの一種なのですが、そこでLoRAというものを使います。LoRAについて、ご存知の範囲で詳しく教えていただけますか？

---

### **assistant**:

LoRaとは「Long Range」の略で、低電力だが長距離通信が可能な通信規格の一つです。しかし、LoRaの文脈が画像生成AIといかに関連しているのかは明らかではありません。

あなたが参照しているLoRaが異なる何かを指している可能性があります。しかし文脈が不明なため、具体的な説明を提供することは難しいです。もし具体的な素材や文献がある場合、それを参照することでより詳細な答えを提供することができるかもしれません。

---

### **user**:

『Lora』とは、“Low-Rank-Adaptation”の略で、非常に少ない計算量で追加学習ができるモデルという意味だそうです。

---

### **assistant**:

「Low-Rank Adaptation」（LoRA）は、エンドツーエンドの深層学習モデルの性能を向上させるための手法です。この手法では、元の学習モデルの重みを維持したまま、潜在的な特徴表現を適応させるための追加的なパラメータをネットワークに導入します。言い換えれば、元のモデルの強力な表現を維持しつつ、新たな特性を効率的に追加する技術と言えます。

具体的には、パラメーターマトリクスの低ランクな近似を獲得したり利用したりすることで、元のモデルの大量のパラメータを追加的に学習することなく、専門的な調整を可能にします。この結果として、LoRAは元のモデルの能力を保ちつつ、新たなタスクやデータに迅速に適合する能力を持つモデルを生み出すことができます。

また、LoRAの一部として使用される「低ランク」の概念は、線形代数とよく関連しており、特に大きなデータセットの次元削減や圧縮表現の取得などによく用いられます。このアプローチを適用することで、LoRAは既存の学習モデルをより効率的に調整することが可能になります。

このアプローチは特にAIの領域において有益で、ある特定のタスクに特化したカスタムモデルを短時間で訓練し、実行可能にするための鍵となります。結果として、飽和したディープラーニングモデルのパフォーマンスを維持しながらも、特殊なユースケースや新たなドメインのデータに対して高い適応性を持つことが可能になります。

---

### **user**:

次々と質問して申し訳ありませんが、ControlNetはご存知でしょうか？

---

### **assistant**:

あいにく、現時点では「ControlNet」という名前で特定の概念やテクノロジーを特定することはできません。機械学習、AI、またはその他の分野で一般的に使われる用語ではないようです。

"ControlNet"はネットワーク制御の一般的な名前である可能性があります。一方で、特定の技術や製品を指す可能性もあります。しかし、特定の文脈や資料がない場合、具体的な説明を提供することは難しいです。

あなたが「ControlNet」について詳しく知りたいとお考えの場合、その具体的な情報を提供いただければと思います。その情報があれば、私たちはより具体的で正確な説明を提供することができます。

---

### **user**:

なるほど、ありがとうございます。では、次の箇条書きの文章をまとめて、幅広い方々に興味を持ってもらえるような文章に変えてください。

・電気泳動画像を生成するためのLoRAが開発された。
・ControlNetと併用すると、任意のアガロースゲル電気泳動画像を生成できる。

---

### **assistant**:

新たに開発された技術「LoRA」が、電気泳動の画像生成を一新！この技術は、別の強力なツール「ControlNet」と組み合わせることで、あらゆる種類のアガロースゲル電気泳動画像の生成が可能になりました。見た目はあなたが思い描く通り、再現度抜群の画像を作り出すことができます。この革新的な技術によって、科学的研究や実験がより効率的かつ精密に行えることでしょう。

---

### **user**:

上記の文章をベースとして、その技術が何の役に立つか、建設的な意見を加えた文章にしていただけますか？

---

### **assistant**:

新たな発明「LoRA」が電気泳動画像生成の世界に驚きをもたらしました！そして、それが別の強力なツール「ControlNet」と組み合わせることで、アガロースゲル電気泳動画像の生成がいつでも可能になることで、科学研究や医学の世界に大きな影響を与えるでしょう。この最新技術のおかげで、DNAやタンパク質の分析が一段と精度を増し、より早く結果を得ることが可能になります。これは新薬の発見や遺伝病の診断技術の進歩にもつながり、人類の健康と生活の質の向上に直結することでしょう。確実な画像再現性を備えたこの革新的技術によって、我々の生活はこれまで以上に劇的に進化し、未知なる可能性が広がるでしょう。

---

### **user**:

ありがとうございました。以上はChatGPT先生の創作であり、誤解が含まれている可能性もあることをご承知おきください。

---

### **assistant**:

はい、あなたのおっしゃる通りです。私の提供する情報は人間の専門家の助言に代わるものではなく、独自の研究や専門家の意見を補完することを目的としています。特に科学的な情報や専門的な知識に関しては、専門的な情報源や専門家に確認を取ることを強くお勧めします。

---

ということで、ChatGPT先生との前座はここまでです。 m(__)m

# v1-5-pruned-emaonly.safetensors

まず、ベースとなる Stable Diffusion についてですが、画像生成AIの一種として有名であり、自分も[こんな感じで](https://note.com/search?context=note&q=%E3%81%93%E3%81%86%E3%81%9D%E3%83%95%E3%83%AC%E3%83%B3%E3%82%BA&sort=popular)使ってます。そこではベースとなるチェックポイントとして、美少女を生成するチェックポイントとか、色々あるんですが、今回の「Electrophoresis-V1」では、基本となる「v1-5-pruned-emaonly.safetensors」を使うようです。ここで、v1-5-pruned-emaonly.safetensorsだけ使った画像生成をいくつか試してみましょう。

![スクリーンショット 0005-11-27 12.00.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211162/9a283365-0a64-9c5c-2bd1-b2c403b56cb3.png)

なるほど、何かしらの絵が自動生成されますけど、何の絵か分かりませんね。

# Electrophoresis-V1

それでは、Electrophoresis-V1のページ https://civitai.com/models/210734 に書かれてあるプロンプトを入れて生成させましょう。

ControlNetを使う必要があるらしいので、こちら https://koneko3.com/how-to-use-controlnet/ を参考に使ってみました。

## 生成結果

![スクリーンショット 0005-11-27 12.15.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211162/025e3d56-3da7-8389-f619-14e8768cb908.png)

おお、生成できましたね。

できた画像をいくつか見てみましょう。

![grid-0011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211162/af97b9e3-6094-ba78-b4a3-08a5d8884b29.png)
![grid-0012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211162/3f4798e6-39fd-ee2f-b022-ccfd6c5fa3e5.png)
![grid-0013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211162/8709b719-caff-284e-f368-9f826fb0ddfa.png)

なるほど、確かにそれっぽい画像が生成されてます。

# ControlNet is more important

詳細設定で 「ControlNet is more important」 ってのがあったのでそれにチェック入れて生成させると、

![grid-0014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211162/60585247-2807-d8aa-245f-4f4bcafa6326.png)
![grid-0016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211162/457ba928-3c81-81be-59b9-27ab46d6ca0e.png)
![grid-0015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211162/d17f8c6b-81bc-89ef-8dd8-2716f29a8e99.png)

うーん、少し良くなったのかな...？分からないや...

# 画像生成AIによる画像のプロンプト確認方法

その画像が生成AIによるものかどうかは、生成AI用画像アップロードサイトにアップロードを試みれば、ある程度は分かります。例えば

![スクリーンショット 0005-11-27 12.30.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211162/1a688b8a-08c0-1c26-0fd7-6987bf47a276.png)

こんな感じですね。右下にプロンプトが見えてます（ここから先、本当にアップロードしたければすれば良いですけど、しなくても良いです）。

ですが、その画像を直接アップロードするのではなく、たとえばスクリーンキャプチャしたものをアップロードしようとすると、当然、

![スクリーンショット 0005-11-27 12.33.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211162/3096ec32-bd51-a19e-d4c6-5f163ed6b50c.png)

プロンプトは見えなくなりましたね（当たり前）。さあ、困った。プロンプトが分からなくなってしまうぞ。

# 未解決部分

狙った場所にバンドを描いたり、それ以外の場所にバンドが出ないようにしたり、ということがまだできない...。（自分の能力が足りないだけか...）

# 追記１： Depth の利用

[バンド出てほしい場所に線引いた下書き画像を Depth として与えるといいって誰かが言ってました](https://twitter.com/meta_a1/status/1728984389017903519) という情報をいただいたので、 [【Stable Diffusion】ControlNetの深度情報用モデル『depth』の使い方を解説！](https://freeblog-video.com/stable-diffusion_controlnet_depth/) を参考に再度チャレンジしてみましたが、今のところうまく行ってません。

# 追記２： Img2Img の利用

[下書きして img2img のほうが簡単な気がしました](https://twitter.com/meta_a1/status/1729014529882014144) という情報をさらにいただいたので、試してみました。

## Electrophoresis-V1 なしの場合

左の大きな絵は、Electrophoresis-V1で生成した絵ですが、これをもとに Stable Diffusion の img2img で生成した絵が右側に表示されています。

![スクリーンショット 0005-11-27 15.15.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211162/a9e3d11a-78ec-8ab9-3751-421fdb9aa6c7.png)

無事、ハシゴが描画されています。

## Electrophoresis-V1 ありの場合

左の大きな絵は、Electrophoresis-V1で生成した絵ですが、これをもとに Stable Diffusion の img2img で生成した絵が右側に表示されています。

![スクリーンショット 0005-11-27 15.17.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211162/3cecc5ff-db31-9ef9-e3d9-f2e136b87ef2.png)

常にというわけではありませんが、似たような並びの電気泳動画像が生成されるようになりましたね。

ということで、欲しい絵を下書きしておいて、何度か Stable Diffusion の img2img で生成させれば、欲しい絵に近いものが生成できそうだということが分かりました。めでたし、めでたし？