ChatGPTは宇宙戦艦ヤマトの夢をみるか。。
1. はじめに
近年、AI技術の発展に伴い、多くの分野でAIが活用されている。
本記事では、AIにSVG形式で絵を描かせることが可能かどうかを検証する実験を行い、その結果と考察をまとめた。
2. 実験内容
本実験の目的は、文章生成AIが絵を描けるかを検証することである。
SVG形式はグラフィックをテキストで表すフォーマットとしてメジャーである。
このフォーマットを利用すればテキストで絵を描けるはずである。
例題として宇宙戦艦ヤマトの横から見た絵をSVG形式で描かせてみた。
実験は3回続けて指示を出し、出力されたSVGの絵を比較した。
3. 実験結果
1回目の指示に対して、簡単なSVGのソースを含むHTMLが提示された。2回目の指示に対しては、少し構造物が増えたSVGのソースを含むHTMLが提示された。そして、3回目の指示に対しては、さらに構造物が増えたSVGのソースを含むHTMLが提示された。
4. 考察
実験結果をみてわかるように、単純ながらも「宇宙戦艦ヤマト」をイメージしていることがわかるSVGが出力された。原理的にはどのような絵もSVGで描くことはできるはずである。
SVGの行数を増やしていけば、構造物が増えてより「宇宙戦艦ヤマト」に近づいていくと思われる。
しかし、このまま行数を増やしていっても、「宇宙戦艦ヤマト」そのものにはならないかもしれない。
「宇宙戦艦ヤマト」を言葉だけで詳細に説明したテキストはないからだ。
文章生成AIはテキストで学習をしているので、テキストで書かれた「宇宙戦艦ヤマト」の説明から創造するしかない。
文章生成AIが「宇宙戦艦ヤマト」を描けるようになるにはなんらかのブレークスルーが必要だと思われる。
画像ではなくテキストだけで宇宙戦艦ヤマトを認識しているという点では、視覚障害者(目の見えない人)も同じではないか。
文章生成AIに本当の「宇宙戦艦ヤマト」を描かせられるようになった時、視覚障害者に「宇宙戦艦ヤマト」を見せられるかもしれない。
付録 SVGソース
- 「宇宙戦艦ヤマトを横から見たところをSVGで書いてほしい。」
- 「実際のデザインに近くなるように、より詳細な形状をSVGで描いてほしい。」
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>宇宙戦艦ヤマト(簡略版)</title>
</head>
<body>
<svg width="300" height="100" xmlns="http://www.w3.org/2000/svg">
<!-- ヤマトの船体 -->
<rect x="10" y="40" width="280" height="20" fill="gray" />
<!-- ヤマトの艦首 -->
<polygon points="10,60 10,40 0,50" fill="gray" />
<!-- ヤマトの艦橋 -->
<rect x="40" y="25" width="20" height="15" fill="blue" />
<!-- ヤマトの煙突 -->
<rect x="80" y="30" width="10" height="10" fill="blue" />
<!-- 主砲の砲塔 -->
<rect x="150" y="35" width="30" height="10" fill="blue" />
<!-- ウェーブモーション砲 -->
<circle cx="10" cy="50" r="5" fill="red" />
</svg>
</body>
</html>
- 「実際のデザインに近くなるように、より詳細な形状をSVGで描いてほしい。」
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>宇宙戦艦ヤマト(詳細版)</title>
</head>
<body>
<svg width="800" height="300" xmlns="http://www.w3.org/2000/svg">
<!-- ヤマトの船体 -->
<path d="M100,150 Q250,180 400,150 L400,100 Q250,80 100,100 Z" fill="gray" />
<!-- ヤマトの艦首 -->
<polygon points="100,100 100,150 50,125" fill="gray" />
<!-- 艦橋 -->
<path d="M200,85 Q210,60 220,85 L220,100 L200,100 Z" fill="blue" />
<!-- 艦橋後部の構造物 -->
<rect x="200" y="100" width="20" height="10" fill="gray" />
<!-- 煙突 -->
<rect x="250" y="80" width="20" height="30" fill="blue" />
<rect x="270" y="90" width="10" height="20" fill="blue" />
<!-- 主砲の砲塔 -->
<rect x="300" y="110" width="50" height="20" fill="blue" />
<rect x="330" y="100" width="20" height="10" fill="blue" />
<!-- ウェーブモーション砲 -->
<circle cx="100" cy="125" r="10" fill="red" />
<!-- 主砲バレル -->
<rect x="300" y="105" width="70" height="5" fill="black" />
<rect x="300" y="120" width="70" height="5" fill="black" />
</svg>
</body>
</html>
- 「もうちょっと詳細にしてほしい。200行くらいのSVGで宇宙戦艦ヤマトを横から見たところを描いてほしい。」
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>宇宙戦艦ヤマト(詳細版)</title>
</head>
<body>
<svg width="800" height="300" xmlns="http://www.w3.org/2000/svg">
<!-- ヤマトの船体 -->
<path d="M100,150 Q250,180 400,150 L400,100 Q250,80 100,100 Z" fill="gray" />
<!-- ヤマトの艦首 -->
<polygon points="100,100 100,150 50,125" fill="gray" />
<!-- 艦橋 -->
<path d="M200,85 Q210,60 220,85 L220,100 L200,100 Z" fill="blue" />
<!-- 艦橋後部の構造物 -->
<rect x="200" y="100" width="20" height="10" fill="gray" />
<!-- 煙突 -->
<rect x="250" y="80" width="20" height="30" fill="blue" />
<rect x="270" y="90" width="10" height="20" fill="blue" />
<!-- 主砲の砲塔 -->
<rect x="300" y="110" width="50" height="20" fill="blue" />
<rect x="330" y="100" width="20" height="10" fill="blue" />
<!-- ウェーブモーション砲 -->
<circle cx="100" cy="125" r="10" fill="red" />
<!-- 主砲バレル -->
<rect x="300" y="105" width="70" height="5" fill="black" />
<rect x="300" y="120" width="70" height="5" fill="black" />
<!-- 副砲塔 -->
<rect x="200" y="120" width="30" height="10" fill="blue" />
<rect x="230" y="115" width="20" height="5" fill="blue" />
<!-- 艦載機格納庫 -->
<rect x="170" y="100" width="30" height="20" fill="blue" />
<!-- 艦尾の構造物 -->
<rect x="380" y="100" width="10" height="10" fill="gray" />
<!-- 艦尾のアンテナ -->
<path d="M390,110 Q400,90 410,110" fill="gray" />
<!-- 機関部の排気口 -->
<circle cx="400" cy="125" r="5" fill="black" />
<circle cx="390" cy="125" r="5" fill="black" />
<!-- 電波探知アンテナ -->
<line x1="210" y1="80" x2="220" y2="60" stroke="blue" stroke-width="2" />
<line x1="210" y1="80" x2="200" y2="60" stroke="blue" stroke-width="2" />
<!-- レーダーアンテナ -->
<circle cx="210" cy="60" r="5" fill="blue" />
<line x1="215" y1="60" x2="225" y2="45" stroke="blue" stroke-width="2" />
<line x1="205" y1="60" x2="195" y2="45" stroke="blue" stroke-width="2" />
<!-- ミサイルランチャー -->
<rect x="120" y="110" width="40" height="10" fill="blue" />
<rect x="130" y="100" width="20" height="10" fill="blue" />
<!-- 艦橋下部構造物 -->
<path d="M210,100 L220,100 L225,110 L205,110 Z" fill="gray" />
<!-- フィン -->
<path d="M300,80 L310,50 L320,80 Z" fill="blue" />
<path d="M350,80 L360,50 L370,80 Z" fill="blue" />
<!-- その他の細かいディテールを追加することで、宇宙戦艦ヤマトの外観を向上させることができます。
ただし、完全なデザインを再現するには、専門的なグラフィックソフトウェアや、既存の
宇宙戦艦ヤマトのSVGデータを利用することをお勧めします。 -->
</svg>
</body>
</html>