基于微信聊天的 结合增强现实技术(AR)+LBS(暂时基于图像) 的星际漂流瓶 的轻社交游戏。重新认识你身边的世界,或许我们早已与外星生命共同生活着。
A. 项目介绍
A.1 项目模块:
项目由下面的模块组成,每个模块都可以单独使用,也可组合使用,如:直接按需就调用图像生成外星人、外星生物、外星植物、外星建筑
简要 | 具体描述 | 项目中的代码及模型 |
---|---|---|
1.基于 LSGAN 的外星生物生成,利用爬虫与 GAN 生成我们想要的东西的过程 | 请跳转到本页中的 C.1 | Train.zip |
2.快速调用PaddleSeg的cityscapes模型,进行18类常见物体的分割 | 请跳转到本页中的 C.2 | CityscapesModule.py +PetModel文件夹 |
3.OpenCV的seamlessClone实现图像融合,呈现各种AR效果,遮挡关系等 | 请跳转到本页中的 C.3 | alienPetModule.py |
4.外星人换脸,外星人脸与地球人脸融合效果的优化 | 请跳转到本页中的 C.4 | alienHeadModule.py |
5.YUV颜色空间实现颜色图案迁移,基于CV技术生成外星植物 | 请跳转到本页中的 C.5 | vegetateModule.py |
6.PaddleHub的msgnet实现图像迁移,基于深度学习生成类流沙或沙画效果 | 请跳转到本页中的 C.6 | sandModule.py + msgnet文件夹 |
7.Wechaty漂流瓶游戏,微信漂流瓶及通过开发者模式控制整个流程 | 请跳转到本页中的 D | bot文件夹 |
A.2 太空漂流信息
你可能收到来自一个未知星域发过来的漂流瓶,你也可以把你想抒发的情感发向星际中
-
嗨,别来无恙啊,此刻的你是否有些孤独,别怕,此时此刻,在浩瀚宇宙中,总有与你相似的灵魂,你们或许来自不同的星球,有着不同的文明,但你们仍然可以通过太空漂流瓶去表达内心的情感,快来开启你的太空漂流瓶之旅吧。
-
用户可以在加本官方微信好友后,向本官方微信发出包含文本与图片的漂流瓶。也可以主动接收漂流瓶。
-
甚至,在一个你意想不到的时刻会收到想象之外的漂流瓶信息。发送与接收漂流瓶都可以提升等级噢!
A.3 增强现实技术(AR)+位置服务(LBS)的游戏
接收漂流瓶任务,或主动出击,寻找身边潜藏的外星人、外星生物(宠物)、外星植物、外星建筑
-
基于微信聊天中的图片及文本聊天。通过文本接受到任务或主动触发。
-
可能是让用户帮忙寻找它丢失的某个外星宠物(外星生物),或者帮它找到急需用于治疗的外星植物,也可能是让你帮忙找到正在被通缉的外星人囚犯。
A.4 体验视频:(建议全屏观看)
-
欢迎小伙伴推荐地点及地点图片或直接加入本项目,可以先star或Fork跟踪更新进度
github地址:https://github.com/kevinfu1717/SuperInterstellarTerminal
-
扫码加群,按群公告操作即可体验
B. 故事背景
-
地球并不只是人类的天下,其实有数万名外星人及其外星低等生物生活在我们当中,他们有的因为母星被毁有的因为星际战乱而选择到地球避难。
-
银河星际移民局则管理并协调着他们在地球的生活。借助超高级科技,他们隐藏原来的外观,装扮成是普通地球人,我们根本分辨不出来,说不定,站在你旁边的就是一位外星友人。
-
同时,他们也带来了外星的低等生物及外星植物,通过超科技把他们隐藏起来,装扮成地球物种或我们完全看不到。
C. 项目中的技术功能介绍
C.1 AI寻找你身边的外星生物
建立外星人图鉴,让我们看一下AI预测的外星人形象是怎样的
先看一下AI预测的外星生物矢量图:
a. 训练素材
-
从百度爬取“外星人”的图片,但因为外星人搜出来的图太杂乱。所以改变思路,用关键词“外星人 矢量”来进行搜索爬取。搜出来的外星人图片相对没那么杂乱。勉强可以用来训练。勉强是有1/5左右是白底,有1/5左右是PS中那种透明图的格子底图或水印的,有1/5是背景各种颜色的图,还有1/5是多个外星元素组成的图。大概数据见下图:
b. 数据处理与增广
- 尝试过用midars模型或CV来提取单个外星生物,但效果都不是很好。所以,最终只使用水平翻转,增加了一倍的数量。尽管可以爬取来增加这个数量,但越到后面,爬取的图片质量越差。所以还是通过水平翻转来处理。
c. 模型
-
训练文件:见项目中 Train压缩包下
TrainAlienPet.ipynb
-
模型文件:见项目中 Train压缩包下
generator0725.params
-
搜索了一下GAN的模型,结合可训练性与生成效果,选择了LSGAN。基于项目aistudio上“独楼望天涯”大佬的项目 https://aistudio.baidu.com/aistudio/projectdetail/1936908进行修改。
-
在其基础上,每个epoch执行更多的Generation,以及修改了超参数( 偶尔判别器loss高时,会有些完全不像的图)。
-
训练过程:Epoch 0 ~ Epoch 999 的LOSS及效果见下面动图:
-
具体训练项目地址见:
-
不足:
-
大概在200epochs就已经差不多,再训练到1000epochs反而效果还下降了。loss方面,判别器可以达到0.02,但生成器只能到0.8。这方面还可以优化
-
最终会有不少彩色的杂点
-
生成的外星生物矢量图有些还保留训练图的方格背景之类的。
-
生成的外星生物可能有部分过拟合,为有些很向原来的。
-
d. 后处理
-
在叠加到现实图像中做AR效果时,使用cv处理优化这部分(具体见3-d中的描述)
-
为外星生物配上背景介绍,定义他们出现的位置,建立外星生物图鉴
生物图鉴:AI生成的外星生物
C.2 识别现场环境——CityscapesModule.py
a. 模型
PaddleSeg 中基于cityscapes数据集的SOTA模型
PaddleSeg训练了一个在cityscapes数据集上SOTA的模型。却很低调,只是放在contrib中,仅有个英文的介绍。里面的介绍还主要针对训练的,如果只是想要体验SOTA的cityscapes的效果是怎样的却很麻烦。本项目中化简了相关的代码,一行代码体验cityscapes分割。效果真的对得起SOTA的!
b. 相关文件
-
目录结构(单独使用本模块,只需修改
CityscapesModule.py
中的 im_path ):. ├── CityscapesModule.py └── PetModel ├── modelCityscape.pdparams ├── pretrainedCityscape.pdparams └──mscale_ocr_cityscapes_autolabel_mapillary_ms_val.yml
-
pretrainedCityscape.pdparams
下载地址:https://bj.bcebos.com/paddleseg/dygraph/cityscapes/ocrnet_hrnetw48_mapillary/pretrained.pdparams -
modelCityscape.pdparams
下载地址:https://bj.bcebos.com/paddleseg/dygraph/cityscapes/mscale_ocr_hrnetw48_cityscapes_autolabel_mapillary/model.pdparams -
mscale_ocr_cityscapes_autolabel_mapillary_ms_val.yml
为PaddleSeg模型的yml文件
c. 功能/作用
让AI能感知环境里有哪几样物品,同时可以定位到其在图片中的具体位置。具体识别的物品如下:
(PS:注意真实返回的ID是从0开始的,所以是trainId-1,如sky实际返回的id是10 not 11):
d. 使用
-
运行
CityscapesModule.py
脚本,设置待处理图片的路径,将返回大小于原图片大小一样的二维数组pred,其取值是从0~18。 -
可以拿这个二维数组作为mask,例如用
np.where(mask == index, 1, 0)
来截取自己感兴趣的区域,index取值为上表中实际返回ID
,也即trainID -1
。 -
CityscapesModule.py
中把pred ×10
后保存成图片,见右下图(图片像素的灰度值从0~180)。