当前位置: 首页 > article >正文

Chat-with-NeRF:三维场景重建与对话式AI的融合实践

1. 项目概述当NeRF遇见对话式AI最近在三维视觉和AIGC的交叉领域一个名为“chat-with-nerf”的项目引起了我的注意。简单来说它实现了一个听起来很科幻的功能你上传一张或多张照片系统会基于这些照片重建出一个三维场景这个过程由NeRF技术完成然后你可以像跟一个“导游”聊天一样用自然语言向这个三维场景提问比如“沙发左边有什么”、“从窗户看出去能看到什么”AI会理解你的问题并在三维场景中进行分析和推理最终用文字回答你。这不仅仅是“看图说话”的升级版。传统的视觉问答VQA模型处理的是二维图片它告诉你图片里“有什么”。而“chat-with-nerf”构建的是一个三维的、具有空间关系的数字孪生环境。AI不仅能识别物体更能理解物体之间的相对位置前后、左右、内外、遮挡关系甚至能进行一些简单的空间推理和想象例如推断被遮挡部分的可能样貌。这为机器人环境理解、沉浸式内容交互、智能家居导览等领域打开了一扇新的大门。这个项目巧妙地缝合了两个前沿技术栈一是神经辐射场NeRF负责从图像中高质量地重建三维场景二是大型语言模型LLM负责理解自然语言指令并生成符合三维上下文的回答。对于开发者、三维视觉研究者以及对多模态AI应用感兴趣的工程师来说这是一个绝佳的、可实操的研究与学习样板。接下来我将深入拆解其核心思路、技术选型、实操细节并分享在复现和调试过程中积累的一手经验。2. 核心架构与工作流拆解2.1 整体流程从2D到3D再到对话项目的核心工作流可以清晰地分为三个阶段理解这个流程是后续一切操作的基础。第一阶段三维重建NeRF建模这是整个系统的基石。你提供的图片被送入一个NeRF模型例如Instant-NGP或NeRFStudio框架下的模型进行训练。模型会学习场景的几何和外观最终生成一个可以任意视角渲染的三维表示。这个阶段输出的不是一个传统的三角网格而是一个神经网络的权重文件它隐式地定义了整个场景。第二阶段三维场景理解与特征提取这是连接“三维”和“语言”的桥梁也是最精妙的部分。系统不会让LLM直接去“看”NeRF的原始输出一堆权重那对LLM来说是天书。取而代之的是项目采用了一种“特征注入”的策略。具体来说当用户提出一个问题如“描述一下房间的布局”系统会视角采样根据问题在三维场景中生成一系列有代表性的虚拟相机视角例如房间的四个角落、中心俯视等。渲染与编码从这些视角渲染出RGB图像和对应的深度图。然后使用一个视觉编码器如CLIP的ViT将这些渲染图编码成高维特征向量。这些特征向量捕获了该视角下的视觉语义信息。构建文本化场景描述有时系统还会使用一个图像描述模型如BLIP将关键视角的渲染图转换成一段文本描述例如“这是一个现代风格的客厅中央有一张灰色沙发沙发左侧有一盏落地灯正前方是一台挂在墙上的电视”。这段文本描述将成为后续LLM理解场景的重要上下文。第三阶段基于上下文的对话LLM推理LLM如Vicuna, Llama登场。系统将以下信息整合成一个精心设计的提示词Prompt输入给LLM用户问题 “沙发左边有什么”三维场景的文本描述来自第二阶段生成的场景概述。当前对话历史如果有多轮对话。系统指令 告诉LLM它是一个三维场景的助手回答必须基于提供的场景信息对于不确定或不可见的内容要诚实回答。LLM基于这些丰富的上下文进行推理生成最终的自然语言回答。整个流程实现了“2D图片 → 3D神经场 → 多视角视觉/文本特征 → 上下文增强的LLM → 3D空间相关的回答”的闭环。2.2 技术栈选型背后的考量为什么项目会选择这样的技术组合每一个选择都有其深意。1. NeRF框架Instant-NGP / NeRFStudio项目没有使用最早期的原始NeRF因为其训练速度极慢。Instant-NGP通过哈希编码和多分辨率网格将训练时间从数天缩短到数分钟这对于交互式应用至关重要。NeRFStudio则提供了一个更统一、模块化的框架方便集成各种先进的NeRF变体如NeRF、Mip-NeRF并提供了强大的数据预处理、可视化和导出工具。选择它们是在“重建质量”、“训练速度”和“开发便利性”之间取得的平衡。2. 视觉编码与描述模型CLIP 和 BLIPCLIP 它的强大之处在于其视觉特征与文本特征在共享空间中对齐。这意味着从场景渲染图中提取的CLIP特征与问题文本的CLIP特征在语义上是可比较的。虽然在这个项目中CLIP特征主要作为视觉信息的密集编码但其设计初衷为未来实现“指哪打哪”根据文本在3D空间中定位功能预留了可能性。BLIP 它的任务是生成高质量、描述性的文本。相比于让LLM直接“理解”CLIP特征将视觉信息先转化为LLM的母语——自然语言是一种更高效、更可靠的“降维”策略。这大大降低了LLM理解三维场景的难度提高了问答的准确性和丰富性。3. 大型语言模型Vicuna / Llama 2选择这些开源LLM而非闭源API如GPT-4核心考量是可控性、私有化部署和成本。整个系统涉及敏感的原始图像数据、生成的三维模型以及可能的私有对话内容使用本地部署的LLM能保证数据不出域。此外固定版本的模型确保了系统行为的可复现性避免了因API更新导致的意外变化。Vicuna因其在对话能力上的优化而被青睐。注意 这个架构是典型的“松耦合”设计。NeRF、视觉编码器、LLM相对独立。这意味着你可以随时替换其中的任何一个模块。例如用更快的3D Gaussian Splatting替换NeRF用更强大的InternVL替换CLIP或者用最新的开源LLM替换Vicuna。这种设计极大地提升了项目的可扩展性和生命力。3. 环境搭建与数据准备实操3.1 本地开发环境配置要跑通这个项目你需要一个不算太弱的GPU环境建议RTX 3060 12G及以上。以下是我在Ubuntu 20.04/22.04上验证过的步骤Windows用户可通过WSL2获得类似体验。首先克隆项目仓库并创建Python虚拟环境这是避免依赖冲突的标准操作。git clone https://github.com/sled-group/chat-with-nerf.git cd chat-with-nerf python -m venv nerf_chat_env source nerf_chat_env/bin/activate # Windows: nerf_chat_env\Scripts\activate接下来安装PyTorch。这里有一个关键坑点项目依赖的torch版本可能与NeRF框架如nerfstudio有特定要求。最稳妥的方法是先根据你的CUDA版本安装PyTorch然后再安装项目其他依赖。例如对于CUDA 11.8pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118然后安装项目核心依赖。项目通常会提供requirements.txt但可能需要微调。pip install -r requirements.txt如果安装nerfstudio时遇到问题可以尝试单独安装因为它对open3d、jax等依赖的版本要求比较严格。pip install nerfstudio # 或者从源码安装最新版以获取某些特性 # pip install githttps://github.com/nerfstudio-project/nerfstudio.git实操心得 虚拟环境是必须的。因为NeRF相关的库如tiny-cuda-nn对编译环境非常敏感混用版本极易导致无法编译或运行时错误。建议为这个项目单独创建一个环境并记录下所有成功安装的包版本便于后续复现。3.2 训练数据采集与处理你的对话能力上限很大程度上由你的三维重建质量决定。而重建质量又取决于输入图片。1. 拍摄指南针对室内场景设备 智能手机即可但请关闭广角镜头会产生畸变使用主摄。保持曝光和白平衡锁定避免画面忽明忽暗。拍摄模式 围绕物体或场景缓慢移动拍摄一段视频4K, 30fps比单张拍照更高效。后期可以从视频中均匀抽帧。运动轨迹 想象一个球体你沿着球面拍摄。对于房间从门口开始沿墙壁缓慢平移同时相机始终指向房间中心。然后抬头、低头拍摄不同高度。关键是要有足够的视差变化即同一物体在不同图片中出现在不同位置。数量 一个小物体如椅子需要50-100张一个标准房间需要200-300张。覆盖度比数量更重要。光线 避免强光直射和剧烈光影变化如闪烁的屏幕。柔和、均匀的光线最佳。2. 数据处理流程拿到图片或视频抽帧后不能直接扔给NeRF。需要先进行**运动恢复结构SfM**处理以估计每张图片的相机位姿位置和朝向。nerfstudio提供了傻瓜式工具ns-process-data。# 假设你的图片在 data/my_room/images 目录下 ns-process-data images --data data/my_room/images --output-dir data/my_room/colmap这个命令会调用colmap进行特征点提取、匹配和稀疏重建。生成一个transforms.json文件里面包含了每张图片对应的相机内参焦距、主点和外参旋转矩阵、平移向量。这个json文件就是NeRF训练所需的标准化数据格式。踩坑记录 如果SfM失败常见于纹理重复、玻璃反光或光线太暗的场景transforms.json可能为空或位姿错误。解决方案1) 尝试colmap的图形界面手动添加特征点对。2) 使用hloc等更先进的SfM工具。3) 如果只是少量图片位姿不准可以直接删除这些图片。4. 核心模块深度解析与实现4.1 NeRF模型训练与优化数据准备好后就可以开始训练三维模型了。nerfstudio支持多种模型对于室内场景nerfacto是一个不错的默认选择它在速度和质量上取得了很好的平衡。ns-train nerfacto --data data/my_room/colmap --vis viewer--vis viewer 会在训练时启动一个Web可视化界面默认在http://localhost:7007你可以实时查看训练过程中的渲染效果非常直观。训练参数调整是影响结果的关键迭代次数max-num-iterations 通常15000-30000次迭代足以让室内场景收敛。可以通过可视化界面判断当新视角的渲染图不再有闪烁的浮游物漂浮物且细节清晰时即可停止。分辨率 在nerfstudio的配置中你可以设置最终输出模型的分辨率。更高的分辨率意味着更精细的细节但也会增加模型体积和渲染开销。对于对话应用中等分辨率通常足够。导出模型 训练完成后需要将模型导出为项目后续模块可用的格式。nerfstudio支持导出为.ply点云或.obj网格但对于chat-with-nerf它通常需要的是原始的模型检查点.ckpt文件或特定的特征文件。# 假设训练运行的输出目录是 outputs/my_room/nerfacto/2024-01-01_123456 ns-export poisson --load-config outputs/my_room/nerfacto/2024-01-01_123456/config.yml --output-dir exports/my_room这个命令会使用泊松表面重建算法从NeRF生成一个网格模型。但请注意chat-with-nerf项目可能要求你直接使用训练好的nerf模型进行实时渲染而不是网格。你需要根据项目的具体接口决定是导出网格还是直接提供模型加载路径。4.2 视觉-语言上下文构建器这是项目的“智能”所在。我们来看看它的核心代码逻辑以伪代码/思路形式呈现。首先需要加载训练好的NeRF模型和一个视觉编码器如CLIP。import torch from nerfstudio.models.base_model import Model from PIL import Image import open_clip # 或 transformers 中的 CLIP # 1. 加载 NeRF 模型 nerf_model Model.from_config(nerf_checkpoint_path) nerf_model.eval() # 2. 加载 CLIP 模型 clip_model, preprocess open_clip.create_model_and_transforms(ViT-B-32, pretrainedlaion2b_s34b_b79k) clip_model.eval() def extract_scene_context(nerf_model, question): 根据问题从NeRF场景中提取文本化上下文。 context_parts [] # 策略1生成全局描述 # 渲染几个预设的全局视角如顶视图、四个立面视图 global_views [top, front, back, left, right] for view in global_views: camera_pose calculate_camera_pose_for_view(view, scene_bounds) rgb_render nerf_model.render(camera_pose)[rgb] # 假设渲染函数返回RGB # 将渲染图转为PIL Image rgb_image (rgb_render * 255).astype(np.uint8) pil_image Image.fromarray(rgb_image) # 使用BLIP生成描述 blip_description blip_model.generate(pil_image) context_parts.append(f从{view}视角看{blip_description}) # 策略2如果问题涉及特定物体渲染其特写 # 这里需要一个简单的物体检测或 grounding 模块根据问题关键词定位 # 例如问题含“沙发”则用NeRF的密度场或特征场估计沙发中心并渲染其近景 if 沙发 in question: sofa_center estimate_object_center(nerf_model, sofa) # 假设的函数 close_up_pose generate_close_up_camera(sofa_center) close_up_render nerf_model.render(close_up_pose)[rgb] # ... 同样生成描述 context_parts.append(f沙发特写{blip_description_for_close_up}) # 将所有描述合并成一段连贯的文本 full_context 。.join(context_parts) return full_context这个函数的核心思想是动态且有针对性地生成场景描述。它不是事先生成所有描述而是根据用户的问题智能地选择需要渲染的视角从而生成最相关的上下文减少冗余信息对LLM的干扰。4.3 提示词工程与LLM集成有了场景的文本描述下一步就是构建给LLM的提示词。提示词的设计直接决定了回答的质量和相关性。一个精心设计的提示词模板可能长这样你是一个专业的三维场景分析助手。请基于以下对某个三维场景的描述回答用户的问题。描述是系统从多个视角自动生成的可能不完全精确请基于此进行合理推断。 【三维场景描述】 {scene_context} 【对话历史】 {history} 【当前用户问题】 {question} 请遵守以下规则 1. 回答必须严格基于上述场景描述。 2. 如果描述中没有明确信息可以回答该问题请直接说“根据提供的场景信息无法确定”。 3. 描述中可能包含不确定的词汇如“可能”、“似乎”请在回答中体现这种不确定性。 4. 回答应简洁、准确直接针对问题。 助手将{scene_context}、{history}、{question}替换为实际内容就构成了完整的提示词。然后使用本地部署的LLM如通过text-generation-webui提供的API或直接调用transformers库进行推理。from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer AutoTokenizer.from_pretrained(lmsys/vicuna-7b-v1.5) model AutoModelForCausalLM.from_pretrained(lmsys/vicuna-7b-v1.5, device_mapauto) def ask_llm(prompt): inputs tokenizer(prompt, return_tensorspt).to(model.device) outputs model.generate(**inputs, max_new_tokens150, temperature0.7, do_sampleTrue) answer tokenizer.decode(outputs[0], skip_special_tokensTrue) # 提取“助手”之后的部分作为回答 answer answer.split(助手)[-1].strip() return answer核心技巧 **温度temperature**参数至关重要。设为较低值如0.1-0.3会使回答更确定、更遵循上下文但可能略显呆板设为较高值如0.7-0.9会使回答更有创造性但也更容易“胡编乱造”。对于注重事实准确性的场景问答建议使用较低的温度。5. 系统集成与交互前端搭建5.1 后端服务设计与API暴露一个完整的应用需要将上述模块串联起来并提供标准的API接口。我们可以使用FastAPI来快速构建后端。from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import Optional import uvicorn app FastAPI(titleChat with NeRF API) # 内存中保存模型和对话状态生产环境需用数据库 nerf_model_cache {} conversation_sessions {} class QuestionRequest(BaseModel): session_id: str question: str nerf_model_path: str class AnswerResponse(BaseModel): answer: str session_id: str app.post(/ask, response_modelAnswerResponse) async def ask_question(req: QuestionRequest): # 1. 加载或获取缓存的NeRF模型 if req.nerf_model_path not in nerf_model_cache: nerf_model load_nerf_model(req.nerf_model_path) # 自定义加载函数 nerf_model_cache[req.nerf_model_path] nerf_model else: nerf_model nerf_model_cache[req.nerf_model_path] # 2. 获取或初始化对话历史 if req.session_id not in conversation_sessions: conversation_sessions[req.session_id] [] history conversation_sessions[req.session_id] # 3. 构建场景上下文集成上一节的函数 scene_context extract_scene_context(nerf_model, req.question) # 4. 构建提示词并调用LLM prompt build_prompt(scene_context, history, req.question) answer ask_llm(prompt) # 5. 更新对话历史 history.append({user: req.question, assistant: answer}) # 可选只保留最近N轮历史避免提示词过长 if len(history) 5: history history[-5:] conversation_sessions[req.session_id] history return AnswerResponse(answeranswer, session_idreq.session_id) if __name__ __main__: uvicorn.run(app, host0.0.0.0, port8000)这个API设计了一个/ask端点接收会话ID、用户问题和NeRF模型路径返回AI的回答。会话ID用于维护多轮对话的上下文。5.2 轻量级Web前端实现为了让非技术用户也能方便地使用一个简单的Web前端必不可少。我们可以用HTML、JavaScript和一点CSS快速实现。!DOCTYPE html html head titleChat with My 3D Room/title style #chat-box { height: 400px; border: 1px solid #ccc; overflow-y: auto; padding: 10px; } .user-msg { text-align: right; color: blue; } .bot-msg { text-align: left; color: green; } /style /head body h2与你的3D场景对话/h2 div idchat-box/div input typetext idquestion-input placeholder输入你的问题... stylewidth: 70%; button onclicksendQuestion()发送/button script let sessionId user_ Math.random().toString(36).substr(2, 9); const nerfModelPath exports/my_room; // 你的模型路径 function appendMessage(sender, text) { const chatBox document.getElementById(chat-box); const msgDiv document.createElement(div); msgDiv.className sender -msg; msgDiv.innerHTML strong${sender}:/strong ${text}; chatBox.appendChild(msgDiv); chatBox.scrollTop chatBox.scrollHeight; } async function sendQuestion() { const input document.getElementById(question-input); const question input.value.trim(); if (!question) return; appendMessage(用户, question); input.value ; try { const response await fetch(http://localhost:8000/ask, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ session_id: sessionId, question: question, nerf_model_path: nerfModelPath }) }); const data await response.json(); appendMessage(助手, data.answer); } catch (error) { appendMessage(系统, 请求出错 error.message); } } // 回车发送 document.getElementById(question-input).addEventListener(keypress, function(e) { if (e.key Enter) sendQuestion(); }); /script /body /html这个前端页面包含一个聊天框、一个输入框和一个发送按钮。它通过JavaScript调用我们刚刚搭建的FastAPI后端实现实时问答。将nerfModelPath替换为你实际训练好的模型路径即可。6. 性能优化与常见问题排查6.1 推理速度优化技巧整个流程中最耗时的部分是NeRF渲染和LLM推理。1. NeRF渲染加速降低渲染分辨率 用于上下文生成的渲染图不需要4K高清512x512甚至256x256的分辨率通常足够CLIP/BLIP提取特征。缓存渲染结果 对于常见的视角如全局视角其渲染结果和生成的描述文本可以预先计算并缓存。只有当用户问题涉及非常特殊的视角时才进行实时渲染。使用更快的渲染器 考虑使用基于网格的简化表示如从NeRF导出的.obj网格配合传统光栅化器进行快速渲染虽然会损失一些视觉质量但速度可提升数个量级。2. LLM推理加速模型量化 将LLM从FP16精度量化到INT8或INT4可以大幅减少显存占用并提升推理速度对精度损失很小。使用bitsandbytes或GPTQ库可以轻松实现。使用更小的模型 7B参数的模型如Vicuna-7B在大多数场景问答上已经表现不错。如果对响应速度要求极高可以尝试3B甚至1B参数的模型。流式输出 采用流式响应Token-by-Token可以让用户更快地看到回答的开头提升体验感。6.2 常见问题与解决方案实录在实际部署和测试中你肯定会遇到各种问题。下面是我踩过的一些坑和解决办法。问题现象可能原因排查步骤与解决方案NeRF训练失败损失不下降1. 相机位姿估计不准SfM失败。2. 图片曝光不一致或动态物体。3. 学习率设置不当。1. 检查transforms.json用ns-viewer预览位姿确认相机轨迹合理。重新运行SfM或手动修正。2. 检查图片序列删除过曝、过暗或有行人/车辆移动的帧。使用图像处理软件进行简单的曝光均衡。3. 尝试降低学习率如从0.01降到0.001并使用warm-up。LLM回答与场景完全无关胡言乱语1. 场景上下文scene_context太短或信息不足。2. 提示词Prompt设计不佳未给LLM足够的约束。3. LLM温度Temperature参数过高。1. 增加渲染的视角数量或使用更详细的图像描述模型。在extract_scene_context函数中增加特写视角。2. 强化提示词中的规则例如明确要求“必须基于以下描述”并在描述前后添加特殊标记如###场景描述###。3. 将temperature降至0.1-0.3并尝试top_p0.9。回答总是“无法确定”或过于保守1. 场景描述中包含大量“可能”、“似乎”等不确定词汇。2. 提示词中“无法确定”的规则过于严格。1. 调整BLIP的描述生成参数或使用更确定的描述模型。可以对描述进行后处理替换掉过于模糊的词汇。2. 修改提示词将“无法确定”改为“请根据描述进行合理的推断”鼓励LLM在信息不全时进行有限度的推理。系统响应非常慢30秒1. 每次问答都重新渲染多个视角。2. LLM未量化加载和推理慢。3. 硬件性能不足GPU内存小。1. 实现视角渲染缓存机制对相同或相似的问题复用缓存。2. 对LLM进行4-bit或8-bit量化。使用vLLM等高性能推理库。3. 考虑使用云GPU服务或降低NeRF和LLM的模型规模。前端发送请求后收到CORS错误前端页面与后端API域名/端口不同浏览器安全策略阻止。在FastAPI后端添加CORS中间件from fastapi.middleware.cors import CORSMiddleware然后配置允许前端的源。6.3 效果评估与迭代方向项目跑通后如何评估其效果可以设计一些测试用例基础物体识别“房间里有多少把椅子”空间关系理解“电视在沙发的哪个方向”属性查询“沙发的颜色是什么”简单推理“如果我坐在沙发上能看到窗外的树吗” 记录LLM回答的准确率。效果不佳时按以下顺序排查和迭代提升三维重建质量这是上限。确保NeRF模型清晰、无伪影。优化场景描述这是信息传递的桥梁。尝试不同的视角采样策略、不同的描述模型BLIP2、LLaVA等甚至引入物体检测框信息。精调提示词这是LLM的“操作手册”。针对不同类型的错误微调提示词的指令和格式。考虑微调LLM如果领域非常垂直如仅针对室内设计可以考虑用高质量的场景描述问答对微调一个小型LLM使其更擅长空间推理。这个项目像一个精密的“技术钟表”每一个齿轮模块都需要仔细调校。但当它顺畅运转起来看着AI准确地理解并描述你亲手重建的三维世界时那种成就感是无与伦比的。它不仅是一个工具更是一个关于如何让AI更好地感知和理解我们物理世界的生动实验。

相关文章:

Chat-with-NeRF:三维场景重建与对话式AI的融合实践

1. 项目概述:当NeRF遇见对话式AI最近在三维视觉和AIGC的交叉领域,一个名为“chat-with-nerf”的项目引起了我的注意。简单来说,它实现了一个听起来很科幻的功能:你上传一张或多张照片,系统会基于这些照片重建出一个三维…...

MASA全家桶汉化包:三步搞定Minecraft模组界面中文化的终极指南

MASA全家桶汉化包:三步搞定Minecraft模组界面中文化的终极指南 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 还在为Masa Mods复杂的英文界面而烦恼吗?MASA全家…...

多语言支持秘籍:validatorjs国际化错误消息配置终极指南

多语言支持秘籍:validatorjs国际化错误消息配置终极指南 【免费下载链接】validatorjs A data validation library in JavaScript for the browser and Node.js, inspired by Laravels Validator. 项目地址: https://gitcode.com/gh_mirrors/va/validatorjs …...

古典戏曲研究新范式,NotebookLM+《牡丹亭》原始刻本实测:自动生成曲牌-情感-舞台调度三维映射表

更多请点击: https://intelliparadigm.com 第一章:NotebookLM戏剧研究辅助的范式革命 传统戏剧研究长期依赖人工文本细读、跨剧目比对与历史语境重建,耗时冗长且易受主观经验局限。NotebookLM 的引入,标志着从“线性阅读—笔记摘…...

wBlock Safari扩展架构详解:5个内容拦截扩展的协同工作原理

wBlock Safari扩展架构详解:5个内容拦截扩展的协同工作原理 【免费下载链接】wBlock The next-generation ad blocker for Safari. 项目地址: https://gitcode.com/gh_mirrors/wb/wBlock wBlock是一款下一代Safari广告拦截器,通过创新的多扩展架构…...

简单易学:awesome-embedding-models 中负采样技术的完整实现指南

简单易学:awesome-embedding-models 中负采样技术的完整实现指南 【免费下载链接】awesome-embedding-models A curated list of awesome embedding models tutorials, projects and communities. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-embedding…...

KeyboardChatterBlocker:免费开源键盘防连击工具终极指南

KeyboardChatterBlocker:免费开源键盘防连击工具终极指南 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 你是否曾经遇到过键…...

‌吴哥窟水文测试:验证古代水库管理AI的智慧‌

一、从古代水利到现代AI测试的跨越吴哥窟,这座位于柬埔寨的古代都城遗址,以其宏伟的寺庙建筑群闻名于世。然而,鲜为人知的是,支撑这座城市繁荣数百年的,是一套复杂而精密的水管理系统。这套建于9至13世纪的水利工程&am…...

从零到发刊:NotebookLM在有机合成路线设计中的7步闭环工作法,北大化学院实验室内部培训材料首次公开

更多请点击: https://codechina.net 第一章:NotebookLM化学研究辅助 NotebookLM 是 Google 推出的基于 AI 的研究协作者,专为深度阅读、知识整合与推理设计。在化学研究场景中,它可高效处理文献 PDF、实验记录、光谱数据报告及教…...

在Windows 11 LTSC版本中找回微软商店的3分钟魔法

在Windows 11 LTSC版本中找回微软商店的3分钟魔法 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 你是否正在使用Windows 11 24H2 LTSC版本&#xff0…...

EVA-7M,支持GPS/GLONASS及低功耗省电模式的超紧凑型GNSS模块

简介今天我要向大家介绍的是 u-blox 的超紧凑型独立GNSS定位模块——EVA-7M。这是一款专为对成本和空间敏感的应用而设计的独立GNSS模块。该模块基于 u-blox 7 定位引擎(接收GPS、GLONASS、QZSS和SBAS信号)设计,采用行业最小的独立GNSS封装尺…...

PyInstaller Extractor终极指南:5分钟学会提取可执行文件源码

PyInstaller Extractor终极指南:5分钟学会提取可执行文件源码 【免费下载链接】pyinstxtractor PyInstaller Extractor 项目地址: https://gitcode.com/gh_mirrors/py/pyinstxtractor 你是否曾经面对一个PyInstaller打包的可执行文件,想要查看其中…...

nvm-windows深度实战:Windows平台Node.js版本管理的系统化解决方案

nvm-windows深度实战:Windows平台Node.js版本管理的系统化解决方案 【免费下载链接】nvm-windows A node.js version management utility for Windows. Ironically written in Go. 项目地址: https://gitcode.com/gh_mirrors/nv/nvm-windows nvm-windows是一…...

手把手教你学Simulink--电动物流车预充电路控制及主继电器粘连检测电机负载仿真

目录 手把手教你学Simulink--电动物流车预充电路控制及主继电器粘连检测电机负载仿真 摘要 Abstract 1. 引言 1.1 电动物流车发展背景 1.2 研究目的与意义 1.3 研究方法与内容 2. 文献综述 2.1 电动物流车预充电路研究现状 2.2 主继电器粘连检测技术进展 2.3 Simulin…...

【MYSQL】在Centos7和ubuntu22.04环境下安装

一.MYSQL在Centos7下的安装注意:安装与卸载中,⽤⼾全部切换成为root初期练习,mysql不进⾏⽤⼾管理,全部使⽤root进⾏1.卸载内置环境1-1卸载不要的环境[rootVM-0-3-centos ~]$ ps ajx |grep mariadb # 先检查是否有mariadb存在 131…...

浏览器资源嗅探神器猫抓Cat-Catch:3分钟学会抓取网页视频音频资源

浏览器资源嗅探神器猫抓Cat-Catch:3分钟学会抓取网页视频音频资源 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过想下…...

OpCore Simplify:2024年黑苹果EFI自动化配置生成工具终极指南

OpCore Simplify:2024年黑苹果EFI自动化配置生成工具终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾因为OpenCore配置的…...

如何快速解决多设备滚动冲突:Scroll Reverser终极配置指南

如何快速解决多设备滚动冲突:Scroll Reverser终极配置指南 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 你是否曾经在Mac上同时使用触控板和鼠标时,被混…...

BilibiliDown:跨平台B站视频下载完整解决方案实战指南

BilibiliDown:跨平台B站视频下载完整解决方案实战指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/b…...

NotebookLM文献精读陷阱警示:化学人必避的5类幻觉引用、2种结构误识别及实时校验方案

更多请点击: https://kaifayun.com 第一章:NotebookLM文献精读陷阱警示:化学人必避的5类幻觉引用、2种结构误识别及实时校验方案 NotebookLM 作为基于语义理解的AI文献助手,在化学领域高频出现“看似合理、实则失真”的推理错误。…...

等效电路模型:从黑箱到白盒的工程抽象与实战指南

1. 项目概述:从“黑箱”到“白盒”的工程思维在电子工程、电力系统乃至电池管理这些领域里,我们常常面对一个复杂的系统或器件。直接分析其内部的物理化学过程,比如半导体内部的载流子运动、电池内部的锂离子嵌入脱出,往往异常繁琐…...

APK Installer完整指南:在Windows电脑上快速安装Android应用的终极解决方案

APK Installer完整指南:在Windows电脑上快速安装Android应用的终极解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上直…...

Python3数字类型完全指南:从基础到高级应用

前言在Python编程语言中,数字(Number)是最基本、最核心的数据类型之一。无论是简单的数值计算,还是复杂的数据分析、科学计算,数字类型都扮演着不可或缺的角色。Python3以其简洁、强大和灵活的特性,在数字处…...

纯文本表格终极指南:如何在代码注释和技术文档中优雅展示数据

纯文本表格终极指南:如何在代码注释和技术文档中优雅展示数据 【免费下载链接】plain-text-table 项目地址: https://gitcode.com/gh_mirrors/pl/plain-text-table 在纯文本环境中展示结构化数据一直是个技术难题。无论是代码注释、终端输出、技术问答平台还…...

命令行AI工具gemini-cli:无缝集成Gemini大模型提升终端效率

1. 项目概述:一个与AI对话的命令行工具 如果你和我一样,大部分工作时间都泡在终端里,那么 eliben/gemini-cli 这个项目可能会让你眼前一亮。简单来说,它是一个让你能在命令行里直接与 Google 的 Gemini 大模型对话的工具。你不…...

从零构建私有数字保险库:硬件选型、加密策略与实战部署

1. 项目概述:从“0”开始的数字资产保险库在数字资产日益成为个人与企业核心财富的今天,如何安全、自主地保管这些资产,成为了一个绕不开的难题。无论是加密货币的私钥、重要的数字凭证、敏感的商业文档,还是家庭成员的密码本&…...

深度剖析APK Installer:Windows平台Android应用安装的专业解决方案

深度剖析APK Installer:Windows平台Android应用安装的专业解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK Installer是一款专为Windows平台设计…...

独立开发者如何利用 Taotoken 统一管理多个 AI 项目支出

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何利用 Taotoken 统一管理多个 AI 项目支出 对于同时维护多个小型 AI 应用或实验项目的独立开发者而言,成…...

基于Python的自动化科研写作工具:Aut_Sci_Write架构与实现

1. 项目概述:一个面向科研写作的自动化工具最近在GitHub上看到一个挺有意思的项目,叫“Aut_Sci_Write”。光看名字,大概就能猜到它的核心方向:自动化科学写作。作为一个在科研和工程领域摸爬滚打多年的从业者,我深知一…...

Windows上安装Android应用的终极指南:告别模拟器,开启全新跨平台体验

Windows上安装Android应用的终极指南:告别模拟器,开启全新跨平台体验 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾在Windows电脑上渴…...