由于上个月要准备考试,大部分精力都放在复习上面。而在这段期间,人工智能AI技术还在不断的发展,而且领域也扩展的越来越广。从一开始的图片生成到后来的大语言模型文本生成,现在已经发展到了生成3d模型的阶段。
当然现在还只是初期,百花齐放,那些生成的模型效果和人类的建模高手相比,还是差距很远,与实用化的水平也有差距。但是如今的2d图片AI生存已经可以吊打普通的美术从业者了。如果假以时日AI的3d模型生成,也必将达到或者超越人类专家级的水平。
任何艺术都有从必然王国到自由王国的一个转变过程。Ai在实现3d创作的成果之前,也必然会经过一个参照实物建模的阶段。而在最近一种通过相片和视频进行3d重建建模的技术引起了我的注意。这个技术叫做高斯溅射。
高斯溅射的基础原理,我还没有搞的太清楚。目前知道的就是它是一种不同于常见的,比如我们在电子游戏或者blender这样的3D建模软件中创建的多边形3D模型。它的模型是一组点云由顶点构成的云雾状的东西。每一个顶点都具有很多属性,如从不同角度看过去应该显示什么样的光影之类,这些属性又是按高斯分布在顶点的周围。
而且与普通的它的模不同,一般的AI,在其中发挥核心作用的,都是神经网络。而高斯溅射中并没有神经网络,或者说这个用来重建物体模型的点云就是神经网络,然后它的建模过程与AI训练过程几乎是一样的,都是与人类给出的图片对比不断的调整每个顶点的高斯参数,最终获得和图片相似的视觉效果。当然同一样东西从不同的角度看上去是不一样的。所以这个图片数据集也必须包含位置和角度。
当然,光看理论终究是纸上得来终觉浅,还是要亲自实践一下。好在现在软件都比较完善了,唯一需要的就是一个有比较强算力的GPU。不过谷歌的colab的免费版也已经够用了。我就用我在成都成飞公园拍摄的J20战斗机实体模型,试玩了一下高斯溅射。
在成都参观成飞公园的时候,我用手机环绕J20的原型机等比模型一周,拍了一段视频。现在我用FFMPG这个程序将视频中的单帧画面抽取出来,作为给AI训练的数据集。
'''
ffmpeg -i input.mp4 -vf fps=1 output%d.jpg
'''
前面说了光有图片是不够的,还有每张图片对应的摄像头位置和视角,才能让AI学习每个顶点的颜色和光线参数,这里我用colMap这个软件,通过这组图片来寻找和重建摄像机的位置,经过大约一个小时的运算,得到了最终结果,下图所示,红色的就是摄像头的视角,可以看出它非常精确地复原了我环绕模型的轨迹。
然后将取取到的镜头位置和图片信息打包,上传到colab上,根据网上教学中提到的程序命令,经过大约一个小时的训练,就得到了一个PLY文件,大约200多兆,把它下载下来,用专门的查看器打开就可以查看了。
可以看出除了我视频中的角度之外,还可以变换不同的角度观看,就好像把这个大模型拿在手掌上,把这架大飞机拿在手掌上把玩一样,还是很有趣的。