AaaS Tech Labの柏木です。
私は、ハンドメイド領域にAIを活用する実験的な取り組みを、個人開発として進めています。前回のコラム
[1]では、一枚の写真から、その被写体のぬいぐるみを編み物で作るための図案を、AIで自動生成するアプリケーションの開発に取り組みました。
今回は、対象を編み物からアイロンビーズへと移し、立体作品の図案づくりに挑戦しました。本コラムでは、立体アイロンビーズに着目した背景から、技術的な仕組み、実際に完成した作品までをご紹介します。
背景
前回のアプリケーションを実際に使ってみて、正直なところ、AIならではの魅力を見出すことができませんでした。
編み物は本来、目数や段数を一目ずつ調整しながら、作りたいものを繊細に形づくっていく作業です。ところがAIによる自動生成では、技術的な制約からその細かな調整までは再現しきれず、人間が考えるよりも単純で粗い図案になってしまいます。
こうした反省を踏まえ、今回は次のふたつを条件に題材を探しました。
条件1: AIによる自動生成でも、作品のクオリティが下がりにくいこと
条件2: 自分にとって、AIがなければ作れないものであること
アイロンビーズとは
そこで行き着いたのが、アイロンビーズです。小さな筒状のビーズを格子状のプレートに並べ、アイロンの熱で溶かして固める、あの懐かしい工作です。実はこれが、先述の条件を見事に満たしてくれます。
・ ピクセルとの対応により、画像を図案に落とし込みやすい(条件1)
格子状にビーズを並べるという性質上、1ビーズを1ピクセルとして扱うことができるため、画像をそのまま図案に置き換えられ、「どのマスに何色を置くか」という明快なデジタルデータになります。
・ 立体設計が難しく、自動生成の必然性がある(条件2)
画像から図案への変換は単純な一方で、立体作品では、複数の平面パネルを立体パズルのように組み立てる必要があります。パネルの形、枚数、噛み合わせ方といった設計は、クリエイターの空間把握能力が頼りの手作業です。(ぜひWeb で「アイロンビーズ 立体」と検索してみてください。)
技術的な仕組み
今回構築した、立体アイロンビーズ図案の自動生成ロジックについてご説明します。処理は大きく次の2段階に分かれます。
Phase 1:画像からボクセルモデルを生成する
Phase 2:ボクセルモデルを平面図案に分解する
Phase 1:画像からボクセルモデルを生成する
画像からボクセルモデルを生成するアプローチには、「画像から直接ボクセルを生成する方法」と、「まず画像から3Dモデルを生成し、それをボクセルにサンプリングする方法」の2通りがあります。今回は、滑らかな3Dモデルを経由することで、画像に映らない奥行きや裏側の形状まで自然に再現できると考え、後者の多段階の手法を採用しました。
近年多くの高精度な3D生成AIが存在しますが、今回は下記の条件を満たすモデルを選定し、ボクセルサンプリング後の「形状の自然さ」と「色の正確性」を比較しました。
・ ローカル環境で動くこと(APIのコストに縛られず、何度も検証を行うため)
・ 3D表現自体が色情報を持つこと(ボクセルサンプリング時に、各ボクセルに正確な色を割り当てるため)
比較の結果、採用したのがTRELLIS.2
[2]とPixal3D
[3]です。どちらも3D表現自体がO-Voxelという離散的なボクセル格子であるため、裏側まで形状が自然に保たれ、色も高解像かつ正確に割り当てられました。なかでもPixal3Dは、TRELLIS.2をベースに、画像のピクセルを3Dへ対応づける仕組みを加えたモデルで、下図の通り入力画像をより忠実に再現できます。ただし立体形状の再現は、犬の例のようにTRELLIS.2が優れる場合もあったため、両方のモデルでボクセルを出力し、ユーザーの好みで選べるようにしました。
Phase 2:3Dボクセルモデルを平面図案に分解する
Phase 1で生成したボクセルを、平面パネルの図案へと分解します。
私自身、立体アイロンビーズ制作は初めてだったため、Claude Codeに複数の立体作品の図案を分析してもらい、組み立て方が大きく2通りに分類できることを把握しました。
・ 箱組み型
ボクセル内部に、中空の直方体を配置します。そこからはみ出す部分は、直方体の6面のうち最も近い面へ追加層として振り分けます。各追加層は、支柱を用いて直方体に接合します。
・ 積層型
ボクセルを「層の積み重ね」として捉え、断面ごとに分解します。各層は、櫛状の軸で連結します。
次に、箱組み型・積層型それぞれの分解フローを体系化しました。具体的には、まず下図に示す目標をClaude Codeに与えました。そのうえで、各ボクセルを、箱組み型なら「直方体・支柱・追加層」へ、積層型なら「軸・層」へ割り当て、平面パネルへ切り出すフローを組み立てていきました。
開発は、実験を回しながら少しずつコードを改善していく形で進めました。Kaggleの実験管理を参考に、実験をフォルダごとに分け、方針はmdファイルに記録、分解結果は下図のようにHTML上で立体的に目視確認できるようにしました。この仕組みのうえで、Claude Codeの提案や自分自身で見つけた改善点をもとに、条件やフローの修正を何度も繰り返し、分解の精度を高めていきました。
デモンストレーションと完成品
こうして開発したアプリケーションがこちらです。
そして今回、この犬のPixal3D・箱組み型の図案をもとに、実際にアイロンビーズで制作してみました。
まず、図案をもとにビーズを並べ、アイロンをかけます。全パネル合わせて3000個以上のビーズが必要だったため、かなり地道な作業でした。
次に、開発したUIで完成イメージを確認しながら、直方体を組み、内部に支柱を通し、そこへ追加層を差し込んでいきます。アイロンのかけ具合が難しく、パネルが反って歪んで見える箇所もありますが、これは私が初心者である証として認識していただけると嬉しいです。
こうして12時間かけて完成したものがこちらです。
ビーズの色は図案通りにせず、少しオリジナリティを出してしまったため、完成イメージとは違って見えるかもしれません。ですが、形そのものはボクセルのアウトプットに忠実で、可愛らしい犬が完成しました!
おまけとして、これまで登場した犬やクロワッサンといった実写画像に限らず、キャラクター画像を入力した場合の仕上がりもお見せしたく、架空のキャラクターでも生成してみました。
さいごに
今回は、編み物とは異なり、完成イメージや図案とのずれが生じにくいアイロンビーズを対象にしたことで、非常に満足のいく結果になりました。AIを通じて「できなかったことができるようになる」という純粋な喜びを味わえた、貴重な経験でした。
私たちAaaS Tech Labは、ビジネス領域でのデータサイエンス活用にとどまらず、メディアやコンテンツ開発へのAI技術応用にも取り組んでいます。少しでも興味を持ってくださった方は、ぜひお気軽にcontactからご連絡ください。