人物構成に使う髪型ライブラリをどう作っているのか

 

髪型をライブラリ化しようとすると、顔パーツとはまた違った難しさがありました。

 

ひとまず、女性版の髪型を先に作っているのですが、女性の髪型はもう千差万別。

100人いたら100パターンあると言っても過言ではないくらい、女性の髪型って色々ありますよね。

 

男性なら、ショート、ミディアム、ロングの3パターンくらいで大別できるけど、女性はそうはいかない。

「ショート」「ボブ」「ロング」「ゆる巻き」といった髪型名だけを並べても、それだけでは髪型を十分に指定できません。

 

同じロングでも、髪の長さ、カット構造、前髪、分け目、顔まわり、ボリューム、巻き方、毛先などの組み合わせによって、見た目はかなり変わります。

 

さらに、髪を結んだり編んだりするとなると、「その長さでその髪型が物理的に作れるのか」という問題まで出てきます。

今回は、AI人物構成研究所で使っている髪型ライブラリを、どんな考え方で作っているのか紹介します。

 

髪型名を並べたライブラリではない

最初に押さえておきたいのは、このライブラリが「髪型の名前一覧」ではないということ。

たとえば「ロングのゆる巻き」とだけ書いても、かなりの部分を生成AI側の判断に任せることになります。

 

  • 前髪はあるのか
  • 分け目は中央なのか、横なのか
  • 髪は胸上までなのか、胸下までなのか
  • 顔まわりには段差があるのか
  • 根元はタイトなのか、ふんわりしているのか
  • 巻きはどこから始まり、毛先はどう終わるのか

 

こうした要素が未指定のままだと、最終的には生成AIが「それらしい髪型」を補ってしまい、それは生成AIの考える「いい感じの髪型」に収束してしまう。

そこで現在の髪型ライブラリでは髪型を複数の構成要素へ分け、それぞれを個別に決める方式にしています。

 

それぞれの要素はこちらで一つずつ選んでいるわけではなく、基本的には乱数を使って候補から抽選しています。

髪の長さ、カット構造、前髪、分け目などを順番に抽選し、その結果を組み合わせて一人分の髪型を構成します。

 

物理的に成立しない組み合わせまで無条件に抽選するわけではなく、先に決まった条件から成立可能な候補を絞ったうえで、その中から抽選します。

髪型名を並べたライブラリではない

 

まず髪の長さと基礎カットを決める

通常の髪型を作る場合、最初に決める重要な要素が髪の長さ。

 

現在は、ショート、ショートボブ、ボブ、ミディアム、セミロング、ロング、スーパーロングの7区分に分けています。

ただし、「ロング」と決めて終わりではありません。

 

同じロングでも、胸上部の直下なのか、胸中央なのか、胸下部なのかまで具体的な到達位置を別に決めます。

 

その次に、髪全体の土台になるカット構造を決定。

ワンレングス寄り、丸みシルエット、標準レイヤー、ハイレイヤー、シャギーレイヤー、くびれレイヤー、ウルフ、前下がり、切りっぱなしなど、髪全体の段差や重心を決める部分です。

 

つまり、「長さ」と「髪の切り方」を最初から一つの髪型名としてまとめず、別々の要素として持っています。

 

女性髪型サンプル
サイドパートのショートボブ

 

女性髪型サンプル
編み込みアップスタイル

 

女性髪型サンプル
低めのポニーテール

前髪や分け目も別々に決める

前髪も一つの独立した要素です。

 

前髪なし、長め流し前髪、軽めの斜め前髪、重めの流し前髪、カーテン前髪、かき上げ前髪などを別候補として持っています。

さらに、前髪とは別に分け目も決めます。

 

センターパート、センター寄り、6対4、7対3、8対2、明確なサイドパートといった具合です。

左右差がある場合は、人物を正面から見てどちら側に分け目を置くのかまで別に確定します。

 

前髪と分け目を一緒にしてしまうと、組み合わせの幅がかなり狭くなります。

そこで、矛盾しない組み合わせだけを残しながら、それぞれ別の要素として扱っています。

 

下ろし髪とアレンジ髪で途中から分岐する

髪型ライブラリで特に複雑になったのが、髪を下ろした状態と、結んだりまとめたりした状態を両方扱うことでした。

 

通常構成では、共通部分を決めたあと、下ろし髪とアレンジ髪へ分岐します。

 

下ろし髪の場合

下ろし髪では、中間部分の質感や巻き方、毛先の処理、髪を耳にかけるのか、肩の前へ流すのかといった配置を決めます。

 

質感についても、ストレート、自然なうねり、ゆるい波状ウェーブ、大きめゆる巻き、ミックス巻き、外巻き、縦巻き、波巻きなどを分けています。

毛先も、自然に整える、内向き、内巻き、外ハネ、ワンカール、シャギー毛先などを別項目として持っています。

 

アレンジ髪の場合

アレンジ髪では、さらに項目が増えます。

 

ハーフアップ、ハーフツイン、ポニーテール、ツインテール、シニヨン、フルアップ、クリップアップ、編み下ろしなどから主構造を決めます。

そこから固定する高さ、左右の配置、編み・束構造、自由に残る毛束の長さ、巻き方、まとめ部分の仕上げ、後れ毛などを順番に決めていきます。

 

こうなると、もはや「髪型候補一覧」というより、小さな髪型生成システムに近いです。

 

何でも自由に組み合わせるわけではない

各要素を完全に自由に組み合わせているわけではありません。

髪型には、どうしても物理的に成立しない組み合わせがあるからです。

 

たとえば、短いショートヘアを全量使って高いポニーテールを作ることはできません。

短い髪で、長さを必要とする大きな編み下ろしを作るのも無理があります。

 

そこで髪型ライブラリでは、先に決まった長さやカット構造などから、「この条件なら成立する候補」だけを残す仕組みを入れています。

アレンジ髪では、髪の具体的な長さ位置、カットによる短い層、高さ、左右配置なども含めて、髪が固定位置まで届くかを機械的に判定しています。

 

ここで重要なのは、「普通はやらないから」「似合わなさそうだから」という理由で候補を外しているわけではないことです。

除外するのは、長さが足りない、構造上同時に成立しない、といった条件がある場合です。

 

珍しい組み合わせでも物理的に成立するなら候補として残します。

 

何でも自由に組み合わせるわけではない

 

「似合う髪型」はAIに選ばせない

これは顔パーツと同じで、髪型も「その人物に似合うかどうか」で決めていません。

 

顔、年齢、髪色、メイク、衣装、体型などを見て、「この人ならこの髪型が似合いそう」と後から調整することは基本的にしません。

それをやると、結局は無難で一般的な組み合わせへ戻っていきやすいからです。

 

派手だから、古いから、個性的だから、年齢に合わなさそうだから、といった理由でも候補を外しません。

物理的に成立する候補の中から抽選し、その結果をその人物の髪型として採用する。

 

この考え方で運用しています。

 

年代固有の髪型は別枠で用意している

一方で、すべての髪型を細かいパーツの組み合わせだけで作っているわけではありません。

 

現在のライブラリには、通常構成とは別に「年代固有プリセット」というモードがあります。

たとえば、80年代アイドル風のボリュームヘア、平成初期のブローミディアム、当時らしいワンレンやレイヤーロング、立ち上げ前髪などです。

 

あーこんな髪型流行ったなぁ、ってある程度年齢が上の方が見れば懐かしさを感じる髪型。

いわゆる「聖子ちゃんカット」も、この年代固有プリセットに入っています。

 

こうした髪型は、前髪、ボリューム、カット、巻き方などをバラバラに再抽選すると、元の年代感が崩れて現代的な髪型へ変わってしまうため、プリセットにしている背景があります。

年代固有プリセットには、80年代から平成期を中心とした髪型を26種類登録。

 

現行では、通常構成モードが85%、年代固有プリセットモードが15%です。

年代固有プリセットが選ばれた場合は、通常構成の各項目で上書きせず、そのプリセット内部で必要な長さや左右方向などだけを抽選します。

 

全部を分解するのではなく、まとまりとして残した方がいい髪型は、まとまりとして管理するわけです。

 

年代固有の髪型は別枠で用意している

 

候補名だけでは画像生成AIに渡さない

もう一つ、このライブラリで重視しているのが、最終的な文章化です。

 

抽選結果が、

 

「ロング」

「ウルフ」

「斜め前髪」

「ゆる巻き」

 

だったとしても、その単語を並べただけでは完成にはしません。

 

髪のどの部分がどこまで伸びているのか、前髪がどの方向へ流れるのか、顔まわりの段差がどこにあるのか、巻きがどの位置から始まるのか、毛先がどう終わるのかまで、一つの髪型として文章につなげます。

 

現在のプロフィールでは、「確定した項目の一覧」と「それらをつないだ髪型の具体描写」の両方を残す形にしています。

ライブラリ上では細かく分解して管理し、画像生成AIへ渡す段階では、一人分の完成した髪型として読める文章へ戻す。

 

この往復が必要だと考えています。

 

顔パーツとは違う難しさがある

顔パーツライブラリでは、基本的には各項目を独立して選ぶことができます。

一方、髪型はそう単純ではありません。

 

髪の長さによって可能なアレンジが変わり、カット構造によって固定位置まで届く髪の量も変わります。

 

前髪と分け目にも成立条件があります。

結んだ後に残る毛束の長さによって、可能な巻き方も変わります。

 

そのため、髪型ライブラリは「候補をたくさん用意する」だけでは成立しません。

候補同士をどこまで自由に組み合わせるのか、どこから条件を付けるのかまで含めて設計する必要がありました。

 

作り始めたころは、ここまで大げさな仕組みにするつもりはなかったんですけどね。

気付いたら髪型だけで、かなり巨大なライブラリになっていました。

 

まとめ

現在の髪型ライブラリは、完成した髪型を一つ選ぶための一覧表ではありません。

 

髪の長さ、カット構造、前髪、分け目、顔まわり、根元、ボリューム、厚み、巻き、毛先、配置、アレンジなどを組み合わせて、一つの髪型を構成するための仕組みです。

そして、物理的に成立しない組み合わせだけを機械的に除外し、「似合う」「無難」といった判断では候補を補正しないようにしています。

 

さらに、通常の分解方式だけでは残しにくい年代特有の髪型については、別枠のプリセットとして管理しています。

顔パーツライブラリとはかなり違う構造になりましたが、「AIに全部決めてもらうのではなく、人物を構成する要素をこちらで管理する」という考え方自体は同じです。

 

次は、この髪型ライブラリ本体を公開用に整理して、実際にダウンロードできる形にする予定です。

おすすめの記事