跳到内容


配置服务器和模块设置

服务器和模块的设置是如何提供的?

每个模块在启动时都会接收一组设置。这些设置来自多个来源:服务器本身、设置文件、环境变量和命令行。每个来源中的设置会覆盖现有设置,因此来源的加载顺序是从最通用到最具体,以便您能够微调设置以针对特定目标。

  1. `/server` 目录下的所有 appsettings.json 文件。按顺序加载。

    1. appsettings..json
    2. appsettings.mode.json 文件,其中 mode = release 或 development。
    3. appsettings.platform.json 文件,其中 platform = windows, linux, macOS,或这些加上 -arm64 用于 Arm 变体,或 docker。
    4. appsettings.platform.mode.json

    appsettings.json 文件中的设置通常与服务器相关。

  2. 模块文件夹内的所有 modulesettings.json 文件,按以下顺序加载:

    1. modulesettings.json
    2. modulesettings.mode.json,其中 mode = release 或 development。
    3. modulesettings.os.json,其中 os = windows, linux, macOS
    4. modulesettings.os.mode.json
    5. modulesettings.os.architecture.json,其中 architecture = x86_64 或 arm64
    6. modulesettings.os.architecture.mode.json
    7. modulesettings.docker.json
    8. modulesettings.docker.mode.json
    9. modulesettings.device.json,其中 device = raspberrypi, orangepi 或 jetson
    10. modulesettings.device.mode.json

    modulesettings.json 文件中的设置通常与模块相关。

  3. 如果您通过 API 更改模块或服务器设置(或查看仪表板),这些设置将保存在 **%PROGRAMDATA%\modulesettings.json** 和 **%PROGRAMDATA%\serversettings.json** 的设置“覆盖”文件中。PROGRAMDATA 位置将是:

    • Windows:C:\ProgramData\CodeProject\AI
    • Linux / Docker:/usr/share/CodePrpoject/AI
    • macOS:/Library/Application Support/CodeProject/AI
  4. 环境变量

有关模块的环境变量信息,请参阅 单个模块设置

  1. 命令行变量

更改模块的设置

模块的配置方式有多种:

  1. 编辑模块目录中的 modulesettings.json 文件(或文件)。
  2. 在系统上设置环境变量。
  3. 使用命令行参数(如果作为 Windows 应用程序或服务运行)。
  4. 设置 Docker 运行参数(如果运行 Docker 镜像)。
  5. 通过设置 API。

服务器的 appsettings.json 文件中还存储了全局设置,这些设置由所有模块共享。

我们将依次介绍设置的命名约定、全局服务器设置、单个模块设置和旧版覆盖设置,最后将介绍如何实际更改这些设置。

命名约定

要更改设置,我们需要通过名称来引用它,而该名称取决于我们进行更改的上下文。

如果在 modulesettings.json 文件中更改设置,则该设置在 Json 结构中通过名称进行引用。

例如,ObjectDetectionYolo 模块的 MODEL_SIZE 设置将在 modules/ObjectDetectionYolo/modulesettings.json 文件中。

JSON
{
  "Modules": {
    "ObjectDetectionYolo": {
      ...
      "EnvironmentVariables": {
        "MODEL_SIZE": "Medium"
        ...
      }
    }
  }
}

如果通过命令行、环境变量或启动 Docker 容器设置值,则通过其完全限定名称访问该设置。

对于通用模块设置,格式为 --Modules:<ModuleId>:Setting-Name=Value

对于模块特定设置,格式为 --Modules:<ModuleId>:EnvironmentVariables:Setting-Name=Value

对于旧版覆盖,请使用格式 --Setting-Name=Value

当前预装模块有:

模块 ModuleId
人脸处理 FaceProcessing
对象检测 (.NET, ONNX) ObjectDetectionNet
对象检测 (Python, PyTorch) ObjectDetectionYolo

以及可下载(运行时安装)的模块有:

模块 ModuleId
背景移除器 背景移除
卡通化 卡通化
图像超分辨率 SuperResolution
车牌识别器 ALPR
对象检测 (Coral) ObjectDetectionCoral
对象检测 (Rockchip) ObjectDetectionYoloRKNN
对象检测 (YOLOv5 3.1) YOLOv5-3.1
光学字符识别 OCR
肖像滤镜(背景模糊) PortraitFilter
场景分类 SceneClassification
文本情感分析 SentimentAnalysis
文本摘要 TextSummary
训练 (YOLO) TrainingYolov5

设置的宏

在提供值时,可以使用一系列宏。这些宏将在运行时替换为其实际值。

描述
%ROOT_PATH% 应用程序根目录的路径。对于默认的 Windows 安装,这是 C:\Program Files\CodeProject\AI。对于 Docker,这是 /app
%RUNTIMES_PATH% 已安装的共享运行时目录的路径。在开发环境中默认为 `/src/runtimes`,在生产环境中为 `/runtimes`(相对于 ROOT_PATH)。
%MODULES_PATH% 分析模块目录的路径。在开发环境中默认为 `/src/AnalysisLmodulesayer`,在生产环境中为 `/modules`(相对于 ROOT_PATH)。
%CURRENT_MODULE_PATH% 当前模块相对于 %ROOT_PATH% 的路径。
%PLATFORM% windows, macos, macos-arm64, linux, linux-arm64
%OS% Windows, macOS 或 Linux
%DATA_DIR% 包含持久化数据的目录的路径。默认值为:
C:\ProgramData\CodeProject\AI (Windows)
/usr/share/CodePrpoject/AI (Linux)
/Library/Application Support/CodeProject/AI (macOS)
%PYTHON_RUNTIME% Python37 或 Python39,具体取决于 modulesettings.json 中的 Runtime 值。
%PYTHON_BASEPATH% 给定版本虚拟环境根目录的路径。

设置

全局(服务器)设置

使用命名格式 Modules:<ModuleId>:EnvironmentVariables:Setting-Name=Value

参数 默认值 描述
CPAI_PORT 32168 客户端应用程序和后端模块与服务器通信的端口。
CPAI_APPROOTPATH %ROOT_PATH% 应用程序根目录的绝对路径。

例如,命令行参数:
--Modules:BackgroundRemoval:EnvironmentVariables:CPAI_PORT=32168

例如,系统环境变量 set Modules:BackgroundRemoval:EnvironmentVariables:CPAI_PORT=32168

通用模块设置

使用命名格式 Modules:<ModuleId>:<Section>:Setting-Name=Value。例如,模块“TextSummary”的 LaunchSettings 部分中的 AutoStart 将指定为 Modules:TextSummary:LaunchSettings:AutoStart

每个模块将具有以下设置:

Section:Parameter 默认值 描述
LaunchSettings:AutoStart 可变 True 或 False。确定此模块在服务器启动时是否自动启动。
LaunchSettings:Parallelism 0 要启动的并发执行单元(线程、任务、进程 - 取决于模块和语言)的数量。0 的默认值表示“CPU 数量 - 1”。
LaunchSettings:PostStartPauseSecs 0 (CPU)
5 (GPU)
启动此模块后暂停的秒数。这提供了初始化时间。
GpuOptions:InstallGPU false True 或 False。确定此模块是否安装 GPU 支持。如果为 False,则 EnableGPU 将无效。
GpuOptions:EnableGPU 可变 True 或 False。此模块是否应启用 GPU 支持。设置为 False 表示禁用 GPU 支持。请注意,GPU 支持取决于模块和平台。模块不保证支持 GPU,也不保证在所有平台上都支持 GPU。
GpuOptions:AcceleratorDeviceName 取决于模块,但对于使用 CUDA 的模块,例如,这可以是“cuda:0”或“cuda:1”,以指定第一个或第二个启用 CUDA 的 GPU。
GpuOptions:HalfPrecision 取决于模块,但对于使用 CUDA 的模块,这指定是否应使用半精度运算。仅对 CUDA 计算能力 >= 6.0 的卡有效。

例如,命令行参数:
--Modules:TextSummary:LaunchSettings:AutoStart=true

例如,系统环境变量 set Modules:TextSummary:LaunchSettings:AutoStart=true

单个模块设置

许多模块都有通过环境变量更改的单个设置。使用命名格式 Modules:<ModuleId>:EnvironmentVariables:Setting-Name=Value

对象检测器 (Yolo)

默认值 描述
MODELS_DIR %MODULES_PATH%\ObjectDetectionYolo\assets 包含模型文件的文件夹路径。
CUSTOM_MODELS_DIR %MODULES_PATH%\ObjectDetectionYolo\custom-models 包含自定义模型文件的文件夹路径。
MODEL_SIZE 媒体 检测模型的大小。Tiny、Small、Medium 或 Large。此设置对自定义模型无效。
USE_CUDA True 如果可用,是否使用 CUDA。

例如,通过命令行将 MODEL_SIZE 设置为 Large,使用:

--Modules:ObjectDetectionYolo:EnvironmentVariables:MODEL_SIZE=Large

要将模型目录指向一组不同的自定义模型,请使用:

--Modules:ObjectDetectionYolo:EnvironmentVariables:CUSTOM_MODELS_DIR="C:\My Custom Models"

对象检测器 (.NET)

默认值 描述
MODEL_SIZE 媒体 检测模型的大小。Small、Medium 或 Large。

例如,通过命令行将 MODEL_SIZE 设置为 Large,使用:

--Modules:ObjectDetectionNet:EnvironmentVariables:MODEL_SIZE=Large

场景分类器

默认值 描述
MODELS_DIR %MODULES_PATH%\Vision\assets 包含模型文件的文件夹路径。
MODE MEDIUM 检测分辨率。Low、Medium 或 High。

例如,将 MODE 设置为 High,使用:

--Modules:SceneClassification:EnvironmentVariables:MODE=High

人脸检测

默认值 描述
MODELS_DIR %MODULES_PATH%\Vision\assets 包含模型文件的文件夹路径。
MODE MEDIUM 检测分辨率。Low、Medium 或 High。
DATA_DIR %DATA_DIR% 包含持久化人脸数据的文件夹路径。
USE_CUDA True 如果可用,是否使用 CUDA。

例如,将 MODE 设置为 High,使用:

--Modules:FaceProcessing:EnvironmentVariables:MODE=High

这些环境变量由所有人脸处理模块共享。

文本摘要

对于环境变量,参数前缀是:--Modules:TextSummary:EnvironmentVariables:

默认值 描述
NLTK_DATA %MODULES_PATH%\TextSummary\nltk_data 包含模型文件的文件夹路径。

例如,将 NLTK_DATA 设置为 'my-data',使用:

--Modules:TextSummary:EnvironmentVariables:NLTK_DATA=my-data

全局旧版设置覆盖

为了向后兼容某些模块,支持一系列命令行参数,这些参数提供了对多个模块的覆盖。

这些设置仅适用于人脸处理场景分类对象检测模块。

在命令行上使用格式 --Setting-Name=Value,或在系统环境变量中使用 Setting-name=Value

参数 默认值 描述
PORT 32168 (标准)
5000 (Windows, Linux 的替代)
5500 (macOS 的替代)
服务器监听请求的端口。
MODE 媒体 视觉操作的检测模式。高、中或低分辨率推理。
DATA_DIR C:\ProgramData\CodeProject\AI (Windows)
/usr/share/CodePrpoject/AI (Linux)
/Library/Application Support/CodeProject/AI (macOS)
包含人脸识别持久化数据的目录。
MODELSTORE-DETECTION
MODELSTORE_DETECTION
%MODULES_PATH%\\ObjectDetectionYolo\\custom 包含自定义 AI 模型目录。
VISION-FACE
VISION_FACE
True 是否启用人脸检测操作。
VISION-SCENE
VISION_SCENE
True 是否启用场景分类。
VISION-DETECTION
VISION_DETECTION
True 是否启用对象检测操作。
CUDA_MODE True 是否启用 CUDA 支持。

其中 %MODULES_PATH% 是一个宏,展开为分析模块目录的绝对路径。默认情况下,对于 Windows 安装是 C:\Program Files\CodeProject\AI\modules,对于 Docker 是 /app/modules

例如 --MODE=Medium

更改设置

选项 1:编辑 modulesettings.json 文件

请谨慎操作

虽然配置模块非常简单,但如果您出错,可能会导致模块无法正常工作。请务必备份您修改过的任何文件,以防需要撤销更改。

CodeProject.AI 随附的模块通过模块目录中的 modulesettings.json 文件进行配置,通常位于 C:\Program Files\CodeProject\AI\modules\<ModuleName>\modulesettings.json,其中 ModuleName 是模块的名称。

对于每种支持的操作系统,都有该文件的变体,格式为 modulesettings.<platform>.json,其中 platform 为 windows, macos, macos-arm, linux 或 docker。

要了解有关 modulesettings 文件的更多信息,请参阅 开发人员指南

要编辑值,只需在记事本或 Notepad++ 等文本编辑器中打开此文件,进行更改,然后保存文件。请务必先进行备份。

选项 2:在系统上设置环境变量

适用于 Windows

  • 点击开始菜单并键入“环境变量”。选择“编辑系统环境变量”。
  • 点击“环境变量”。
  • 点击“用户变量”或“系统变量”。用户变量仅在您登录时生效。系统变量对所有人均生效。
  • 点击“新建”添加新的变量名和值,或点击现有变量,然后点击“编辑”更改其名称或值。

对于 macOS

  • 打开终端窗口并键入 touch .zprofile 以确保 .zprofile 文件存在(假设您在 macOS 中使用 zsh。对于 bash,请使用 .bash_profile)。
  • 运行 nano .profile 编辑文件。
  • export MY_VARIABLE='my value' 的格式添加或编辑变量。
  • 保存并关闭文件。
  • 运行 source .zprofile 强制加载更改。

选项 3:重启 CodeProject.AI 服务并提供参数

默认情况下,Windows 安装程序会将 CodeProject.AI 安装为 Windows 服务,该服务将在 Windows 启动时启动,并在失败时自动重启。如果您希望自定义设置,可以选择手动启动 CodeProject.AI 服务器服务并传递命令行参数来覆盖设置。

首先,在终端中停止服务:

命令行
sc stop "CodeProject.AI Server"

然后重新启动服务,传递您想要的参数:

命令行
sc start "CodeProject.AI Server" --MODE=Low

这将重启服务并将 Vision 推理的 AI 模式设置为“low”。

选项 4. Docker

请参阅 运行 Docker 镜像 的说明。

运行 Docker 镜像的命令是:

命令行
docker run --name CodeProject.AI-Server -d -p 32168:32168 ^
 --mount type=bind,source=C:\ProgramData\CodeProject\AI\docker\data,target=/etc/codeproject/ai ^
 --mount type=bind,source=C:\ProgramData\CodeProject\AI\docker\modules,target=/app/modules ^
   codeproject/ai-server

要让 Docker 管理器将设置传递给 CodeProject.AI,请使用 -e setting=value 选项。例如,要传递 MODE=Low,您可以使用:

命令行
docker run -e MODE=Low --name CodeProject.AI-Server -d -p 32168:32168 ...
(或者为旧用户使用端口 5000)。

在 Docker 中可以更改的设置与在本地 Windows 安装中可用的设置相同。请参阅 API 文档,了解使用 Modules:ModuleName:Setting=value 格式设置的模块特定设置,例如:

命令行
docker run -e Modules:TextSummary:AutoStart=False --name CodeProject.AI-Server ...
另请参阅 全局旧版设置覆盖 部分,了解可以使用 --setting=value 格式修改的全局参数列表。

选项 5. 通过设置 API

从 CodeProject.AI 1.5.7.3 开始,有一个 API 允许您即时修改模块设置。

端点是:

POST: localhost:32168/v1/settings/<ModuleId>

其中 moduleID 由以下方式给出:

当前预装模块有:

模块 ModuleId
人脸处理 FaceProcessing
对象检测 (.Net, ONNX) ObjectDetectionNet
对象检测 (Python, PyTorch) ObjectDetectionYolo
 
背景移除器 背景移除
卡通化 卡通化
图像超分辨率 SuperResolution
车牌识别器 ALPR
对象检测 (Coral) ObjectDetectionCoral
对象检测 (Rockchip) ObjectDetectionYoloRKNN
对象检测 (YOLOv5 3.1) YOLOv5-3.1
光学字符识别 OCR
肖像滤镜(背景模糊) PortraitFilter
场景分类 SceneClassification
文本情感分析 SentimentAnalysis
文本摘要 TextSummary
训练 (YOLO) TrainingYolov5

要为模块设置设置的值,您需要通过路由(<ModuleId> 部分)指定模块,将名称设置为未装饰的设置名称(例如 MODEL_SIZECPAI_PORT),以及值。

因此,要将 YOLO 对象检测模块的模型大小设置为 Small(例如),您将执行:

POST: localhost:32168/v1/settings/ObjectDetectionYolo

并传递 name = 'MODEL_SIZE', value = 'Small'。

JavaScript
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");

var urlencoded = new URLSearchParams();
urlencoded.append("name", "MODEL_SIZE");
urlencoded.append("value", "Small");

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: urlencoded
};

fetch("localhost:32168/v1/settings/objectdetectionyolo", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

可以在“通用模块设置”和“单个模块设置”部分(位于页面顶部)找到可更改的设置列表。


© . All rights reserved.