为您的照片提供本地 AI 视觉:使用 Llama Vision 和 ChromaDB 构建 AI 图像标记器

有没有花 20 分钟浏览您的文件夹以找到心中的特定图像或屏幕截图?您并不孤单。

作为工作中的产品经理,我总是淹没在竞争对手产品的屏幕截图、UI 灵感以及白板会议或草图的照片的海洋中。在我的个人生活中,我总是捕捉我在生活中遇到的事物,比如我的晚餐、我可爱的猫,或者秋天随机的美丽树叶。我太了解这种挣扎了。有时很难找到一张你知道自己保存在某个地方的特定图像。

随着开源视觉语言模型 Llama 3.2 Vision 的发布,我想出了一个解决这个问题的方法:一个在本地运行的 AI 工具,它可以自动描述和标记图像,以便于语义搜索,同时保持照片和标签完全在本地(并且 API 费用为零)

在本文中,我将介绍如何构建 AI 图像标记器/管理器,包括设置和运行本地视觉语言模型矢量数据库以进行语义搜索。无论您是对运行本地视觉语言模型感到好奇的 AI 爱好者,还是只是厌倦了在图像文件夹中痛苦搜索的人,这对您来说都是一个有趣且有用的项目。让我们开始吧!

(此项目在 https://github.com/Troyanovsky/llama-vision-image-tagger 上开源。随意克隆并试用!

查看实际作

前端对于管理图像集合相对简单。它使用 Vue3 构建以实现交互性,并使用 TailwindCSS 构建用于样式。它通过 FastAPI 服务器与后端通信,该服务器在视觉模型、矢量数据库和文件系统之间进行协调。让我们看看它是如何工作的。

文件夹中未标记的图像将用橙色轮廓标记。

当它启动时,它会要求您提供一个包含您的图像的文件夹。只需复制并粘贴文件夹路径,它就会开始扫描文件夹和子文件夹中的图像。第一次打开文件夹时,它还会初始化一个 vector database 来存储数据,这可能需要一段时间。

Llama3.2 Vision 会自动从图像中生成描述、标签和文本 OCR。

加载图像后,您可以单击单个图像以开始标记。它将向本地后端服务器发送请求并为映像生成标签。如果您对结果不满意,还可以手动编辑结果。所有生成/编辑的标签都将同步到矢量数据库

对于批处理,您只需按此 全部处理 按钮,它将发送所有图像进行处理。速度取决于您的计算机。如果您的 GPU 具有足够的 VRAM 来运行模型,则比在具有 RAM 的 CPU 上运行要快得多。已处理的图像将具有绿色轮廓,而尚未处理的图像将以橙色显示。

您可以使用模糊的搜索词进行搜索以进行语义匹配。

处理和标记图像后,您只需在搜索栏中键入要搜索的内容即可。它将执行包含全文搜索和向量相似性搜索的混合搜索。在这里,我们可以搜索带有模糊描述“man doing winter sport”的单板滑雪图片。

了解堆栈

在这个项目中,我们使用了 Llama 3.2 Vision、Ollama 和 ChromaDB。对于那些还不熟悉它们的人,让我快速概述一下。

Llama 3.2 Vision 是 Meta 几个月前于 2024 年 9 月发布的视觉语言模型 (VLM)。它有两种不同的尺寸,11B 和 90B。11B 版本可以在消费级计算机上本地运行。作为 VLM,它不仅可以像大型语言模型 (LLM) 一样理解文本,还可以理解上下文中的图像。它可以描述场景,理解对象之间的关系,并根据您的指示根据图像生成文本。在这个模型的帮助下,我们可以生成丰富的语义标签,而不仅仅是简单的对象检测。

Ollama 是一个开源项目,它使我们能够在本地计算机上轻松运行语言模型。它可在 Windows、MacOS 和 Linux 上使用,并支持几乎所有 GGUF 格式的本地语言模型,这使其成为在您自己的计算机上运行本地模型的最方便的选择。它还提供 Python 和 JavaScript 中的绑定,以便您可以在代码中以编程方式调用模型。更棒的是,它最近增加了对生成结构化输出(如 JSON)的支持,从而可以更轻松地处理文本生成。

(如果您对运行本地 LLM 感兴趣,可以阅读本文或访问此 GitHub 存储库,其中提供了有关如何运行本地 LLM 的资源,并为许多 LLM 提供了易于尝试的 Web UI。

至于我们的语义搜索,我们将使用 ChromaDB。这是一个开源矢量数据库,允许您保存文本嵌入数据,并使用自然语言以闪电般的速度查询它们。例如,您可以使用 “water sport”、“aquatics” 或 “snorkeling” ,而不必使用 “swimming” 等确切的关键字进行搜索。像 ChromaDB 这样的向量数据库通过将我们的图像描述转换为捕获语义含义并计算嵌入之间的相似性的高维向量来实现这一点。

现在您已经了解了此项目的组件,在下一节中,我们将深入探讨这些组件如何协同工作以创建我们的图像标记和搜索系统。

深入研究代码

让我们分解一下这些组件如何协同工作来创建我们的图像管理系统。由于在浏览器中访问文件系统的限制,我将应用程序分为前端和后端。前端用于查看和管理图片,后端主要包含两个流水线:图片标注流水线和图片查询流水线。

使用 Ollama 和 Llama3.2 Vision 的图像标记管道

选择文件夹后,我们将在该文件夹中扫描该文件夹中的所有图像。然后用户可以选择一个图像进行标记或标记所有图像。它本质上是具有结构化输出的简单提示工程。让我们引导您了解如何在您自己的本地计算机上使用 Ollama 运行 Llama 3.2 Vision 模型。

首先,您需要在您的机器上安装 Ollama。感谢出色的 Ollama 团队,他们为 Windows、MacOS 和 Linux 提供轻松下载 (https://ollama.com/download)。只需下载并安装可执行文件,您就可以使用 Ollama 命令行。然后,您可以使用以下命令下载 Llama3.2 Vision:

OLLAMA Run LLAMA3.2-vision如果你有一台非常强大的机器,你可以使用 OLLAMA Run LLAMA3.2-vision:90B 来获得更大的版本

拉取模型后,您可以通过命令行或 Python 库使用它。在我们的项目中,我们将使用 ollama-python 库,您可以使用以下方法安装该库:

pip install ollama

安装后,我们可以使用 Python 与模型进行交互。Ollama 最近增加了对结构化输出 (JSON) 的支持,因此我们可以使用 Pydantic 定义一个 JSON 模式,以传递给模型以进行类型安全和验证。

import ollama
from pydantic import BaseModel
from pathlib import 路径
from typing import List, Dictclass ImageTags(BaseModel):tags: List[str]def process_image(image_path: Path) -> Dict:try:# 如果不存在,请确保图像路径存在image_path exists():raise FileNotFoundError(f“Image not found: {image_path}”)# 将图像路径转换为 Ollama的字符串 image_path_str = str(image_path)# 获取标签tags_response = get_tags(image_path_str)return {“tags”: tags_response.tags}except Exception as e:raisedef get_tags(image_path: str) -> ImageTags:“”“获取图像的结构化标签。response = query_ollama(“列出此图像的 5-10 个相关标签。包括两个对象、艺术风格、图像类型、颜色等“,
image_path,ImageTags.model_json_schema
())返回 ImageTags.model_validate_json(响应)

在这里,我只展示了get_tags函数来获取标签列表,但也可以添加其他数据,如描述、图像中的对象、图像上的 OCR 文本等。您只需为每个提示编写不同的提示,然后调用 Ollama,类似于调用 OpenAI 的 API 的方式。

def query_ollama(prompt: str, image_path: str, format_schema: dict) -> str:“”“向 Ollama 发送带有结构化输出图像的查询。try:response = ollama.chat(model='llama3.2-vision',messages=[{'角色': '用户','内容': 提示符,'images': [image_path],'options': {'num_gpu': 41}}],format=format_schema)return response['message']['content']except Exception as e:raise

通过类似的设置,您可以在自己的计算机上使用 Ollama 轻松运行其他 LLM 或视觉语言模型。您可以在 Ollama 模型库 (library) 中找到可用模型的列表。

具有向量数据库的语义查询管道

标记所有图像后,我们可以保存它以便于查询。对于全文搜索,我们可以简单地将数据保存到 JSON 或关系数据库。但是,如果只有全文搜索,仍然很难找到相关的图像——有时您可能只是对您想要的图像有一个模糊的概念,而不是确切的标签,例如,您可能记得您有一张吃一顿丰盛晚餐的照片,但您不记得确切的菜肴。因此,我们将标签和描述保存到向量数据库中,并通过可以捕获语义含义的嵌入的相似性搜索来检索它们。

ChromaDB 易于设置,您可以完全离线运行。我们的向量存储实现的核心是 VectorStore 类。它处理与 ChromaDB 的所有交互,包括添加新图像、更新现有图像和执行语义搜索。

设置数据并将其保存到 ChromaDB 非常简单:

def add_or_update_image(self, image_path: str, metadata: Dict) -> None:# 合并所有文本字段进行嵌入text_to_embed = f“{metadata.get('description', '')} {' '.join(metadata.get('tags', []))} {metadata.get('text_content', '')}”# 准备元数据字典 - ChromaDB 需要字符串值meta_dict = {“description”: metadata.get(“description”, “”),“tags”: “,”.join(metadata.get(“tags”, [])),“text_content”: metadata.get(“text_content”, “”),“is_processed”: str(metadata.get(“is_processed“, False))}# 检查文档是否存在并相应地更新或添加results = self.collection.get(ids=[image_path])if results and results['ids']:self.collection.update(ids=[image_path],documents=[text_to_embed],metadatas=[meta_dict])否则:self.collection.add(ids=[image_path],documents=[text_to_embed],metadatas=[meta_dict])

在这个函数中,我们做了一些重要的事情:

  1. 将所有文本字段(描述、标记、文本内容)合并为一个字符串以进行嵌入
  2. 将元数据转换为 ChromaDB 可以存储的格式(所有值都必须是字符串)
  3. 如果不在数据库中,则添加图像数据,如果图像数据已存在,则更新图像数据

现在我们已经存储了数据,让我们看看我们如何搜索它。ChromaDB 提供了简单的方法来查询数据库:

def search_images(self, query: str, limit: int = 5) -> List[str]:results = self.collection.query(query_texts=[query],n_results=limit,include=['documents', 'metadatas', 'distances'])filtered_results = []for image_id, distance in zip(results['ids'][0], results['distances'][0]):如果距离< 1.1: # 仅包含高置信度匹配项filtered_results.append(image_id)return filtered_results[:limit]

ChromaDB 在后台使用相同的嵌入模型将您的搜索查询和存储的图像描述转换为高维向量。然后,它会根据相似性查找最接近的匹配项。这意味着搜索“beach vacation”可能会匹配带有“tropical paradise”或“seaside resort”标签的图片,即使您的查询中没有这些确切的字词。我还添加了对最大距离的检查,以便过滤掉不真正相关的结果。

通过结合全文搜索和矢量搜索的混合搜索方法,如果我们对全文搜索有把握,我们可以确保准确找到我们想要的内容,并在不太确定时找到相关图像。

这是后端的两个主要组件,用于处理图像标记和语义查询。通过了解它们的工作原理,您还将学习如何使用 Ollama 在本地计算机上运行多模态视觉语言模型(或任何 LLM),以及如何设置向量数据库并使用 ChromaDB 等向量数据库对文本进行语义查询。这些对于许多其他基于 LLM 的本地项目非常有用。

一些进一步的改进

当前版本只是初始版本,非常适合我个人用于查找屏幕截图和个人照片。有很多方法可以改进它:

  1. 图像相似性搜索:用户不仅可以按文本搜索,还可以选择图像并找到视觉上相似的图像。但遗憾的是,Ollama 目前不支持多模态嵌入。我们可以使用其他嵌入模型(如 CLIP)并将嵌入保存到 ChromaDB。
  2. 可自定义的标记:目前,标记提示在代码中是硬编码的,但我们可以允许更灵活的方法来定义提示,以便不同的用户可以拥有符合他们需求的不同标签。例如,UI 设计人员可能希望专门标记界面元素,而摄影师可能更关心构图和光照。
  3. 更强大的视觉模型:我发现较小的 11B 版本的 llama 3.2 视觉有时会误解图像。幸运的是,模型公司不断推出新的开源模型,例如 Qwen 最近发布的 QvQ 模型。我们可以允许交换视觉模型,以便对图像进行更准确和详细的标记。
  4. 允许 Vision Model API。对于那些不太关心将图像发送到模型提供商的人,我们可以允许他们使用视觉语言模型的 API,以便更快地进行标记过程(Gemini、Qwen、OpenAI 等)。

结论:释放局部视觉模型的潜力

这个项目最让我兴奋的不仅仅是为自己解决了图像搜索问题,还在于开源多模态 AI 模型的可访问性。就像本地大型语言模型允许我们创建完全在本地机器上运行的基于文本的有趣应用程序一样,视觉语言模型开辟了更多的可能性。

这只是本地视觉语言模型可能性的一个示例。相同的基本组件:使用 Ollama + 向量数据库运行本地模型可以适应更多用例。

如果你一直对构建 AI 驱动的应用程序感到好奇,但担心复杂性、隐私或 API 成本,我希望这个项目向你展示它比你想象的要平易近人得多。请随意提取代码来试用它,或者更好的是,为这个项目做出贡献。您还可以对其进行修改,让它成为您自己项目的起点。

命令备注

Uvicorn 使用方法

bash

pip install uvicorn

在开始之前,你需要确保你的开发环境中安装了 Python 3.7 或更高版本。你还需要安装 FastAPI 和 Uvicorn。可以通过以下命令安装:

bash

pip install fastapi uvicorn

安装ChromaDB


要安装ChromaDB,你需要先安装Python 3.6或更高版本,然后用pip命令安装chromadb包:

pip install chromadb

ChromaDB python 使用教程及记录 - 知乎

mark bei

小编实测  基本上是英文 对中文不友好

这是AI自己加的tag 

{"Snipaste_2025-04-18_09-12-26.png": {"description": "This is a photograph of a solid gray British Shorthair cat with yellow eyes standing on a beige floor and facing the camera.","tags": ["cute cat","photography","pet photography","cat portrait","cat eyes","whiskers","furry coat"],"text_content": "","is_processed": true},"Snipaste_2025-04-18_09-12-40.png": {"description": "The image shows a close-up of the head and upper body of what appears to be a British Shorthair cat lying down on a white fur blanket. The cat has orange eyes, a gray face with white markings around its nose and mouth, and a white body.","tags": ["cat","animal","fur","white","gray","close-up","portrait","pet","feline","photography","indoor","studio","lighting"],"text_content": "","is_processed": true},"Snipaste_2025-04-18_09-12-50.png": {"description": "","tags": [],"text_content": "","is_processed": false},"Snipaste_2025-04-18_09-13-06.png": {"description": "","tags": [],"text_content": "","is_processed": false},"Snipaste_2025-04-18_09-13-13.png": {"description": "","tags": [],"text_content": "","is_processed": false},"Snipaste_2025-04-18_09-13-21.png": {"description": "","tags": [],"text_content": "","is_processed": false},"Snipaste_2025-04-18_09-13-34.png": {"description": "","tags": [],"text_content": "","is_processed": false},"Snipaste_2025-04-18_09-13-40.png": {"description": "The image depicts a partially sliced cucumber on a light-colored cutting board. A basket of additional cucumbers sits above it to the left, while a partial view of another cucumber is visible behind the cutting board.","tags": ["food","cucumber","cutting board","kitchen","photography","still life","vegetable","slicing","raw food","healthy eating","cooking","ingredients"],"text_content": "","is_processed": true},"Snipaste_2025-04-18_09-13-55.png": {"description": "The photo is a low-resolution image of a sandy beach and body of water, with white clouds on the horizon.","tags": ["beach","ocean","clouds","sky","water","sand","people","blue"],"text_content": "","is_processed": true},"Snipaste_2025-04-18_09-14-01.png": {"description": "","tags": [],"text_content": "","is_processed": false},"Snipaste_2025-04-18_09-18-34.png": {"description": "","tags": [],"text_content": "","is_processed": false},"Snipaste_2025-04-18_09-19-01.png": {"description": "\u4e00\u7fa4\u548c\u5c1a","tags": [],"text_content": "\u4e00\u7fa4\u548c\u5c1a","is_processed": true}
}

缺点 识别处理的很慢 很容易卡死有可能是慢 不能识别为中文的

不支持高版本的Python

------------

C# WPF 图像处理 使用

LabelSharp: 深度学习计算机视觉标注工具/PascalVOC/YOLO

 GPL-2.0

YOLO11 旋转目标检测 | OBB定向检测 | ONNX模型推理 | 旋转NMS_yolo11 obb-CSDN博客

yolo11n.onnx模型

YOLO(You Only Look Once)系列模型是目标检测领域的经典算法,由 Joseph Redmon 等人首次提出,后续经过多次迭代,目前官方最新版本为 YOLOv8(2023 年发布,由 Ultralytics 公司维护)。以下是 YOLO 系列的核心版本梳理及最新进展:

一、YOLO 系列核心版本回顾

1. YOLOv1(2016)
  • 特点:首次提出端到端单阶段目标检测框架,将目标检测视为回归问题,直接输出目标的位置和类别,速度极快(45 FPS),但精度较低,小目标检测效果差。
  • 缺点:定位误差大,召回率低,依赖手工特征提取。
2. YOLOv2(2017)
  • 改进:引入 锚框(Anchor Boxes)批归一化(Batch Normalization)高分辨率训练(HRNet),使用 Darknet-19 作为骨干网络,精度和速度均有提升(mAP 28.2,67 FPS)。
  • 创新:提出 K-means 锚框聚类 和 跨阶段特征融合(Feature Fusion)
3. YOLOv3(2018)
  • 核心升级:采用 多尺度检测(3 种尺度特征图),支持不同大小目标检测;使用 Darknet-53 骨干网络,结合残差连接(Residual Connections),平衡速度和精度(mAP 33,32 FPS)。
  • 优势:在保持实时性的同时,显著提升小目标检测能力。
4. YOLOv4(2020)
  • 优化:由 Alexey Bochkovskiy 团队开发,引入大量优化技巧,如 Mish 激活函数马赛克数据增强(Mosaic Augmentation)路径聚合网络(PAN) 等,精度大幅提升(mAP 43.5,65 FPS)。
  • 特点:更适合工业级应用,对 GPU 算力要求较高。
5. YOLOv5(2020 至今)
  • 商业化:Ultralytics 公司推出,非官方但广泛流行,基于 PyTorch 重构,代码更简洁灵活。
  • 特性:支持 模型缩放(N/S/M/L/X 不同尺寸),适应不同算力设备;引入 Focus 结构CSPNet(跨阶段局部网络),速度更快(YOLOv5s 在 COCO 上 26.2 mAP,140 FPS)。
  • 生态:支持数据增强、模型导出(ONNX/TensorRT)、自定义训练,社区活跃。
6. YOLOv8(2023)
  • 官方最新版本:Ultralytics 正式推出的首个官方 YOLO 版本(此前 v5 为非官方),支持 目标检测、实例分割、分类、姿态估计 四大任务。
  • 关键改进
    • 骨干网络:使用 YOLO-NAS(基于神经架构搜索) 改进的骨干,引入 深度聚合网络(Deep Aggregation Network, PAN++)
    • 损失函数:优化 CIoU Loss 和 分类损失,提升边界框回归精度。
    • 效率:比 v5 更快更强,YOLOv8n 在 COCO 上实现 50.1 mAP(640×640),推理速度 170 FPS(RTX 3090)。
    • 部署:支持多平台(CPU/GPU/Edge),导出格式丰富(ONNX/TensorRT/OpenVINO 等)。

三、YOLO 系列核心优势与应用场景

  1. 优势

    • 速度快:单阶段检测框架,适合实时应用(如视频监控、自动驾驶)。
    • 易用性:端到端训练,支持自定义数据集,部署流程成熟。
    • 多任务支持:v8 版本扩展到实例分割和姿态估计,适用场景更广泛。
  2. 典型应用

    • 安防领域:实时目标检测与跟踪。
    • 智能交通:车辆、行人检测与违章识别。
    • 工业质检:产品缺陷检测与分拣。
    • 无人机 / 机器人:环境感知与避障。

 

-----------

阿里云通用图像打标

通用图像打标常用语言和示例有哪些_视觉智能开放平台(VIAPI)-阿里云帮助中心

如何创建AccessKey_视觉智能开放平台(VIAPI)-阿里云帮助中心

TaggingImage_视觉智能开放平台-图像识别_API调试-阿里云OpenAPI开发者门户

通用图像打标常用语言和示例有哪些_视觉智能开放平台(VIAPI)-阿里云帮助中心

这个SKD 文档找了好久 丢如何下载安装、使用视觉智能开放平台C#SDK及代码示例_视觉智能开放平台(VIAPI)-阿里云帮助中心

代码和图像打标结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/76805.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka消费者端重平衡流程

重平衡的完整流程需要消费者 端和协调者组件共同参与才能完成。我们先从消费者的视角来审视一下重平衡的流程。在消费者端&#xff0c;重平衡分为两个步骤&#xff1a;分别是加入组和等待领导者消费者&#xff08;Leader Consumer&#xff09;分配方案。这两个步骤分别对应两类…

2025年五大ETL数据集成工具推荐

ETL工具作为打通数据孤岛的核心引擎&#xff0c;直接影响着企业的决策效率与业务敏捷性。本文精选五款实战型ETL解决方案&#xff0c;从零门槛的国产免费工具到国际大厂企业级平台&#xff0c;助您找到最适合的数据集成利器。 一、谷云科技ETLCloud&#xff1a;国产数据集成工…

PageIndex:构建无需切块向量化的 Agentic RAG

引言 你是否对长篇专业文档的向量数据库检索准确性感到失望&#xff1f;传统的基于向量的RAG系统依赖于语义相似性而非真正的相关性。但在检索中&#xff0c;我们真正需要的是相关性——这需要推理能力。当处理需要领域专业知识和多步推理的专业文档时&#xff0c;相似度搜索常…

ubuntu20.04 远程桌面Xrdp方式

1&#xff0c;Ubuntu 安装Xrdp 方法 1.1&#xff0c;安装xrdp sudo apt install xrdp 1.2&#xff0c;检查xrdp状态 sudo systemctl status xrdp 1.3&#xff0c;加入ssl-cert sudo adduser xrdp ssl-cert 1.4&#xff0c;重启xrdp服务 sudo systemctl restart xrdp 最后…

Java学习手册:RESTful API 设计原则

一、RESTful API 概述 REST&#xff08;Representational State Transfer&#xff09;即表述性状态转移&#xff0c;是一种软件架构风格&#xff0c;用于设计网络应用程序。RESTful API 是符合 REST 原则的 Web API&#xff0c;通过使用 HTTP 协议和标准方法&#xff08;GET、…

Spring Boot 核心注解全解:@SpringBootApplication背后的三剑客

大家好呀&#xff01;&#x1f44b; 今天我们要聊一个超级重要的Spring Boot话题 - 那个神奇的主类注解SpringBootApplication&#xff01;很多小伙伴可能每天都在用Spring Boot开发项目&#xff0c;但你真的了解这个注解背后的秘密吗&#xff1f;&#x1f914; 别担心&#x…

weibo_har鸿蒙微博分享,单例二次封装,鸿蒙微博,微博登录

weibo_har鸿蒙微博分享&#xff0c;单例二次封装&#xff0c;鸿蒙微博 HarmonyOS 5.0.3 Beta2 SDK&#xff0c;原样包含OpenHarmony SDK Ohos_sdk_public 5.0.3.131 (API Version 15 Beta2) &#x1f3c6;简介 zyl/weibo_har是微博封装使用&#xff0c;支持原生core使用 &a…

tomcat集成redis实现共享session

中间件&#xff1a;Tomcat、Redis、Nginx jar包要和tomcat相匹配 jar包&#xff1a;commons-pool2-2.2.jar、jedis-2.5.2.jar、tomcat-redis-session-manage-tomcat7.jar 配置Tomcat /conf/context.xml <?xml version1.0 encodingutf-8?> <!--Licensed to the A…

JavaScript 扩展Array类方法实现数组求和

题目描述&#xff1a;使用原型对象扩展Array类&#xff0c;实现返回数字型数组的和 <script>const arr [1,2,3,4,5,6]Array.prototype.sum function(){return this.reduce((prev,item)>prev item,0)}console.log(arr.sum())</script>求和函数中this 指向调用…

中间件--ClickHouse-11--部署示例(Linux宿主机部署,Docker容器部署)

一、Linux宿主机部署 1、环境准备 操作系统&#xff1a;推荐使用 CentOS 7/8 或 Ubuntu 18.04/20.04。硬件要求&#xff1a; 至少 2 核 CPU 和 4GB 内存。足够的磁盘空间&#xff08;根据数据量评估&#xff09;。CPU需支持SSE4.2指令集&#xff08;可通过以下命令检查&#…

鸿蒙NEXT开发权限工具类(申请授权相关)(ArkTs)

import abilityAccessCtrl, { Permissions } from ohos.abilityAccessCtrl; import { bundleManager, common, PermissionRequestResult } from kit.AbilityKit; import { BusinessError } from ohos.base; import { ToastUtil } from ./ToastUtil;/*** 权限工具类&#xff08;…

LVGL学习(二)(lv_label,lv_btn)

3-1_标签(lv_label) 一、标签的组成&#xff08;盒子模型&#xff09;​​ 标签由三个核心模块构成&#xff0c;类似便签纸的​​分层设计​​&#xff1a; ​​LV_PART_MAIN&#xff08;主体层&#xff09;​​ ​​功能​​&#xff1a;相当于便签纸的"纸面"&…

深度剖析神经网络:从基础原理到面试要点(二)

引言 在人工智能蓬勃发展的今天&#xff0c;神经网络作为其核心技术之一&#xff0c;广泛应用于图像识别、自然语言处理、语音识别等众多领域。深入理解神经网络的数学模型和结构&#xff0c;对于掌握人工智能技术至关重要。本文将对神经网络的关键知识点进行详细解析&#xf…

【java+Mysql】学生信息管理系统

学生信息管理系统是一种用于管理学生信息的软件系统&#xff0c;旨在提高学校管理效率和服务质量。本课程设计报告旨在介绍设计和实现学生信息管理系统的过程。报告首先分析了系统的需求&#xff0c;包括学生基本信息管理、成绩管理等功能。接着介绍了系统的设计方案&#xff0…

Linux mmp文件映射补充(自用)

addr一般为NULL由OS指明&#xff0c;length所需长度&#xff08;4kb对齐&#xff09;&#xff0c;prot&#xff08;权限&#xff0c;一般O_RDWR以读写&#xff09;&#xff0c; flag&#xff08;MAP_SHARED(不刷新到磁盘上&#xff0c;此进程独有)和MAP_PRIVATE&#xff08;刷新…

Nginx openresty web服务 与 Go 原生web服务性能对比

1 概述 Nginx采用的是IO复用模型&#xff0c;能处理超高并发。 Go语言采用协程&#xff0c;能轻量级的处理超高并发。 那么在不考虑业务逻辑复杂的前提下&#xff0c;即假如将Nginx和Go都提供一个/test接口&#xff0c;并在接口逻辑中都只是让其做20毫秒的耗时操作&#xff0c…

[创业之路-377]:企业法务 - 有限责任公司与股份有限公司的优缺点对比

有限责任公司&#xff08;简称“有限公司”&#xff09;与股份有限公司&#xff08;简称“股份公司”&#xff09;是我国《公司法》规定的两种主要公司形式&#xff0c;二者在设立条件、治理结构、股东权利义务等方面存在显著差异。以下从核心特征、设立条件、治理结构、股东权…

QEMU源码全解析 —— 块设备虚拟化(21)

接前一篇文章:QEMU源码全解析 —— 块设备虚拟化(20) 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM源码解析与应用》 —— 李强,机械工业出版社 特此致谢! 上一回开始解析blockdev_init函数,讲到了其中调用的blk_new_open函数,该函数的作用…

蓝桥杯中的知识点

总结&#xff1a; 这次考的并不理想 比赛前好多知识点遗漏 但到此为止已经结束了 mod 是 模运算&#xff08;Modulo Operation&#xff09;的缩写&#xff0c;表示求两个数相除后的 余数 10mod31 (a % b) &#xff08;7%21&#xff09; 1e9代表1乘以10的9次方&#xff0c…

批量替换多个 Word 文档中的指定图片

在 Word 文档中&#xff0c;我们可以插入各种各样的图片&#xff0c;比如插入 logo、插入设计图、施工图等等。在某些情况下&#xff0c;我们也会碰到需要将 Word 文档中某张图片替换成其它图片的场景&#xff0c;比如将旧的 Logo 替换成新的 Logo。当我们有大量的 Word 文档需…