DALL・Eとは?
ChatGPTで有名である、OPEN AI社が提供している、画像を生成するAIツールです。
ChatGPTと同じく、GPT-3というAIモデルを元に作られており、ChatGPTが自然言語特化とするのであれば、DALL・Eは画像特化のAIモデルと言えます。(多分)
1. 準備編(APIキーの取得)
OpenAIのアカウントを作成し、APIキーを取得します。
様々なサイトでアカウント作成方法は取り上げられているので、今回記載は割愛します。
下記を参考にさせて頂きました。
アカウントを作成したら、画面右上から「View API Keys」を選択します。
「Create new secret key」を押下して、APIキーを作成します。
APIキーを作成したら、どこかに控えておいて下さい。
注意
DALL・E、GPT-3は有料サービスです。通信料に応じて料金が発生します。
今現在(2023/3/3)では、OpenAIアカウント作成から3か月間無料期間があり、$18分のクレジットが与えられます。
そのため、最初の3カ月は$18分、無料で使用する事が出来ますが、
- $18分を超過して使用した場合
- 又は3カ月後も継続使用した場合
については料金が発生します。
筆者は現在無料枠で使用していますが
現在の無料枠や料金体系がどのようになっているか
ご自身で調べてから利用する事をおすすめします。
2. 準備編(Maven依存関係の追加)
Eclipseのタブから
FIle -> New -> Project -> MavenProjectを選択し、新規MavenProjectを作成します。
作成後、pom.xmlに追記します。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>dallETest</groupId>
<artifactId>dallETest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- ここから追記 -->
<dependencies>
<dependency>
<groupId>com.theokanning.openai-gpt3-java</groupId>
<artifactId>api</artifactId>
<version>0.10.0</version>
</dependency>
<dependency>
<groupId>com.theokanning.openai-gpt3-java</groupId>
<artifactId>service</artifactId>
<version>0.10.0</version>
</dependency>
</dependencies>
<!-- ここまで -->
</project>
ここまで出来たら、準備OKです。
3. 実装編
あとは、APIを呼び出す実装をするのみです。
public static void main(String[] args) throws IOException {
// APIキー設定
OpenAiService service = new OpenAiService("1で取得したAPIキーを記載");
// リクエストの作成
CreateImageRequest req = CreateImageRequest.builder()
.prompt("柴犬の画像") //生成する画像の説明
.n(1) // 生成する画像の数。 1~10で選択
.responseFormat("b64_json") // ローカルの画像を指定するため、b64_jsonを選択。 "URL"とすればURLでの画像の指定も可能
.size("256x256") //生成する画像のサイズ、256x256, 512x512, 1024x1024から選択
.build();
// 画像生成の実施
ImageResult imageResult = service.createImage(req);
// 返ってきたデータをバイナリ化
byte[] data = Base64.getDecoder().decode(imageResult.getData().get(0).getB64Json());
try {
// 返ってきたデータをpng形式で保存
BufferedImage image = ImageIO.read(new ByteArrayInputStream(data));
ImageIO.write(image, "png", new File("test.png"));
} catch (IOException e) {
System.out.println("画像出力に失敗しました。");
}
}
リクエストパラメータの設定など、詳細はこちらに記載されています。
当然ですが、sizeなどを大きくすれば処理速度も低下します。
4. 実行結果
test.pngとしてこのような柴犬の画像が生成されました。(絵だけど・・・)
5. さいごに
Javaでの呼び出しを紹介しているページが少なかったので、書いてみました。
今回は画像生成の手順のみを紹介しましたが、DALL・Eでは画像の加工や、
画像の補填(画像の枠外にあたる、続きを予想して生成する) を行う事が出来ますので、
今度はそちらの使い方も紹介したいと思います。
参考にさせて頂いたページ