DIY一個人工智慧珠寶設計師v1.0
來自專欄人工智慧+設計 修鍊指南
今天mixlab以社區的方式,完成第二篇『人工智慧珠寶設計師』方向的文章。本文通過『科技珠寶』為切入點,介紹了目前科技賦能珠寶的技術及案例,然後結合傳統的珠寶設計製作流程,帶大家DIY一個人工智慧珠寶設計師,從技術棧、demo代碼、產品設計等等內容一一道來。
作者們:
shadow、DANA、Juntao、Fangyex
shadow
機器學習研究員/NodeJS全棧/產品經理/設計&技術顧問/寫文章的/……
DANA
CMO/珠寶鑒定師/珠寶設計師/創業者
Juntao
零售及消費品行業諮詢顧問/數據分析/創業者/
Fangyex
UX設計師/Creative coder
--以上排名不分先後--
1 科技與珠寶
用戶的個人數據獲取越來越容易,隨著消費者個性化定製需求的覺醒,3D列印、納米微雕等技術的成熟,融合科技的珠寶有了更多的可能。本節介紹納米微雕、心率檢測技術、聲波、3D列印等4個科技應用於珠寶的案例。
1.1 納米微雕
抖音帶火VENTI愛的記憶,獲贊百萬成表白神器。
這款項鏈運用納米微雕技術,將100句不同國家語言的「我愛你」雕刻於產品中,藉助光源投射即可看見其中玄機。
1.2 心率檢測技術
恆美廣告(DDB)香港集團推出的名為「Crafted By My Heart」的戒指定製App,利用健身App最喜歡的心率檢測技術和3D列印技術,它能把你撲通撲通的心跳紀錄下來,刻成一隻實實在在的戒指。
體驗流程:
1 選擇款式
2 記錄心率
3 生成珠寶
4 下單生產
1.3 聲波可視化
日本創意公司Encode Ring將三秒的短語轉換成聲波,再將聲波的樣子做成「聲紋戒指」。將語言變成有形的記憶,讓你完美地把聲音戴在身上,不怕遺忘,也饒富創意。
來源:https://encodering.com/
再看一個案例,一名舊金山設計師,昵稱10DotMatrix。她發明了一種採用3D擬聲形式製造飾品的方法。用開源軟體抓取某個單詞的聲波特徵,然後進行轉化,製作出飾品的數字模型,最後用3D印表機把它列印出來。
還有另外一個案例是KAESL初創公司推出的珠寶產品 「 Avoice for love 」。為愛發聲,如其名所意,利用人工智慧技術將表達愛的美妙話語或音樂,智能化地融合在珠寶的設計過程中,詳見《人工智慧珠寶設計師01》
1.4 3D列印
3D列印為珠寶設計帶來了技術的語言與革新,可以實現以前很難生產的複雜形態,例如動物表皮的模仿之類的,還有上面提到的很多例子,也都是依靠3D列印實現的。2 珠寶設計傳統製作工序
前面介紹完科技珠寶相關的案例及技術,我們想要實現人工智慧珠寶設計師,必須對傳統的珠寶設計8道工序有所了解,才能把我們的想法完美的通過技術實現。
2.1 設計
設計師需要客戶或自己的創意靈感手繪出設計草圖,並以此為藍本,不斷修改,最終呈現以精確尺寸的設計圖。
2.2 起版
根據珠寶設計圖製作珠寶模板,分為手工雕蠟起版和電腦CAD起版。
手工雕蠟起版,需要有經驗的工匠,耗時長。是採用浮雕的技法直接用雕蠟方法製造出首飾原形,主要適用於造型特殊複雜的珠寶,如花草,動物造型等。
電腦CAD軟體繪圖,現在大部分珠寶都採用的方法。可以大大提高設計效率和精度,CAD繪製後還可以直接用3D列印,列印出蠟模或膠膜。
2.3 倒模
倒模即是獲得珠寶的基本雛形,需要先種「蠟樹」,將上一步起版的多個蠟模種在「蠟樹」上,以便一次性鑄造出來。通過灌石膏、烘焙石膏、澆鑄金熔液,石膏模炸洗及清洗等一系列工序,最後獲得「蠟樹」上各個金鑄件,剪下後就得到一個個金版。
2.4 執模
對金版(珠寶毛坯)進行精心修理的工序,需要對珠寶金版鑄件進行整形、修挫、焊接、打磨等,針對首飾的不同部位,利用不同工具對其進行修整。2.5 鑲嵌
鑲嵌流程主要包括寶石的選擇(配石)、車石(打磨寶石)、鑲嵌三個步驟。要將主石、配石固定在各自的鑲口上,這是一個非常重要的精密工序。鑲嵌的工藝也極其講究,會根據不同寶石的特點,選擇不同的鑲嵌工藝。
2.6 拋光和表面處理為確保金屬表面光澤,需進行拋光。拋光後使用激光鐳射機在指定位置進行刻字工序,一般珠寶上需要刻印:
金的成分,如Au750,代表18K金,S925代表925銀等;
寶石的品種和重量,如D1.01ct,重1.01ct的鑽石和品牌標記等;
還可以刻印客戶自定義的字母或符號。
將製作好的珠寶首飾,逐個進行精細檢驗,包括檢查每個鑲爪和鑲口的工藝質量,檢查每一件成品的外觀、結構及表面,從而確保質量的合格,品質過關。
2.8 出具證書
最後將珠寶首飾送至相關的檢測機構進行鑒定,出具證書。
3 人工智慧珠寶設計師的技術框架
上文介紹了科技珠寶及傳統的珠寶設計流程。人工智慧應用於設計,主要是模擬設計的思維活動,之前mixlab已經對各領域的人工智慧設計師相關的技術、案例進行了研究及DIY,本次借珠寶設計內容準備的機會,重新把人工智慧珠寶設計師的體系、技術、示例代碼等一一梳理。回到珠寶設計領域,由於是直接面對消費者,我們會考慮顧客的個人喜好,結合製造工藝等內容,尋找一種珠寶的最佳形態,這也是人工智慧珠寶設計師技術框架的前提條件。
人工智慧珠寶設計師同時也是一種新型個性化電商產品,主要流程:輸入+生成+微調+下單。在輸入上,有2種方式可選,一種是以繪畫的方式,用戶自己控制,隨意創作;另一種則是利用攝像頭或聲音等採集個性化數據,例如聲音數據、身高、體重、心率等作為輸入方式。
3.1 輸入數據
使用人工智慧,第一步要模擬的是如何使用機器獲取用戶的個人喜好數據。
方式1
通過聊天機器人技術,與用戶交流獲取用戶的喜好;
方式2
如果有數據支持,通過個性化推薦的方式預測用戶的喜好,作為輸入,也是可行的方式;
方式3
使用人體數據作為輸入,例如心電圖、聲波、體重身高等數據。
方式4
讓用戶通過手繪的方式,描繪心中的珠寶作為輸入。
3.2 結構化的設計數據
根據輸入方式,搜索到諸如材質、符號、重量等相關的結構化的設計數據,作為設計引擎的輸入,例如黃金、四葉草、10g等。其中方式4,我們可以參考通過手繪匹配3d模型的案例實現。
3.3 3D設計引擎
珠寶設計引擎,可以直接對接至3D列印的,實時渲染,供用戶實時觀看結果,並微調設計。
3.4 知識庫
預先訓練好珠寶的知識庫,可以是圖譜,或者其他結構化數據的形式。在系統實際投入使用過程中,不斷根據用戶對系統的使用情況,更新迭代知識庫。
一個知識庫的例子:
材質:黃金、玫瑰金、銀飾、綠寶石、紅寶石、……
符號:四葉草、心形、星形、月亮、水滴、十字架、聲波、字母、……
模型生成演算法:四葉草演算法、心形演算法、……
其他……
4 人工智慧珠寶設計師的相關技術棧
主要涉及聊天機器人、個性化推薦、sketch-RNN、CNN圖像分類、參數化設計、三維引擎、數據可視化等技術。
4.1 聊天機器人
微軟的小冰,蘋果的Siri都是這一技術的代表產品,目前大部分聊天機器人,可以做到簡單問題的回答、查詢天氣、查看新聞、查詢航班、給用戶講笑話、推薦菜譜、查找圖片等通用型問題。
4.2 個性化推薦
我們可以通過爬取珠寶電商的購買數據及對應的用戶信息,構建一個基於用戶信息的珠寶推薦系統。例如我們可以通過爬取小紅書上關於六福珠寶的用戶日記數據,挖掘最受歡迎的款式,作為爆款,優先推薦給我們的系統用戶。
4.3 sketch-RNN
谷歌開源的sketch-RNN,利用RNN,自動補全手繪圖為珠寶造型,降低用戶的繪畫成本,並匹配合適的3D珠寶模型供用戶選擇。谷歌的autodraw就是繪畫方面的自動補全工具,3D珠寶模型方面暫時沒有看到很合適的案例,比較接近的是通過手繪生成3D世界的例子。可參考的方式:
https://worlddraw.withgoogle.com/drawsketch-RNN,作為一種工具,可以幫助我們提高對創造性思維過程的理解。
4.4 CNN圖像分類
CNN圖像分類已經非常成熟了,我們可以基於遷移學習,用於提取珠寶的設計風格,把珠寶圖像的特徵抽象出來,集成到我們的系統里。另外一個應用就是用於處理聲波等數據可視化後的數據,把特定的聲波歸類到對應的結構化的設計數據上。
4.5 手機心率檢測技術
引自論文《Validation of heart rate extraction using video imaging on a built-in camera system of a smartphone》。
4.5.1
手機攝像頭記錄手指末端因心跳造成的細微顏色變化
4.5.2
取出每幅畫面的中心區域(降低計算量和非中區域的干擾)
4.5.3
計算中心區的平均紅色分量值,作為特徵值
4.5.4
將每幅畫面的特徵值,按時間序列繪製成連續圖像
4.5.5
使用FFT快速傅里葉變換(找出係數最大的分量的頻率f),f*60就是這段信號反映出來的平均心率數。
4.6 聲音數據可視化
此部分主要是利用瀏覽器的 Web Audio API , 推薦使用tonejs庫。查看官網示例,即可感受。
EXAMPLES還可以結合THREE.js做一些更酷炫的可視化~
4.7 參數化設計
參數化設計方法就是將模型中的定量信息變數化,使之成為可以任意調整的參數。在參數化設計系統中,設計人員根據工程關係和幾何關係來指定設計要求,稱為約束關係。
參數化設計 F(x):
F 的構建可以是規則,也可以是數學公式,甚至可以用深度學習來構建。
參數化設計有一個重要分支,就是數據驅動型的設計。數據驅動的設計方式主要是通過3d模型的生成,在模擬環境里根據數據的反饋,從而不斷修正設計,過程也是適用於強化學習的介入。
有個很典型的案例,一家位於洛杉磯的初創公司Hack Rod製作的一個具有幾何結構的汽車底盤,並將數百個感測器安裝到汽車和司機身上,在測試過程中感測器所捕獲到2000萬個關於汽車結構和作用力的數據點,這些數據可以反映影響汽車和司機的物理力量究竟是什麼,然後通過autodesk的Dreamcatcher重新生成新的底盤設計。一旦最終設計被選定,它會被移交給autodesk的Design Graph。Design Graph是一款機器學習搜索應用,它會為每一個虛擬零件提供建議使得零件符合真實汽車製造標準。
在整個底盤設計過程中,通過人工智慧構建、虛擬現實設計、3D列印製造的流程能極大降低了汽車生產的時間和預算成本。
4.8 THREE .js三維引擎
由於是面向消費者的,因而比較理想的應用環境是基於web的,我們可以採用 threejs 生成三維模型,實時渲染,提供給用戶調整設計的參數面板。可供用戶調整的參數面板可以使用dat.GUI 組件,快速地進行原型開發。
dat.GUI 是一個輕量級的圖形用戶界面庫(GUI 組件),使用這個庫可以很容易地創建出能夠改變代碼變數的界面組件。結合threejs的使用,方便我們試驗我們的3D模型生成參數。
4.9 3D列印
3D列印是一場顛覆性的工業技術革命,無論是《中國製造2025》還是《工業4.0》,3D列印都備受矚目。 有了3D列印,大規模的個性化定製就不再是難題。3D引擎生成的文件格式需支持STL格式,因為STL已經成為3D列印標準的數據格式。Threejs 是支持STL格式輸出的。
STL文件格式(stereolithography,光固化立體造型術的縮寫)是由3D SYSTEMS 公司於1988 年制定的一種為快速原型製造技術服務的三維圖形文件格式。STL不同於其他一些基於特徵的實體模型,STL用三角形網格來表現3D CAD模型,只能描述三維物體的幾何信息,不支持顏色材質等信息。
5 demo代碼
以上介紹完各項技術,我們在demo部分選取了最核心的內容,例如threejs複雜幾何體的生成。其他更詳細的內容我們會在活動當天進行交流,一起學習相關的技術。
threejs的模型,除了手工建模導入之外,還有一種是通過代碼來自動生成的,也是人工智慧珠寶設計師的核心技術。我們在這裡給大家demo下自動生成更加複雜、不規則、參數化的幾何體的代碼。
5.1 擠出與車削
這一類方法實際上使用過三維軟體的人都會很熟悉。它們都是用以一個基礎的二維形狀輪廓,在三維空間中構成物體。車削的原理如圖所示:
擠出的原理如下圖:
它們的使用方法都可以直接查詢 Three.js/docs 官方文檔,上面有詳細的API可以遵循使用。
利用下擠出生成字母項鏈:
這兩種方法,生成的幾何體還是屬於「規則」的幾何體。如果想要做點不規則的幾何體,可以繼續往下看。
5.2 修改頂點數據
在Threejs的實現中,幾何體實際上是分成三層結構的。
第一個層級叫做DirectGeometry,它是最底層的幾何體信息。
第二個級別叫做BufferGeometry,它的內部保存一個叫做attributes的容器,了解著色器就會知道,這個attributes中的數據將直接在渲染中被傳入著色器中。
第三個級別叫做Geometry,它是以我們人類的視角去描述一個幾何體的方式,比如一個BoxGeometry就是一個Geometry的子類,保存如長、寬、高、分段等等描述信息。
我們用一個簡單的例子來描述一下幾何體在Three內部的構建過程。創建一個幾何體通常需要一條命令比如:
var geometry =new THREE.BoxGeometry(10,10, 10);
如果使用瀏覽器的console去調試和查看,可以看到這種附屬關係:
THREE中的幾何體都會保存著一個叫做vertices的數組,這個數組中裝載著這個幾何體所有的頂點位置信息。那麼在必要的時候,我們其實可以直接操作這個數組來進行幾何體的形狀變化。
我們先構建一個十二面體:
var pointsGeometry = new THREE . DodecahedronGeometry ( 10 );
然後,我們可以通過更改vertices來改變形狀:
// 每個頂點的坐標隨機地增減一定的幅動 for ( var i = 0 ; i < pointsGeometry . vertices . length ; i ++ ) { pointsGeometry . vertices [ i ]. add ( randomPoint (). multiplyScalar ( 2 ) );}
改變前後的效果如圖:
雖然看上去很雜亂,但其實如果結合其他用法,可以做出一些有趣的東西。請繼續往下看。
5.3 MorphTargets
了解了上面的方法原理後,就可以使用Three給我們的另一個強大的方法:MorphTargets。
如果看一下所有幾何體的基礎父類Geometry,會發現它包含這樣兩個數組:morphTargets和morphNormals。先說morphTargets,它保存了一系列的「頂點狀態」,比如下面這張圖:
其中,對於同樣一個立方體來說,可以通過設定不同的頂點位置,來設定不同的morphTarget。 以Three的官方示例( examples/webgl_morphtargets.html )舉例來說,我們可以先創建一個基礎立方體:
var geometry = new THREE . BoxGeometry ( 100 , 100 , 100 );
然後我們保存八個morphTarget狀態,每個morphTarget依次代表立方體的一個頂點處於的一種狀態,見下面代碼:
for ( var i = 0 ; i < 8 ; i ++ ) { var vertices = []; for ( var v = 0 ; v < geometry . vertices . length ; v ++ ) { vertices.push ( geometry . vertices [ v ]. clone () ); if ( v === i ) { vertices [ vertices . length - 1 ]. x *= 2 ; vertices [ vertices . length - 1 ]. y *= 2 ; vertices [ vertices . length - 1 ]. z *= 2 ; }} geometry . morphTargets . push ( { name : "target" + i , vertices : vertices } ); }
接下來,我們使用剛剛創建的具有morphTarget屬性的幾何體來構造一個mesh:
mesh = new THREE . Mesh ( geometry , material );
那麼,我們就可以通過這個mesh的morphTargetInfluences屬性來控制立方體的形變,比如
mesh . morphTargetInfluences [ 0 ] = - 0.3 ;
這樣,就可以動態控制立方體的形狀:
基於這個方法,可以做出很多有意思的東西,比如我們可以創建一張網格網格面片,然後,我們利用morphTarget讓這個面片可以來回「抖動」:
然後,我們只要在弄出兩個這樣的面片,為它們附上材質,就可以做出抖音風格:
其他的實現方法可查看 mixlab 往期發布的《用代碼生成Glitch Art風格的抖音字體》文章。
5.4 參數化幾何體
Three留給了我們參數化幾何體的方式。其方法為一個叫做ParametricGeometry的幾何體。它的使用方式可見官方API:
var geometry = new THREE . ParametricGeometry ( function , 25 , 25 );
如果我們修改一下參數化函數,比如我們讓每個頂點的z坐標與x坐標和y坐標產生一些關係。
還有這種類型的曲面:
5.5 直接生成BufferGeometry
除了前面介紹的方法,我們還可以更加「自主」一些地定製幾何體。這就是自定義bufferGeometry。這個方法需要我們「自行」生成一個幾何體的所有頂點數據,包括每個頂點的位置、法線向量、頂點顏色、uv信息。下面舉例介紹一下這種方法。
首先需要創建一個bufferGeometry:
var geometry = new THREE . BufferGeometry ();
然後我們可以使用任意一種隨意的方式,把我們想要的幾何體頂點數據先生成出來,比如:
// 生成頂點位置數據 var positions = [ p1 . x , p1 . y , p1 . z , p2 . x , p2 . y , p2 . z , ... ] // 生成頂點顏色數據 var colors = [ p1 . r , p1 . g . p1 . b , p1 . a , p2 . r , p2 . g . p2 . b , p2 . a , p3 . r , p3 . g . p3 . b , p3 . a , ... ]
然後,我們需要將這兩個數組作為參數,轉化為Threejs的類型緩衝數組,當然也是使用Three的方法:
var positionAttribute = new THREE . Float32BufferAttribute ( positions , 3 ); var colorAttribute = new THREE . Uint8BufferAttribute ( colors , 4 );
接下來,還需將這兩個類型數組添加到我們之前創建的空的BufferGeometry中:
geometry . addAttribute ( position , positionAttribute ); geometry . addAttribute ( color , colorAttribute );
這樣,就可以像使用其他Geometry那樣來使用這個幾何體了:
var mesh = new THREE . Mesh ( geometry , material );
如果結合THREE提供的自定義著色器類型THREE.RawShaderMaterial,那麼可以創造出比較有趣的生成藝術,比如最近很流行的漸變顏色風格:
demo部分有很多代碼都沒法在一篇文章里詳細說明,更多詳盡的內容,我們將在活動過程中進行分享。
6 珠寶+跨界的複合型產品設計mixlab的價值觀是跨界·開放·學習·互助,我們追求以各種跨界的可能創造新產品。珠寶在注入科技屬性後,還可以與各領域結合,比如與建築,建築師可以以某種建築元素進行珠寶設計,著名的建築大師扎哈設計的寶格麗B.zero1系列珠寶,是一個例子。從舉世聞名的競技場——羅馬斗獸場中汲取靈感,以其獨特的風格、極致的設計顛覆了傳統珠寶的審美準則,也成為寶格麗標誌性設計作品。
——盧梭《愛彌兒》:
「最好的教育就是無所作為的教育:學生看不到教育的發生,卻實實在在地影響著他們的心靈,幫助他們發揮了潛能,這才是天底下最好的教育。」
結合mixlab基於學習的思考,珠寶還可以與教育結合,為中小學生開發教育課程,通過珠寶開啟研究自然科學的大門,提高藝術素養,掌握珠寶鑒定、手繪技能,學習如何把自己腦海中「異想天開」的創意繪製出來,並動手製作為立體的珠寶首飾成品,同時還能學會時尚搭配美學,提升審美品位。
當然,珠寶還有更多的跨界的可能,比如跟音樂結合、跟品牌結合(mixlab的定製珠寶)、珠寶類的遊戲等等。
在我們活動當天,mixlab給大家提供了舒適的環境:
我們一起找到最好玩的 IDEA !~
活動鏈接地址:
MIX大學-DIY人工智慧珠寶設計師推薦閱讀:
※那些生肖郵票背後的設計師
※能為設計師男友做點什麼?
※跟著設計師學挑選掛畫,你家也會好看得不像話
※設計師的面試思路—近期面試小記