Chord模型部署教程:CentOS 7系统下NVIDIA驱动+CUDA+Conda全环境搭建

# Chord模型部署教程:CentOS 7系统下NVIDIA驱动+CUDA+Conda全环境搭建 ## 1. 项目简介 ### 1.1 什么是Chord视觉定位模型? Chord是一个基于Qwen2.5-VL多模态大模型的视觉定位服务。它能够理解自然语言描述,并在图像中精确定位目标对象,返回边界框坐标。简单来说,就是你告诉它"找到图里的白色花瓶",它就能在图片上准确标出花瓶的位置。 ### 1.2 核心功能特点 - **智能视觉定位**:通过文本指令定位图像中的目标对象 - **多模态理解**:同时处理文本和图像/视频输入 - **精准坐标输出**:返回目标在画面中的bounding box坐标 - **零标注需求**:无需额外训练数据,开箱即用 - **广泛适用性**:支持日常物品、人像、场景元素等多种目标 ### 1.3 典型应用场景 这个模型特别适合以下场景: - 电商平台的商品自动标注和分类 - 智能相册的内容检索和管理 - 安防监控中的目标检测和追踪 - 内容创作中的图像自动化处理 - 机器人视觉导航和环境感知 ## 2. 环境准备与系统要求 ### 2.1 硬件要求 在开始部署之前,请确保你的服务器满足以下硬件要求: | 硬件组件 | 最低要求 | 推荐配置 | |---------|---------|---------| | GPU | NVIDIA GTX 1080 (8GB) | RTX 3080 (12GB) 或更高 | | 内存 | 16GB RAM | 32GB RAM | | 存储 | 50GB可用空间 | 100GB SSD | | CPU | 4核处理器 | 8核处理器 | ### 2.2 软件要求 - **操作系统**:CentOS 7.6或更高版本 - **内核版本**:3.10或更高 - **GCC版本**:4.8.5或更高 - **Python版本**:3.8或3.9 ## 3. NVIDIA驱动安装 ### 3.1 检查当前驱动状态 首先检查系统是否已安装NVIDIA驱动: ```bash # 检查NVIDIA驱动 nvidia-smi # 如果显示"command not found",说明需要安装驱动 ``` ### 3.2 禁用Nouveau驱动 Nouveau是开源的NVIDIA驱动,需要先禁用: ```bash # 创建配置文件 echo -e "blacklist nouveau\noptions nouveau modeset=0" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf # 重建initramfs sudo dracut --force # 重启系统 sudo reboot ``` ### 3.3 安装NVIDIA驱动 ```bash # 添加ELRepo仓库 sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org sudo rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm # 安装驱动 sudo yum install nvidia-detect nvidia-detect # 检测推荐驱动版本 # 安装推荐版本的驱动 sudo yum install kmod-nvidia ``` ### 3.4 验证驱动安装 ```bash # 检查驱动版本 nvidia-smi # 预期输出类似: # +-----------------------------------------------------------------------------+ # | NVIDIA-SMI 515.86.01 Driver Version: 515.86.01 CUDA Version: 11.7 | # |-------------------------------+----------------------+----------------------+ # | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | # | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | # | | | MIG M. | # |===============================+======================+======================| # | 0 NVIDIA GeForce ... On | 00000000:01:00.0 On | N/A | # | 0% 43C P8 10W / 250W | 158MiB / 11264MiB | 0% Default | # | | | N/A | # +-------------------------------+----------------------+----------------------+ ``` ## 4. CUDA工具包安装 ### 4.1 下载CUDA工具包 访问NVIDIA官网下载适合的CUDA版本,或者使用wget: ```bash # 下载CUDA 11.7(适配大多数现代AI模型) wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run # 添加执行权限 chmod +x cuda_11.7.0_515.43.04_linux.run ``` ### 4.2 安装CUDA ```bash # 运行安装程序 sudo ./cuda_11.7.0_515.43.04_linux.run # 安装选项建议: # - 接受协议 # - 取消选择Driver(因为我们已经安装了) # - 选择安装CUDA Toolkit # - 选择创建符号链接 ``` ### 4.3 配置环境变量 ```bash # 编辑bash配置文件 echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc echo 'export CUDA_HOME=/usr/local/cuda' >> ~/.bashrc # 使配置生效 source ~/.bashrc ``` ### 4.4 验证CUDA安装 ```bash # 检查CUDA版本 nvcc --version # 预期输出: # nvcc: NVIDIA (R) Cuda compiler driver # Copyright (c) 2005-2022 NVIDIA Corporation # Built on Wed_Jun__8_16:49:14_PDT_2022 # Cuda compilation tools, release 11.7, V11.7.99 # Build cuda_11.7.r11.7/compiler.31442593_0 # 运行CUDA样例测试 cd /usr/local/cuda/samples/1_Utilities/deviceQuery sudo make ./deviceQuery ``` ## 5. Conda环境配置 ### 5.1 安装Miniconda ```bash # 下载Miniconda安装脚本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 运行安装脚本 bash Miniconda3-latest-Linux-x86_64.sh # 按照提示完成安装,建议选择默认路径 # 安装完成后重启终端或运行: source ~/.bashrc ``` ### 5.2 创建专用环境 ```bash # 创建名为chord的Python环境 conda create -n chord python=3.9 -y # 激活环境 conda activate chord # 验证环境 python --version # 应该显示Python 3.9.x ``` ### 5.3 安装基础依赖 ```bash # 升级pip pip install --upgrade pip # 安装PyTorch(匹配CUDA 11.7) pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117 # 安装其他基础依赖 pip install numpy pandas matplotlib opencv-python pillow ``` ## 6. Chord模型部署 ### 6.1 创建项目目录 ```bash # 创建项目目录结构 mkdir -p ~/chord-service/{app,config,logs,models} cd ~/chord-service ``` ### 6.2 安装模型依赖 ```bash # 确保在chord环境中 conda activate chord # 安装transformers和相关库 pip install transformers>=4.30.0 pip install accelerate>=0.20.0 pip install gradio>=3.34.0 pip install supervision>=0.14.0 # 安装其他实用工具 pip install requests tqdm huggingface_hub ``` ### 6.3 下载Qwen2.5-VL模型 ```bash # 使用huggingface_hub下载模型 python -c " from huggingface_hub import snapshot_download snapshot_download( repo_id='Qwen/Qwen2.5-VL-7B-Instruct', local_dir='./models/Qwen2.5-VL-7B', ignore_patterns=['*.msgpack', '*.h5', '*.ot'], local_dir_use_symlinks=False ) " ``` ### 6.4 创建模型加载脚本 创建 `app/model_loader.py`: ```python import torch from transformers import AutoModelForCausalLM, AutoTokenizer from PIL import Image import logging logger = logging.getLogger(__name__) class ChordModel: def __init__(self, model_path, device="auto"): self.model_path = model_path self.device = device self.model = None self.tokenizer = None self.processor = None def load(self): """加载模型和处理器""" try: from transformers import AutoProcessor logger.info(f"正在加载模型: {self.model_path}") # 自动选择设备 if self.device == "auto": self.device = "cuda" if torch.cuda.is_available() else "cpu" # 加载tokenizer和processor self.tokenizer = AutoTokenizer.from_pretrained( self.model_path, trust_remote_code=True ) self.processor = AutoProcessor.from_pretrained( self.model_path, trust_remote_code=True ) # 加载模型 self.model = AutoModelForCausalLM.from_pretrained( self.model_path, torch_dtype=torch.bfloat16 if self.device == "cuda" else torch.float32, device_map=self.device, trust_remote_code=True ) logger.info(f"模型加载完成,使用设备: {self.device}") return True except Exception as e: logger.error(f"模型加载失败: {str(e)}") return False def infer(self, image, prompt, max_new_tokens=512): """执行推理""" try: # 准备输入 messages = [ { "role": "user", "content": [ {"type": "image"}, {"type": "text", "text": prompt} ] } ] # 处理输入 text = self.processor.apply_chat_template( messages, tokenize=False, add_generation_prompt=True ) inputs = self.processor( text=text, images=[image], padding=True, return_tensors="pt" ).to(self.device) # 生成输出 with torch.no_grad(): generated_ids = self.model.generate( **inputs, max_new_tokens=max_new_tokens, do_sample=False ) # 解码输出 generated_ids = [ output_ids[len(input_ids):] for input_ids, output_ids in zip( inputs.input_ids, generated_ids ) ] response = self.tokenizer.batch_decode( generated_ids, skip_special_tokens=True )[0] return { "text": response, "boxes": self._extract_boxes(response), "image_size": image.size } except Exception as e: logger.error(f"推理失败: {str(e)}") return None def _extract_boxes(self, text): """从模型输出中提取边界框坐标""" import re # 匹配<box>标签中的坐标 box_pattern = r'<box>\((\d+),(\d+)\),\((\d+),(\d+)\)</box>' matches = re.findall(box_pattern, text) boxes = [] for match in matches: try: x1, y1, x2, y2 = map(int, match) boxes.append((x1, y1, x2, y2)) except ValueError: continue return boxes ``` ### 6.5 创建Gradio界面 创建 `app/gradio_app.py`: ```python import gradio as gr from model_loader import ChordModel from PIL import Image import os import logging # 配置日志 logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) # 初始化模型 model = None def init_model(): """初始化模型""" global model if model is None: model_path = os.getenv("MODEL_PATH", "./models/Qwen2.5-VL-7B") device = os.getenv("DEVICE", "auto") model = ChordModel(model_path=model_path, device=device) success = model.load() if not success: raise RuntimeError("模型加载失败,请检查模型路径和设备配置") return model def visualize_boxes(image, boxes): """在图像上绘制边界框""" from PIL import ImageDraw if not boxes: return image draw = ImageDraw.Draw(image) for box in boxes: x1, y1, x2, y2 = box draw.rectangle([x1, y1, x2, y2], outline="red", width=3) draw.text((x1, y1-20), "Target", fill="red") return image def process_image(input_image, prompt): """处理图像和文本提示""" try: # 初始化模型 model = init_model() # 转换图像格式 if isinstance(input_image, str): image = Image.open(input_image) else: image = Image.fromarray(input_image) # 执行推理 result = model.infer(image=image, prompt=prompt) if result is None: return None, "推理失败,请查看日志获取详细信息" # 绘制边界框 annotated_image = visualize_boxes(image.copy(), result["boxes"]) # 准备输出信息 output_info = f""" **模型输出**: {result['text']} **检测到的边界框**: {len(result['boxes'])} 个 **图像尺寸**: {result['image_size']} **边界框坐标**: """ for i, box in enumerate(result["boxes"]): output_info += f"\n- 目标 {i+1}: {box}" return annotated_image, output_info except Exception as e: logger.error(f"处理失败: {str(e)}") return None, f"处理失败: {str(e)}" # 创建Gradio界面 with gr.Blocks(title="Chord视觉定位服务") as demo: gr.Markdown("# Chord视觉定位服务") gr.Markdown("基于Qwen2.5-VL的多模态视觉定位模型,支持通过文本指令定位图像中的目标对象。") with gr.Row(): with gr.Column(): input_image = gr.Image( label="上传图像", type="filepath", height=400 ) prompt = gr.Textbox( label="文本提示", placeholder="例如:找到图中的人/汽车/白色花瓶等", lines=2 ) submit_btn = gr.Button(" 开始定位", variant="primary") with gr.Column(): output_image = gr.Image( label="标注结果", height=400 ) output_text = gr.Markdown( label="检测结果" ) # 示例 gr.Examples( examples=[ ["示例图片URL或路径", "找到图中的人"], ["示例图片URL或路径", "定位所有的汽车"], ["示例图片URL或路径", "图中的白色花瓶在哪里?"] ], inputs=[input_image, prompt], outputs=[output_image, output_text], fn=process_image, cache_examples=False ) # 绑定事件 submit_btn.click( fn=process_image, inputs=[input_image, prompt], outputs=[output_image, output_text] ) if __name__ == "__main__": demo.launch( server_name="0.0.0.0", server_port=7860, share=False ) ``` ## 7. 服务配置与启动 ### 7.1 创建启动脚本 创建 `start_service.sh`: ```bash #!/bin/bash # 激活conda环境 source /root/miniconda3/bin/activate chord # 进入项目目录 cd /root/chord-service # 启动Gradio服务 python app/gradio_app.py ``` 给脚本添加执行权限: ```bash chmod +x start_service.sh ``` ### 7.2 使用Supervisor管理服务 安装Supervisor: ```bash sudo yum install epel-release sudo yum install supervisor sudo systemctl enable supervisord sudo systemctl start supervisord ``` 创建Supervisor配置文件 `/etc/supervisord.d/chord.conf`: ```ini [program:chord] directory=/root/chord-service command=/root/chord-service/start_service.sh autostart=true autorestart=true startretries=3 user=root redirect_stderr=true stdout_logfile=/root/chord-service/logs/chord.log stdout_logfile_maxbytes=10MB stdout_logfile_backups=5 environment= MODEL_PATH="/root/chord-service/models/Qwen2.5-VL-7B", DEVICE="auto", PYTHONUNBUFFERED="1" ``` 重新加载配置并启动服务: ```bash sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start chord ``` ### 7.3 验证服务运行 ```bash # 检查服务状态 sudo supervisorctl status chord # 查看日志 tail -f /root/chord-service/logs/chord.log # 检查端口监听 netstat -tlnp | grep 7860 ``` ## 8. 使用测试 ### 8.1 访问Web界面 在浏览器中打开:`http://你的服务器IP:7860` ### 8.2 基本使用步骤 1. **上传图像**:点击上传区域选择图片文件 2. **输入提示**:在文本框中输入描述,如"找到图中的人" 3. **开始定位**:点击"开始定位"按钮 4. **查看结果**:右侧显示标注后的图像和详细信息 ### 8.3 测试示例 ```python # 测试脚本 test_chord.py from model_loader import ChordModel from PIL import Image import requests from io import BytesIO # 初始化模型 model = ChordModel( model_path="./models/Qwen2.5-VL-7B", device="auto" ) model.load() # 测试图像URL(替换为实际图像URL) test_image_url = "https://example.com/test.jpg" response = requests.get(test_image_url) image = Image.open(BytesIO(response.content)) # 执行推理 result = model.infer( image=image, prompt="找到图中的人", max_new_tokens=512 ) print("检测结果:") print(f"文本输出: {result['text']}") print(f"边界框数量: {len(result['boxes'])}") print(f"边界框坐标: {result['boxes']}") ``` ## 9. 常见问题排查 ### 9.1 GPU内存不足 如果遇到CUDA out of memory错误: ```bash # 减少批量大小 # 在model.infer()中调整参数 # 或者使用CPU模式(性能较低) export DEVICE="cpu" ``` ### 9.2 模型加载失败 检查模型文件完整性: ```bash # 检查模型文件 ls -lh ./models/Qwen2.5-VL-7B/ # 重新下载模型 python -c " from huggingface_hub import snapshot_download snapshot_download( repo_id='Qwen/Qwen2.5-VL-7B-Instruct', local_dir='./models/Qwen2.5-VL-7B', ignore_patterns=['*.msgpack', '*.h5', '*.ot'], local_dir_use_symlinks=False ) " ``` ### 9.3 依赖冲突 创建干净的conda环境: ```bash # 删除现有环境 conda deactivate conda env remove -n chord # 重新创建环境 conda create -n chord python=3.9 -y conda activate chord # 重新安装依赖 pip install -r requirements.txt ``` ## 10. 性能优化建议 ### 10.1 GPU优化 ```bash # 使用混合精度训练 export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512 # 启用CUDA图形 export CUDA_LAUNCH_BLOCKING=1 ``` ### 10.2 模型优化 在模型加载时使用优化配置: ```python # 使用更高效的内存管理 model = AutoModelForCausalLM.from_pretrained( model_path, torch_dtype=torch.bfloat16, device_map="auto", low_cpu_mem_usage=True, offload_folder="./offload" ) ``` ### 10.3 批处理优化 对于大量图像处理,实现批处理功能: ```python def batch_process(images, prompts, batch_size=4): """批量处理图像""" results = [] for i in range(0, len(images), batch_size): batch_images = images[i:i+batch_size] batch_prompts = prompts[i:i+batch_size] # 这里实现批量推理逻辑 batch_results = [] for img, prompt in zip(batch_images, batch_prompts): result = model.infer(img, prompt) batch_results.append(result) results.extend(batch_results) return results ``` ## 11. 总结 通过本教程,你已经在CentOS 7系统上成功搭建了完整的Chord视觉定位模型环境。这个环境包括: 1. **NVIDIA驱动**:为GPU计算提供基础支持 2. **CUDA工具包**:启用GPU加速计算 3. **Conda环境**:管理Python依赖和版本 4. **Chord模型**:基于Qwen2.5-VL的视觉定位服务 5. **Web界面**:通过Gradio提供友好的用户界面 6. **服务管理**:使用Supervisor确保服务稳定运行 现在你可以通过浏览器访问 `http://服务器IP:7860` 来使用这个强大的视觉定位服务了。无论是寻找图像中的特定对象,还是进行自动化图像标注,Chord模型都能提供准确可靠的服务。 --- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

Python内容推荐

新型电力系统多维度运行状态分析与稳定优化研究(Python代码实现)

新型电力系统多维度运行状态分析与稳定优化研究(Python代码实现)

内容概要:本文系统性地探讨了新型电力系统多维度运行状态分析与稳定优化的关键技术,结合Python与Simulink等多种工具实现了丰富的算法仿真与工程建模。研究内容涵盖交直流混合配电系统柔性互联、微电网优化运行、虚拟同步发电机(VSG)控制、序阻抗扫频与时域稳定性建模、配电网重构、储能配置、风光储协调调度、电力系统状态估计、小扰动与短路电流分析、负荷与新能源功率预测等核心技术。同时深入涉及IEC 61850标准下SCD文件解析与回路可视化、虚拟阻抗控制、多目标协同规划、鲁棒优化与动态状态估计等高级主题,配套提供大量可用于科研复现、论文写作和工程实践的Matlab/Simulink仿真案例与Python代码资源。; 适合人群:具备一定电力系统理论基础和编程能力,从事电气工程、自动化、能源互联网、综合能源系统等方向的研究生、科研人员及工程技术人员,特别适用于正在开展高水平学术研究或承担实际工程项目的专业人士。; 使用场景及目标:①支撑新型电力系统稳定性分析、优化控制策略设计及相关科研课题攻关;②服务于高质量期刊论文复现、学位论文撰写或科研项目申报与实施;③掌握基于Python/Matlab/Simulink的电力系统建模、仿真与优化方法,提升科研创新能力与工程实践水平。; 阅读建议:建议结合文中提供的代码实例与仿真模型,按照技术模块循序渐进地学习与调试,重点关注算法实现逻辑、系统建模细节与参数设置依据,同时参考所提供的网盘资源获取完整资料,注重理论推导与编程实践深度融合,以实现从理解掌握到自主创新的跃迁。

用 Java NIO 写一个控制台聊天室

用 Java NIO 写一个控制台聊天室

用 Java NIO 写一个控制台聊天室

STM32C552开发(1)-点亮LED

STM32C552开发(1)-点亮LED

STM32C552开发(1)----点亮LED CSDN文字教程:https://blog.csdn.net/qq_24312945/article/details/161573406 B站教学视频:https://www.bilibili.com/video/BV1aGVQ6AEc2/ STM32C552 & SENSOR是一款基于STM32C5系列微控制器的评估套件。该微控制器采用了40nm工艺制造,具有更快的FLASH访问,更高的性能以及更低的功耗。此外,该套件具有丰富的接口和外设,以及传感器(SENSOR)系列连接器接口,为开发者提供了便捷且灵活的开发环境。 这里通过配置LED输出进行简单测试。

【计算机视觉】基于YOLOv11的多任务检测模型在芯片先进封装视觉检测与自动分拣系统中的应用研究

【计算机视觉】基于YOLOv11的多任务检测模型在芯片先进封装视觉检测与自动分拣系统中的应用研究

内容概要:本文围绕YOLOv11在芯片先进封装视觉检测与分拣系统中的实战应用,系统阐述了其在高精度、实时性要求严苛的半导体制造场景下的技术优势与实现路径。文章重点介绍了YOLOv11凭借C2PSA模块和解耦头设计,在微米级缺陷检测(如焊球偏移、键合线断裂)中展现的多尺度特征提取与精确定位能力,并结合DFL回归、动态标签分配和多任务学习(目标检测+关键点检测)等核心技术,显著提升检测精度。通过TensorRT/ONNX加速部署,实现在Jetson Xavier等边缘设备上30+ FPS的实时性能,满足产线毫秒级响应需求。配套代码实现了从数据集构建、模型训练、PLC通信集成到自动分拣的全流程闭环系统。; 适合人群:计算机视觉算法工程师、工业质检领域研发人员、智能制造系统集成工程师,以及对AI在高端制造业落地感兴趣的技术人员;具备深度学习和Python编程基础者更佳。; 使用场景及目标:①应用于芯片贴装、引线键合、BGA焊球、最终外观检查等环节的自动化光学检测(AOI);②构建与PLC联动的实时分拣控制系统,实现缺陷识别→质量判定→物理分选的产线闭环;③学习如何将YOLOv11多任务模型部署于边缘计算平台并优化推理速度。; 阅读建议:此资源以真实工业场景为背景,不仅提供可运行的完整代码实例,还深入讲解了关键点分析质量、Modbus通信、TensorRT量化等工程细节,建议读者结合代码实践,重点关注多任务损失配置、产线集成逻辑与性能优化策略,以掌握AI质检系统的全栈实现能力。

【嵌入式硬件】全志T113芯片硬件设计指南:原理图与PCB设计规范在车载及工控应用中的实施

【嵌入式硬件】全志T113芯片硬件设计指南:原理图与PCB设计规范在车载及工控应用中的实施

内容概要:本文档为全志T113系列芯片的硬件设计指南,详细介绍了T113-S3、T113-V和T113-i在车载、工控等应用场景下的原理图与PCB设计规范。内容涵盖系统硬件框图、时钟系统、电源方案、DRAM、Flash、CSI、显示输出、音频、EMAC、USB、SD卡、WiFi、GPIO等接口的设计要求,以及PCB叠层、Fanout布局、热设计和EMC抗干扰设计等关键技术要点。文档强调参考设计模板的重要性,尤其在DRAM和高速信号布线方面需严格遵循全志提供的方案以确保稳定性与兼容性。; 适合人群:从事嵌入式硬件开发的工程师,特别是负责工业控制、车载电子、智能终端等产品开发的硬件研发人员和技术支持工程师。; 使用场景及目标:①指导基于全志T113芯片的主板设计,确保电源时序、时钟稳定性、信号完整性符合规范;②帮助开发者规避常见设计风险,如引脚复用错误、电源不匹配、EMI/ESD防护不足等问题;③提供完整热设计与EMC设计参考,提升产品可靠性与认证通过率。; 阅读建议:本指南为硬件设计必备参考资料,建议在项目初期即对照文档进行架构规划,重点关注电源树、时钟路径、高速信号布线及ESD防护设计。所有未使用功能模块的引脚处理、电源配置和散热设计均需按文档说明执行,重大设计变更前应联系全志FAE确认。

组合专机-丝杠车床改光杠键槽铣专机进给系统设计.rar

组合专机-丝杠车床改光杠键槽铣专机进给系统设计.rar

组合专机-丝杠车床改光杠键槽铣专机进给系统设计.rar

小红书创作者MCP工具包 - 支持与AI客户端集成的内容创作和发布工具.zip

小红书创作者MCP工具包 - 支持与AI客户端集成的内容创作和发布工具.zip

小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接;采集小红书作品信息;提取小红书作品下载地址;下载小红书作品文件

C55.rar

C55.rar

CAD缺少相关字体时,图纸中的文字会出现缺失或乱码。下载所需字体并复制到 AutoCAD 的 Fonts 文件夹后,即可正常显示。

pip-numpy-1.23.4.tar.gz.zip

pip-numpy-1.23.4.tar.gz.zip

pip-numpy-1.23.4.tar.gz.zip

数字工业平台:驱动未来工业的核心引擎.pptx

数字工业平台:驱动未来工业的核心引擎.pptx

数字工业平台:驱动未来工业的核心引擎.pptx

pip-numpy-1.23.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.zip

pip-numpy-1.23.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.zip

pip-numpy-1.23.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.zip

小程序基于 AI 大语言模型驱动的中国古典诗词 Web 应用源代码

小程序基于 AI 大语言模型驱动的中国古典诗词 Web 应用源代码

“以诗为心,以 AI 为笔,让千年诗词与你的心灵相遇” 诗心 是一款基于 AI 大语言模型 驱动的中国古典诗词 Web 应用。用户通过输入关键词、心情描述或上传图片,即可获得 AI 匹配的古典诗词、精美赏析以及诗词卡片生成。应用融合了传统诗词文化与现代 AI 技术,提供沉浸式的诗词体验。 AI 驱动的诗词匹配:根据用户情绪/场景输入,智能匹配最贴切的古诗词 多模态交互:支持文字输入、图片上传、语音朗读等多种交互方式 精美卡片生成:7 种视觉风格模板,支持动态天气特效和 3D 倾斜交互 诗人对话:与 AI 模拟的古代诗人进行对话交流 诗词游戏:诗词接龙等互动游戏 收藏与分享:支持诗词卡片收藏、下载和分享 ———————————————— 版权声明:本文为CSDN博主「海兰」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/hadoop_/article/details/161773858

易语言源码读取电影列表及地址程序

易语言源码读取电影列表及地址程序

易语言源码读取电影列表及地址程序

ASP仪器仪表电缆产品公司网站源码带产品展示

ASP仪器仪表电缆产品公司网站源码带产品展示

ASP仪器仪表电缆产品公司网站源码带产品展示

基于VSG与一致性自适应虚拟阻抗的孤岛微电网分布式控制研究(Simulink仿真)

基于VSG与一致性自适应虚拟阻抗的孤岛微电网分布式控制研究(Simulink仿真)

内容概要:本文围绕“基于VSG与一致性自适应虚拟阻抗的孤岛微电网分布式控制研究”展开,系统探讨了孤岛运行模式下微电网的先进控制策略。研究融合虚拟同步发电机(VSG)技术,赋予逆变器类同步机的惯性与阻尼特性,有效提升了系统的频率和电压稳定性;结合一致性算法实现多分布式电源间的协同控制,解决了功率精确分配与电压恢复的关键问题;进一步提出自适应虚拟阻抗方法,通过动态调节输出阻抗,削弱因线路阻抗差异导致的功率分配偏差,显著优化了控制精度与系统鲁棒性。研究基于Simulink平台构建完整的系统仿真模型,对所提复合控制策略在动态响应速度、抗干扰能力及功率均分性能等方面进行了全面验证,为孤岛微电网的自主、稳定、高效运行提供了有效的技术路径。; 适合人群:具备电力系统、微电网控制或电力电子技术基础知识的研究生、高校科研人员及从事新能源发电、微网工程设计与开发的工程技术人员。; 使用场景及目标:①用于科研学习与高水平学术论文复现,深入理解VSG、一致性算法与自适应虚拟阻抗在微电网中的集成机理与协同效应;②为实际孤岛微电网项目的分布式控制方案设计提供理论依据与可靠的仿真技术支持;③支撑相关领域的课题申报、学术论文撰写与技术创新。; 阅读建议:建议读者结合提供的Simulink仿真模型进行同步学习与实践,重点关注各控制模块(如VSG、一致性协议、自适应虚拟阻抗)的建模细节、参数设计准则及其交互关系,通过设置不同的负载投切、电源启停等工况,细致分析仿真结果,以深刻掌握该控制策略的动态特性和工程应用优势。

哈工大《深度强化学习与控制》大作业报告和代码.zip

哈工大《深度强化学习与控制》大作业报告和代码.zip

哈工大《深度强化学习与控制》大作业报告和代码.zip

为AI Agent设计的小红书搜索和总结技能(Skill):提取小红书图文与评论,并由大模型自动合成综合调研报告。 An AI .zip

为AI Agent设计的小红书搜索和总结技能(Skill):提取小红书图文与评论,并由大模型自动合成综合调研报告。 An AI .zip

支持小红书自动发布、自动评论、自动检索的 Skill。支持 OpenClaw、Codex、CC 等

识别率更高的aruco码标记源代码

识别率更高的aruco码标记源代码

识别率更高的aruco码标记源代码

易语言源码对对碰铺助小工具

易语言源码对对碰铺助小工具

易语言源码对对碰铺助小工具

上位机C#以太网连接三菱PLC(MX Component).ppt

上位机C#以太网连接三菱PLC(MX Component).ppt

已经博主授权,源码转载自 https://pan.quark.cn/s/c3a6df0750b1 借助C#语言与MX Component技术,能够达成对三菱PLC内部X、Y、M、D各类寄存器数据的读取与写入操作,核心依赖ActUtlType.dll等工具,可兼容支持三菱网络接口、串行接口等多种PLC设备的数据采集功能,此资料限定于个人学术研究用途,严禁用于商业活动或项目开发场景。

最新推荐最新推荐

recommend-type

PyPI 官网下载 | mlpack3-3.4.2-cp36-cp36m-manylinux1_x86_64.whl

资源来自pypi官网,解压后可用。 资源全名:mlpack3-3.4.2-cp36-cp36m-manylinux1_x86_64.whl
recommend-type

实现基于C++或者python基本库,初学学习之用.zip

人工智能-项目实践-机器学习
recommend-type

机器学习的一些基础算法,主要使用Python、Cpp、Matlab编写。.zip

matlab算法,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。
recommend-type

jenkins-conf:Jenkins的配置文件

mlpack Jenkins配置和测试支持 该存储库包含Jenkins( )使用的许多脚本,用于构建和测试mlpack。
recommend-type

学生成绩管理系统C++课程设计与实践

资源摘要信息:"学生成绩信息管理系统-C++(1).doc" 1. 系统需求分析与设计 在进行学生成绩信息管理系统开发前,首先需要进行系统需求分析,这是确定系统开发目标与范围的过程。需求分析应包括数据需求和功能需求两个方面。 - 数据需求分析: - 学生成绩信息:需要收集学生的姓名、学号、课程成绩等数据。 - 数据类型和长度:明确每个数据项的数据类型(如字符串、整型等)和长度,例如学号可能是字符串类型且长度为一定值。 - 描述:详细描述每个数据项的意义,以确保系统能够准确处理。 - 功能需求分析: - 列出功能列表:用户界面应提供清晰的操作指引,列出所有可用功能。 - 查询学生成绩:系统应能通过学号或姓名查询学生的成绩信息。 - 增加学生成绩信息:允许用户添加未保存的学生成绩信息。 - 删除学生成绩信息:能够通过学号或姓名删除已经保存的成绩信息。 - 修改学生成绩信息:通过学号或姓名修改已有的成绩记录。 - 退出程序:提供安全退出程序的选项,并确保所有修改都已保存。 2. 系统设计 系统设计阶段主要完成内存数据结构设计、数据文件设计、代码设计、输入输出设计、用户界面设计和处理过程设计。 - 内存数据结构设计: - 使用链表结构组织内存中的数据,便于动态增删查改操作。 - 数据文件设计: - 选择文本文件存储数据,便于查看和编辑。 - 代码设计: - 根据功能需求,编写相应的函数和模块。 - 输入输出设计: - 设计简洁明了的输入输出提示信息和操作流程。 - 用户界面设计: - 用户界面应为字符界面,方便在命令行环境下使用。 - 处理过程设计: - 设计数据处理流程,确保每个操作都有明确的处理逻辑。 3. 系统实现与测试 实现阶段需要根据设计阶段的成果编写程序代码,并进行系统测试。 - 程序编写: - 完成系统设计中所有功能的程序代码编写。 - 系统测试: - 设计测试用例,通过测试用例上机测试系统。 - 记录测试方法和测试结果,确保系统稳定可靠。 4. 设计报告撰写 最后,根据系统开发的各个阶段,撰写详细的设计报告。 - 系统描述:包括问题说明、数据需求和功能需求。 - 系统设计:详细记录内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。 - 系统测试:包括测试用例描述、测试方法和测试结果。 - 设计特点、不足、收获和体会:反思整个开发过程,总结经验和教训。 时间安排: - 第19周(7月12日至7月16日)完成项目。 - 7月9日8:00到计算机学院实验中心(三楼)提交程序和课程设计报告。 指导教师和系主任(或责任教师)需要在文档上签名确认。 系统需求分析: - 使用表格记录系统需求分析的结果,包括数据项、数据类型、数据长度和描述。 - 分析数据项如学生成绩信息、状态器、链表节点等,确定其属性和行为。 以上就是文档中提到的学生成绩信息管理系统开发的关键知识点。开发此类系统需要熟练掌握C++编程基础,了解面向对象的程序设计思想,以及熟悉文件操作和链表等数据结构的应用。此外,良好的软件开发流程意识、测试意识和文档撰写能力也是必不可少的。
recommend-type

别再手动拖拽了!用Lumerical脚本批量创建FDTD仿真结构(附完整代码)

# 告别低效建模:Lumerical脚本自动化实战指南 在光子学仿真领域,时间就是科研生命线。当同行还在GUI界面里反复点击菜单时,你已经用脚本批量生成了20组参数化结构——这不是未来场景,而是每位FDTD用户都应该掌握的基础生产力革命。本文将彻底改变你与Lumerical的交互方式,从手动拖拽的农耕时代,跃迁到自动化建模的工业文明。 ## 1. 为何脚本建模是必然选择 2019年Nature Photonics的一项研究显示,科研工作者在仿真工具上平均浪费37%的时间在重复性操作上。对于需要参数扫描的纳米光学结构设计,这个数字可能更高。手动创建10个不同尺寸的纳米柱阵列意味着: -
recommend-type

Java邮件解析任务中,如何安全高效地提取HTML邮件内容并避免硬编码、资源泄漏和类型转换异常?

<think>我们被要求优化一段Java代码,该代码用于处理邮件(特别是来自特定发件人的构建通知邮件)。代码的主要问题包括: 1. 重复获取邮件内容:在检查MIME类型后,多次调用`msg[i].getContent()`,这可能导致性能问题或流关闭异常。 2. 类型转换问题:直接将邮件内容转换为`Multipart`而不进行类型检查,可能引发`ClassCastException`。 3. 代码结构问题:逻辑嵌套过深,可读性差,且存在重复代码(如插入邮件详情的操作在两个地方都有)。 4. 硬编码和魔法值:例如在解析HTML表格时使用了硬编码的索引(如list3.get(10)),这容易因邮件
recommend-type

RH公司应收账款管理优化策略研究

资源摘要信息:"本文针对RH公司的应收账款管理问题进行了深入研究,并提出了改进策略。文章首先分析了应收账款在企业管理中的重要性,指出其对于提高企业竞争力、扩大销售和充分利用生产能力的作用。然后,以RH公司为例,探讨了公司应收账款管理的现状,并识别出合同管理、客户信用调查等方面的不足。在此基础上,文章提出了一系列改善措施,包括完善信用政策、改进业务流程、加强信用调查和提高账款回收力度。特别强调了建立专门的应收账款回收部门和流程的重要性,并建议在实际应用过程中进行持续优化。同时,文章也意识到企业面临复杂多变的内外部环境,因此提出的策略需要根据具体情况调整和优化。 针对财务管理领域的专业学生和从业者,本文提供了一个关于应收账款管理问题的案例研究,具有实际指导意义。文章还探讨了信用管理和征信体系在应收账款管理中的作用,强调了它们对于提升企业信用风险控制和市场竞争能力的重要性。通过对比国内外企业在应收账款管理上的差异,文章总结了适合中国企业实际环境的应收账款管理方法和策略。" 根据提供的文件内容,以下是详细的知识点: 1. 应收账款管理的重要性:应收账款作为企业的一项重要资产,其有效管理关系到企业的现金流、财务健康以及市场竞争力。不良的应收账款管理会导致资金链断裂、坏账损失增加等问题,严重影响企业的正常运营和长远发展。 2. 应收账款的信用风险:在信用交易日益频繁的商业环境中,企业必须对客户信用进行评估,以便采取合理的信用政策,降低信用风险。 3. 合同管理的薄弱环节:合同是应收账款管理的法律基础,严格的合同管理能够保障企业权益,减少因合同问题导致的应收账款风险。 4. 客户信用调查:了解客户的信用状况对于预测和控制应收账款风险至关重要。企业需要建立有效的客户信用调查机制,识别和筛选信用良好的客户。 5. 应收账款回收策略:企业应建立有效的账款回收机制,包括定期的账款跟进、逾期账款的催收等。同时,建立专门的应收账款回收部门可以提升回收效率。 6. 应收账款管理流程优化:通过改进企业内部管理流程,如简化审批流程、提高工作效率等措施,能够提升应收账款的管理效率。 7. 应收账款管理策略的调整和优化:由于企业的内外部环境复杂多变,因此制定的管理策略需要根据实际情况进行动态调整和持续优化。 8. 信用管理和征信体系的作用:建立和完善企业内部信用管理体系和征信体系,有助于企业更好地控制信用风险,并在市场竞争中占据有利地位。 9. 对比国内外应收账款管理实践:通过研究国内外企业在应收账款管理上的不同做法和经验,可以借鉴先进的管理理念和方法,提升国内企业的应收账款管理水平。 综上所述,本文深入探讨了应收账款管理的多个方面,为RH公司乃至其他同类型企业提供了应收账款管理的改进方向和策略,对于财务管理专业的教育和实践都具有重要的参考价值。
recommend-type

新手别慌!用BingPi-M2开发板带你5分钟搞懂Tina Linux SDK目录结构

# 新手别慌!用BingPi-M2开发板带你5分钟搞懂Tina Linux SDK目录结构 第一次拿到BingPi-M2开发板时,面对Tina Linux SDK里密密麻麻的文件夹,我完全不知道从哪下手。就像走进一个陌生的大仓库,每个货架上都堆满了工具和零件,却找不到操作手册。这种困惑持续了整整两天,直到我意识到——理解目录结构比死记硬背每个文件更重要。 ## 1. 为什么SDK目录结构如此重要 想象你正在组装一台复杂的模型飞机。如果所有零件都混在一个箱子里,你需要花大量时间寻找每个螺丝和面板。但如果有分门别类的隔层,标注着"机身部件"、"电子设备"、"紧固件",组装效率会成倍提升。Ti
recommend-type

Java线程池运行时状态怎么实时掌握?有哪些靠谱的监控手段?

<think>我们之前已经讨论过Java线程池监控的多种方法,包括使用第三方工具和自定义监控。现在用户再次询问Java线程池监控方法,我们需要根据引用内容以及之前讨论的内容进行总结和扩展。 引用[1]提到使用JDK自带的监控工具,引用[2]提到了三种常用的线程池创建方式,引用[3]给出了通过ThreadPoolExecutor获取线程池状态的方法。 结合之前回答的内容,我们可以将监控方法分为以下几类: 1. 使用JDK自带工具(如jconsole, jvisualvm)进行监控。 2. 通过编程方式获取线程池状态(如引用[3]所示)。 3. 扩展ThreadPoolExecutor,