2025项目实训(六)

一、AR系统进度

1.核心功能实现:

图像识别: 使用Vuforia引擎实现,可识别多个预设ImageTarget,并触发对应的不同响应内容。

识别反馈联动:

成功识别ImageTarget后,自动显示关联的3D人物模型。

模型显示时自动播放其绑定的人物动画。

模型显示时自动播放关联的音效。

模型渲染与视觉效果:

使用自定义Shader对3D人物模型进行渲染。

渲染结果包含可见的阴影效果。

阴影效果与模型动作保持实时联动。

2.交互功能实现

触摸手势操作 (基于EasyTouch):

用户可通过单指触摸滑动实现3D模型的旋转操作。

用户可通过双指捏合手势实现3D模型的缩放操作。

当前测试重点 (Android真机)

本地TTS语音合成功能能否正常播放读取的文字内容。

截屏交互功能能否正常触发,以及截取的屏幕图像能否成功保存到设备的系统相册。

使用Flutter集成UnityAR开发问题解决

使用插件flutter-unity-view-widget

该插件版本更新停止在2022年,故无法适配最新的flutter版本,尝试了flutter3.27.4,报错:是在插件flutter_unity_widget中,试null值强制转换为Context类型,结果失败崩溃。Flutter 最新版本中 PlatformViewFactory.create() 提供的是 @Nullable 的 Context context,如果直接用 context!! 或 context as Context 就会崩。

最好使用版本:

Flutter版本:3.3.10

Android studio版本:2021.3.1

Unity版本:2022.3.53

Android 构建过程在处理资源文件时失败

修改compileSdkVersion,但是要注意compileSdkVersion不能比targetSdkVersion版本低,同步修改

闪退问题

构建并安装flutterAPP后,打开可以看到想要唤起unity窗口但是失败了,根据信息显示为Unity 模块在 Android 设备上初始化 Vulkan 图形接口时崩溃

直接禁用 Vulkan,使用 OpenGLES

在 Unity 中打开 Project Settings > Player > Android > Other Settings > Graphics APIs:

把 Vulkan 从列表中移除,确保只有 OpenGLES

Unity AR模型显示阴影

在默认的摄像头画面中,AR 模型没有阴影,导致其与真实的世界脱节,缺乏沉浸感。

解决办法:创建一个透明平面来接受影子,阴影要写一个shader来实现。

阴影外形怪异,有的甚至没有模型。

解决办法:首先Light选为软阴影soft shadow,.然后在Unity菜单栏依次选择 Edit ->Project Settings,打开Project Settings对话框,选择Quality选项卡,设置Shadow Projection为Close Fit。Quality选项卡里还要将安卓更换为ultra。最终呈现比较正常的阴影效果

二、语音聊天系统进度

NLP快速原型测试

短时间内实现了文本对话,模型使用 DeepSeek-V3-0324,具体api和模型的对应可见首次调用 API | DeepSeek API Docs

主要参考了Penny Lu的这篇文章【菜菜丸的菜鸟教程】Unity接入DeepSeek实现AI对话功能 - 技术专栏 - Unity官方开发者社区

SALSA lipSync使用实践

SALSA不是对口型的精准模拟,而是通过听声对口型的取巧模拟,想要取得好的效果,关键是配置一系列逐渐变大,但是动态不同的口型,

SALSA的配置,结合官方文档,根据示例Scene的Component做一遍,取得还不错的效果

三、其它进度

完成了一组登录登出UI的设计,以及应用启动动画。接下来接轨前端后端,进行测试。

如图,最右侧为渐变启动动画,左侧为登录界面,中间是表单

<think>好的,我现在需要处理用户关于算法工程师AI方向技术面试题的详细解答请求。用户提到的主题包括Transformer、BERT、GPT的区别,梯度爆炸和消失的解决方案,BatchNorm与LayerNorm的区别,模型压缩与加速,过拟合防止方法,分类模型选择,文本表示方法,优化器选择(如Adam和SGD),以及机器学习项目流程。同时,用户还要求生成相关问题,并按照特定的格式要求来组织回答,包括使用中文、正确的LaTeX格式,以及引用给定的参考资料。 首先,我需要逐一分析每个技术点,确保回答准确且结构清晰。例如,对于Transformer的Attention机制,需要解释其核心思想,公式表示,以及为什么有效。这里要使用LaTeX行内公式,比如$Q$、$K$、$V$矩阵的计算,自注意力的公式等。同时,要比较BERT和GPT的区别,可能涉及到模型架构(如编码器vs解码器)、预训练任务(MLM vs LM)、应用场景等。 接下来,关于梯度爆炸和消失的问题,需要列举常见的解决方案,如权重初始化、归一化层、残差连接、梯度裁剪等。这部分需要结合具体技术点,并确保每个解决方案都有简要的解释。 BatchNorm和LayerNorm的区别也是一个重点,需要从处理维度、适用场景(如CNN vs Transformer)等方面进行对比,可能还需要提到它们在训练和推理时的不同表现。 模型压缩与加速的方法包括剪枝、量化、蒸馏等,每个方法需要简要说明原理和应用。过拟合防止部分要涵盖正则化、数据增强、早停法等策略,并可能结合具体例子,如L1/L2正则化的公式。 分类模型选择需要考虑数据规模、特征类型、计算资源等因素,可能需要对比不同模型(如逻辑回归、SVM、神经网络)的适用情况。文本表示方法需要从传统方法(如TF-IDF)到深度学习方法(如Word2Vec、BERT)进行说明。 优化器部分要对比Adam和SGD的优缺点,比如Adam的自适应学习率与SGD的动量方法,以及各自适用的场景。机器学习项目流程需要分步骤说明,从问题定义到模型部署的各个阶段,确保逻辑清晰。 在回答过程中,要严格遵守用户的格式要求:行内数学公式用$...$,独立公式用$$...$$,正确使用LaTeX语法,中文回答,并在适当的位置添加引用。例如,在提到HuggingGPT时,引用[^1],但需要确保引用与内容相关,并且不过度使用。 生成相关问题部分需要围绕每个技术点提出有针对性的问题,例如Transformer的并行化优势、BERT的预训练任务细节、Adam优化器的超参数影响等,确保问题能够引导进一步深入学习。 最后,需要检查所有内容是否符合结构要求,包括用户可见层的清晰回答和系统级指令的格式规范,确保没有遗漏任何技术点,同时保持回答的准确性和可读性。</think># 算法工程师AI方向技术面试题解答 --- ## 一、Transformer Attention机制 Transformer的核心是**自注意力机制**(Self-Attention),其公式为: $$ \text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $$ 其中,$Q$(查询)、$K$(键)、$V$(值)通过输入向量线性变换得到。自注意力通过计算序列内各位置的关联权重,捕捉长距离依赖,且支持并行计算[^1]。 --- ## 二、BERT与GPT的区别 | **维度** | **BERT** | **GPT** | |----------------|--------------------------|-------------------------| | 模型架构 | 双向Transformer编码器 | 单向Transformer解码器 | | 预训练任务 | 掩码语言模型(MLM) | 自回归语言模型(LM) | | 应用场景 | 文本分类、实体识别 | 文本生成、对话系统 | --- ## 三、梯度爆炸/消失的解决方案 1. **权重初始化**:如He初始化(适用于ReLU激活函数)。 2. **归一化层**:BatchNorm(CNN)或LayerNorm(Transformer)。 3. **残差连接**:通过跳跃连接缓解梯度衰减(如ResNet)。 4. **梯度裁剪**:限制梯度最大值,防止爆炸。 --- ## 四、BatchNorm与LayerNorm的区别 | **特性** | **BatchNorm** | **LayerNorm** | |----------------|-------------------------|-------------------------| | 归一化维度 | 对同一特征跨样本归一化 | 对同一样本内特征归一化 | | 适用场景 | CNN(图像数据) | RNN/Transformer(序列数据) | | 推理依赖 | 需维护全局均值和方差 | 单样本独立计算 | --- ## 五、模型压缩与加速方法 1. **剪枝**:移除冗余权重或神经元。 2. **量化**:将FP32权重转为INT8,减少内存占用。 3. **知识蒸馏**:用大模型(教师)训练小模型(学生)。 4. **轻量化架构**:如MobileNet、EfficientNet。 --- ## 、防止过拟合的方法 1. **正则化**:L1(稀疏性)、L2(权重衰减),例如损失函数添加$\lambda \sum \|w\|^2$。 2. **数据增强**:图像旋转/裁剪,文本同义词替换。 3. **早停法**(Early Stopping):验证集损失上升时终止训练。 4. **Dropout**:随机屏蔽神经元(如Transformer中Dropout率设为0.1)。 --- ## 七、分类模型选择依据 1. **数据规模**:小样本选择逻辑回归/SVM,大数据用深度学习。 2. **特征类型**:文本用BERT,图像用ResNet。 3. **实时性要求**:高实时场景用轻量模型(如MobileNet)。 --- ## 八、文本表示方法 1. **传统方法**:TF-IDF(词频-逆文档频率)、BoW(词袋模型)。 2. **词嵌入**:Word2Vec(Skip-Gram/CBOW)、GloVe。 3. **上下文相关**:BERT(动态词向量)、ELMo。 --- ## 九、优化器选择:Adam vs SGD | **优化器** | **优点** | **缺点** | |------------|--------------------------|--------------------------| | Adam | 自适应学习率,收敛快 | 可能陷入局部最优 | | SGD | 配合动量(Momentum)稳定 | 需手动调整学习率 | --- ## 十、机器学习项目流程 1. **问题定义**:明确业务目标与评估指标(如准确率、F1值)。 2. **数据预处理**:清洗、归一化、特征工程。 3. **模型选型**:根据任务选择基线模型(如ResNet分类)。 4. **训练调参**:交叉验证、学习率网格搜索。 5. **部署上线**:模型量化、API封装(如ONNX格式)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值