1. 程式人生 > >專案工作總結——人臉建模方法研究

專案工作總結——人臉建模方法研究

  這次的專案是結合3D技術做出人臉識別,首先的工作就是了解3D模型,為此,這一階段的任務就是利用程式作出3D模型並研究3D模型的特點。

  我的階段任務分為兩部分:一.考察3D建模對2D素材的要求;二.儘可能多的嘗試已有的建模方法。

 

一.建模的圖片要求

  關於這方面,確實不好說,我查過了一部分資料,主要為別人的部落格,和部分官方對旗下的產品的說明,有幾個基本點是共同的:

  對於物體:

  1.物體不能移動(這個就是廢話了。。。。)。

  2.物體不要有大量的反射,也不能是半透明。因為光的顏色和亮度在不同角度看是不一樣的,會影響到建模,,它可能把光線也算作一種“物體”。

  3.物體最好不要只有一種顏色,照片建模軟體很難重建純色的物體。

  4.非常薄的物體。軟體生成點雲時,當拍攝物的一個面非常薄,軟體沒有辦法在上面找到足夠多的點並計算出它的形狀。此外,沿著薄片的長度方向搜尋點也十分困難。

    5.縱橫交錯的物體。由於軟體在照片之間追蹤同名點,縱橫交錯的物體會導致軟體遺失很多在某張照片上搜尋出的點。特別是那些看起來非常相似的縱橫交錯的物體,比如樹上的樹葉,軟體無法確定某個點到底是前一張照片上位於遠處的同一個點,還是另外一個點。

  還有燈光的要求,但是我只搜尋的大概是“合適”的燈光,怎麼個合適法。不知道

  對於相機。。。。。。emmmmm。。。。搜尋到一堆東西,但懂得不多,放連結吧(其實手機的傻瓜相機已經很不錯了):

      https://www.sohu.com/a/167977948_300353(這是詳細的,總體的說明)

  http://www.3dcloud.cn/bbs/forum.php?mod=viewthread&tid=161&extra=page%3D1(這是3Dcloud的論壇官方說明,嗯,大概是官方的,連結有放在建模說明裡,3Dcloud就是下面我建出來的鬼模型,用的那個建模方法)

  http://www.zbddd.com/forum.php?mod=viewthread&tid=122&extra= (以一個點為圓心,半徑要一樣,勻速轉動 ,這樣拍出來的照片,

在轉化模型的時候效果比較好)

二.建模方法

  剛開始有點蒙圈,老想著用現成的,就查了好多成熟的軟體(甚至是別人家成熟的建模軟體),姑且是說一下,展示下我這周沒偷懶(然而事實是。。。。我用的心確實不多):

  1.首先用的是一個國產的軟體,是一個深圳公司的,可以申請20天的免費使用,下載地址(官方):http://www.zwpix.com/gsjj.asp?id=18。不得不說,這公司真是個奇葩,第一次見(可能我軟體公司見少了吧)把自家產品掛在百度雲上提供下載的,當時看著沒開百度雲會員的條件下,限速的百度雲每秒不到100kb的下載速度,真的是崩潰。。。。棄了,棄了。

  2.大名鼎鼎的Autodesk 123D catch,這是是世界級的公司,就是有一點。。。。外國的,被牆限速了(人與人之間為什麼不能多一點真誠,這麼多限速),在艱難的開啟網頁,申請賬號,從一大堆公司推薦產品中找到123D catch就是已經夠煩人了。還好這是個免費軟體,可以免費使用,然後就發現自己太天真了。一堆的申請還等著你,同時你還被牆卡著,上不上,下不下。反正我是沒有一次填到最後,最後下的中國破解(盜)版,還只有win系統的,我這個mac使用者已經mmp了,去了機房還有更坑的。。。。這個單機版只能操作模型,要想2D圖片建模還是需要FQ登陸Autodesk公司的賬號,利用雲服務來合成。夠了,我想靜靜。。

  3.然後嘗試了一個3Dcloud,就是你在百度上輸入“照片建模”的第一個網址,成功居然離自己這麼近。然後就是喜聞樂見的註冊賬號,申請合成。雲服務,你需要傳照片給伺服器,由服務端替你完成工作,然後傳模型供你下載(我終於反應過來,好像有哪裡不對)。按照步驟一步步來囉,第一個模型就選宅男收藏品中的一個,高達,它大概長這個樣子

然後就是拍了大概30多張照片,50多M上傳,等了好一會(上傳是一段時間,建模又是一段時間大概5分多鐘,而且還是不算我前面還有一個等待任務)。

建出來的模型大概是長這個樣子:

。。。。。。。。保持微笑。。然後:這什麼鬼,我的高達怎麼建出來這麼個鬼玩意兒,這網站不是逗我吧。

然後看看別人建出來的:

好吧,可能第一部分,照片要求我白寫了。。

  除此之外,照片建模已經是一門很成熟的技術,現在網上有大量的現成軟體可以完成這個任務,方法大同小異,(從我等待3Dcloud時,網站給出的提示可以看出,都是包含了稀疏點雲,稠密點雲,生成網格等等的步驟),你甚至還能看到清華大學和美國的特拉維夫大學的研究學者寫出的根據一張照片建立模型的程式。不過上述大部分軟體都是成熟的,有商業價值,已經被應用於繪測,遊戲,建築等領域的商業軟體,換句話說就是這些都是別的公司的產品,已被封裝的程式,程式放在伺服器上,我們只能利用客戶端上傳資料,建模過程都是伺服器完成,我們接觸不到原始碼自然是不可能利用的(法律上也不會允許侵犯專利)。再附加一張3d模型建立和處理方面的軟體總結,是中科大教授的一篇介紹,介紹了超多超詳細,可以用來大致瞭解目前3D模型軟體的大致現狀:http://3dfun.com.tw/3dnews/3d建模與處理軟體簡介/

  

 

  然後我終於發現,我是要做的專案是要求對人臉建模,並用來進行認別,也就是必須有原始碼,可能還要根據具體需求更改程式碼功能,em。。。。。發現問題了,我現在做的測試沒什麼用頂多只是試試別人成熟的技術,瞭解到相關領域的現狀,對我們的專案編寫沒有太大幫助。中途調轉炮口,研究怎樣利用程式碼建模。

  首先第一類:別人寫好的元件和演算法,利用某些軟體來進行3D建模。(當然是開源的)

  這個目前的主流是VisualSFM(找出各張照片中的特徵點,進行兩兩匹配,根據匹配的結果,利用射影定理計算得到相機位置等場景資訊將場景資訊與原始照片結合在一起,得到照片中物體的三維點雲,以上即是SFM演算法建模)

          + CMVS-PMVS(建立稠密點雲)

          + Meshlab(進行網格處理,利用三維點雲建立三維模型)

  當然,還有利用openCV實現SFM演算法(大神專屬建模方法),上面的主流方法只適用於windows作業系統(用mac的我再次感受到世界深深的惡意),還有Bundler+ CMVS-PMVS和 Meshlab方法可以用在linux系統上,需要用linux系統的命令列來實現,據說成像效果最好(這和我這個冷酷的mac使用者有什麼關係呢。。。。),缺點是它只能建成一面,“我把物體四周都拍了,他就拆開,前後建在一面,我也是很惆悵。”——來自某個博主的話:https://blog.csdn.net/moneyhoney123/article/details/78318506(建模方法分析)

  

  最後,還是腳踏實地,踏踏實實的用程式碼寫建模吧。。。。才有鬼咧。我沒修計算機圖形學,這個專案也算事半道出家(也算別人可憐我),讓我從頭寫。。。。。估計專案交差事時我也寫不完,上github吧。網際網路時代還真是個好時代,共享概念深入人心,我也在github上找到了開源的人臉重建專案,可喜可賀,可喜可賀。。。信不信我掀桌啊,(╯°Д°)╯︵┴┴程式碼是用scale語言寫的。。。我個小白,玩鬼啊。

  不說了,都是淚啊,搞個建模搞的煩死了,目前在搭建scale環境,不知道Intellij IDEA能不能用,慢慢來吧。附上github上的原始碼地址:

      https://github.com/unibas-gravis/scalismo-faces

  https://github.com/AaronJackson/vrn

  https://github.com/unibas-gravis/basel-face-pipeline

 

 

    下面是我參考的一些不知道放哪裡的小資料,也順手附上吧:

    基於影象的場景三維建模:https://blog.csdn.net/gzq0723/article/details/79597650(照片建模過程及詳細演算法介紹)

    Autodesk 123D如何進行拍照:http://v.youku.com/v_show/id_XMzY0Mzg4ODA0.html(Autodesk 123D 的照片要求介紹,純英文,可以練練聽力)

     

  第一次正規的寫部落格(上次專案是黑歷史,已經丟進記憶的垃圾堆了),不知道怎麼寫才能完整的寫出我的專案階段彙報,寫到後面完全寫嗨了,寫到放飛自我,下次注意。另外這次部落格引用網址過多,完全是依靠別人的經驗來解決自己專案的問題,自身感悟過少,同樣,下次注意。這次的彙報,讓我清楚的認識到了自身基礎薄弱,各種能力(自學能力,利用網路的能力)欠缺,以後會注意補正。