在Unity 进行深度学习的不同的方法比较
Python for unity:
使用简单,官方提供了完整的安装包,可以直接安装
支持Python的第三方库,引用或者在项目路径添加 site-packages 即可
不支持Runtime和成品打包,代码属于一个UnityEditor的扩展
无法更改各种Python包的版本,会出现各种问题
Pythonnet:
它属于Python for unity的外源,Python for unity就是使用了这个库开发的,可以在Unity3D的Github上找到一模一样的fork源码,属于原生的Python for unity了
它的优劣和 Python for unity 类似
IronPython:
IronPython 是Python在.NET平台上的实现,支持Runtime集成
IronPython 其实也需要引入程序集和DLL,需要熟悉IronPython的内部实现
对于初级开发者而言,它比较适合小体量的Python脚本
不太适合深度学习的框架
ML-Agent:
Unity3D官方的机器学习解决方案,安装简单,有大量的教程的文档、
支持和Anaconda协同环境(仅开发环境,不支持Runtime)
脱离了python的机器学习框架,Unity为了使它对非深度学习开发者更易用,做了自己的封装,使用了自己一套逻辑,以前使用的应该是TensorflowSharp做接口,用C#写逻辑。
虽然名字是ML-Agent,但是它并不能支持大部分机器学习的内容,更像是一些特定的强化学习模型,没有很强的定制化区间,而且除了Unity自己,其他开发者很少用这套东西做开发
不适合Python深度学习模型的集成,虽然你可以用Conda环境,但是想要把Conda环境中你训练好的模型直接做集成是不支持的。
Barracuda:
Barracuda 是最贴近大多数机器学习集成的一套东西。使用简单,官方提供了完整的安装包,可以直接安装
支持比较多的模型:全卷积神经网络,全稠密网络,Tiny YOLO等,这里还支持所有的ML-Agent网络(Unity还是要支持自己的工具的)
适用于很多onnx网络
支持Runtime集成,用C#和模型做了输入和输出的接口
缺点就是它支持的网络取决于onnx模型,全卷积神经网络,全稠密网络等,能做的事情比较集中,图像识别,图像风格转换,表情识别等最经典的模型更适用一些,不支持其他新兴网络,比如stable disffusion等扩散模型和其他模型。
自行封装DLL:
这部分针对某一个网络做自己的DLL,需要对DLL部分的知识很清楚.
基于 Barracuda 的 Unity 开源项目
物体识别
人体检测
物体检测
图像分类
Minst
手势识别
深度识别
Facemesh
瞳孔识别
抠像