見出し画像

ChatGPTで作る画像生成の初歩

ChatGPTというと、文章のやり取りのイメージだがGPT+は違う。解析や画像生成もできてしまうから、これまでのサービスがここにまとまってきて実に便利である。
今回は、そんなChatGPTで出来る画像編集や花形の生成まで学んでいく。

  • Advanced Data Analysisを使用した画像処理

  • DALL・Eでの画像生成

  • GPT-4Vを活用した画像認識

Advanced Data Analysisを使用した画像処理

ADAはPythonの実行環境になるのでPythonの標準的な画像処理ライブラリを使うことで画像処理を行っていく。

できること

  • モノクロ化(「この画像をモノクロにして」)

  • 画像回転(「画像を回転させてください。」)

  • 画像の切り抜き(「この画像の上半分を切り出して表示してください」)曖昧でもOKだし、ピクセル単位での指示もできる。

  • リサイズ(「画像の大きさを半分にしてください」)これは地味に便利かも

  • 画像結合(「ファイル名01.jpg」と「ファイル名02.jpg」を横に結合してください。左に「ファイル名01.jpg」を配置してください。)

  • ドット絵化(「画像を64x64で16色のドット絵にしてください。」)

  • エッジ化(「この画像をエッジ化してください」)

  • 複数ファイルをまとめて処理(「アップロードしたZIPファイル」を解答して、半分のサイズにリサイズしてからZIPファイルにまとめてください。)

DALL・Eでの画像生成

GPT-4になったことで、画像生成AIを使って絵を書くことができるようになってしまった・・・。現在ではDALL・Eと呼ばれる画像生成AIを使用している。

猫の絵を書いてください。
このクオリティよ・・・。ペルシャっぽいのを出してきたんでスコティッシュフォールドと指定してみました。

こんな指定も面白い。Radioheadの「Exit Music」の歌詞を参考に書いてもらった絵です。もう怖いぐらい凄い。

以下の文章を元に絵を書いてもらえますか。

文章 """ Wake from your sleep The drying of your tears 
Today we escape, we escape Pack and get dressed 
Before your father hears us Before all hell breaks 
loose Breathe, keep breathing Don't lose your nerve Breathe,
keep breathing I can't do this alone Sing us a song 
A song to keep us warm There's such a chill 
Such a chill And you can laugh a spineless laugh 
We hope your rules and wisdom choke you Now 
we are one in everlasting peace We hope that you choke, 
that you choke """
レオ様主演のロミジュリのエンディングテーマでもあった作品

これ以外にも自分の書いた文章を読んでもらって、画像を作成することもできます。今回は本にあるようにURL(コロナで苦しんだ記録)とこんなテイストで描いてください。という部分まで指定したのですが、

以下のWebサイトの文章を元に画像を生成してください。 
https://note.com/anakit/n/na8a86e9834e4

フラットデザイン、クレヨン風テクスチャ、ピクセルアートなど、
可愛らしく万人に受け入れやすいテーマを16:9の画角で作成してください。
これができてしまうと、個人のブログなんかは本当に自分専用画像を簡単に作れてしまうね。

これがあなたは #前提条件 のクリエイターです。#バンド について #構成例 に沿って1分で紹介する #バンド のナレーション原稿のたたきを作ってください。

またChatGPTで生成した画像は2023年11月時点では、個人が責任を追うに限り商用利用可能とのことです。
例えば”ジブリ風に”などと指定したものはすでに生成できなくなっていますが、同じポーズや画像で作るなど著作権には注意が必要そうです。

GPT-4Vを活用した画像認識

4Vで出来るのは、
・画像の説明
・OCR
・物体の数え上げ
・物体の位置検出
・異常検出など

このようなことをプロンプト指定するだけで、複数の認識タスクを実現できてしまう。

顔認識を試す

顔の位置がどこにあるのかを探す顔検出とその応用例を試してみる。現在ではOpenCVという画像処理ライブラリによるdlibと呼ばれる機械学習ライブラリの顔検出機能を使用できる。
失敗する場合もあるので、その場合は「顔認識に失敗しています。もう一度パラメータを変えてやり直してください」とお願いしてみる。

こんな感じで顔検出してくれた。

またdlibライブラリを使用してshape_predictor_68_face_landmarks.dat」をアップしながら、顔のランドマーク検出をしてください と唱えると、顔の特徴的な部位(眉・目・鼻・口など)を示すことができるみたいだが、いまいちファイル自体をアップロードすることができなかった。

ただそんなことしなくても、普通に

dlibの顔検出を使って、顔へモザイク処理をしてください

顔にモザイクをかけてくれる。これは複数の人物の画像なんかになると処理がぐっと早まりそうではある。

画像を説明させる

これは有名な情報量の多い画像です。
ChatGPTにお願いして、「この画像を説明してみてください」とお願いしてみました。

この画像には、学生服を着た女の子がカメラに向かってピースサインをしている様子が映っているね。背景には山々と家々があり、田舎の道っぽい雰囲気が感じられるよ。女の子の後ろには、リードにつながれた犬が散歩していて、さらにその後ろでは、地面に倒れている人がいるみたい。倒れている人のそばには、散らばった荷物があるね。全体的には、平和な光景の中にも、ちょっと心配なシーンがあるね。大丈夫かな? 🤔🍃

情報量の多い画像

という感じで僕らにわかりやすいように説明してくれます。面白いですよね。GPT-4Vはかなりの解像度で情報を読み取ることが出来るようです。

また説明の中で「〜の数を数えてください。」といったことも可能ですが、精度がめちゃくちゃ高いわけではないので注意です。7人いる画像で試してみましたが、GPTちゃんは5人と回答してきたりと画像によっても精度の違いがありそうです。

続いて以下のホワイトボードの画像を読み込んで「文字を読み取ってください」と唱えてみた。

画像の左側には「TO DO LIST」と書かれたタイトルがあり、その下にはいくつかの予定が記載されているね。日付とタスクがリストアップされていて、「3/3 お茶会」「4/12 10:00〜 客先訪問」「5/3 美容院 あかね」と読み取れるよ。画像の右側には「学習時間」というタイトルがあり、曜日と時間が記されていて、「月 3/2 まで」「土 3/3」「コーポレート 3/8」「ともる 3/4」「ひさよ 3/2」となっているね。何かの計画をしっかりと管理しているようだね。✍️📅

画像の情報分析までしてくれたんだが、文字情報まで読み取ろうと努力しているのがわかる。ある程度規則性のある文章や数字など読み取りやすいようですが、まだ日本語は精度が低そうですね。
もちろんExcelで書き出して〜なんてお願いすることもできちゃいます。

けっこう適当にお願いした割に形にはなってる。

専門的な図の説明

例えばこういった複雑なシステム設計図などが理解できない場合、画像を元に「この図を説明して」で解説を聞くことができる。

https://codezine.jp/article/detail/12755

でも大抵は聞いてもわからないんですよ笑
その場合は、アシスタント的に部分的に解説を聞いてみよう。
「このAPIってそもそもどういう意味?」
「この中の顔認識はどんな役割を果たしてる?」

高度な画像処理

いままでに試してみたこのGPT-4Vによる画像認識と、DELL-Eによる画像生成機能を組み合わせることで、さらに高度な画像を作ることも出来る。
左の画像を説明してそれを元に、アニメ風の画像を作ってくださいという例。

物によってはだいぶ異なるものが出来上がった。

この画像には二人の男性が写っています。左側の男性はジャケットを着ており、少し不機嫌そうな表情をしています。右側の男性は襟のついたコートを着ていて、真剣な表情をしています。二人はカメラをまっすぐに見つめていて、背景は白と無地でシンプルです。両者の頭には顔認識されたことを示す緑色の四角い枠が表示されています。

そこから構図だけを一緒にしてまったく別の画像に変更していくなども可能。もちろんイラストレータの構図をもろパクリしたAI画像などは怒られる可能性が高いので注意ね。

上記の説明結果を元に、サイバーパンク風にしたもの

SlackやDiscordの絵文字を作る

画像内で日本語を認識することが少しずつ出来るようになってきたが、基本的にはライブラリ内に日本語が用意されていないため、使うためには日本語フォントをアップして上げる必要がある。

またオリジナル画像を作成する場合はできるだけ細かく指示をする必要がある。今回は本を参考に以下のように指示。

要件"""
・128×128ピクセルサイズの画像
・OpenCVを使う
・アップロードした「NotoSansJP-Bold.ttf」をフォントとして使う
・文字は中央に大きく配置
・2行に分ける
・文字の色は赤
・背景は透過する
・ファイルを保存する
"""
こんな感じで指示通りに出来上がった。やばい!

まあ出来ると言っても、Slackのアイコン作成ツールなんかもWebであるので、あえてこれを使用する必要があるのかというと疑問なんですが、これを応用してある程度意図した画像を、意図した形式で作ることができてしまうわけだ。

愛犬画像を元にイラストにしてから、別サービスで背景を切り抜いた。


学んだこと

・簡単な画像生成であればStableなどのサービスを使わなくても一元化できてしまう。
・日本語が達者なので、プロンプト指示の練習をするにはこちらが便利
・画像認識の精度はそこまで高くないので期待しない
・オリジナル画像を作るにはかなり精密な呪文詠唱が必要
・ブログ用素材など、簡単なイラストを作れてしまうので無料素材たちが死んでしまうかも・・・。

という感じで長くなってしまいましたが、画像で出来る初歩的なところを試してみました。複雑な設定やマシンが必要なくこれが出来てしまうのはかなり便利だと感じました。
ただ「自分がこうしたい」を持っていないと、どうブラッシュアップしていけばいいかもわからないので、結局はその人間力が問われるのだと思う。

よろしければサポートお願いします。 投げ銭で頂いたものはコーヒーやラムネなど創作のお供に返させていただきます。