跳到内容


通用问题

找不到自定义模型

CodeProject.AI 服务器安装时会附带两个不同的目标检测模块。这两个模块的工作方式相同,区别在于一个是支持 CUDA GPU 的 Python 实现,另一个是支持嵌入式 Intel GPU 的 .NET 实现。每个模块都附带一套可用的自定义模型。自定义目标检测需要您

  1. 确保已启用对象检测(默认情况下已启用)
  2. 使用提供的自定义模型,或 a. 将您自己的模型添加到标准的自定义模型文件夹(Windows 安装时为 C:\Program Files\CodeProject\AI\AnalysisLayer\ObjectDetectionYolo\custom-modelsC:\Program Files\CodeProject\AI\AnalysisLayer\ObjectDetectionNet\custom-models),或 b. 指定一个包含模型的目录(Docker 实用)

要指定不同的文件夹用于自定义模型,您可以:

  1. 启动时设置 --Modules:ObjectDetectionYolo:EnvironmentVariables:CUSTOM_MODELS_DIR 参数,
  2. 设置 Modules:ObjectDetectionYolo:EnvironmentVariables:CUSTOM_MODELS_DIR 环境变量,
  3. 在 ObjectDetectionYolo 文件夹中的 modulesettings.json 文件中设置 CUSTOM_MODELS_DIR 值,
  4. 设置全局覆盖(即将弃用!)变量 MODELSTORE-DETECTION 以指向您的自定义目标文件夹,
  5. (适用于 Docker)将包含自定义模型的文件夹(例如 C:\MyCustomModels)映射到目标检测的自定义资产文件夹(/app/AnalysisLayer/ObjectDetectionYolo/custom-models)。一个示例是

    仅文本
    docker run -p 32168:32168 --name CodeProject.AI-Server -d ^
      --mount type=bind,source=C:\ProgramData\CodeProject\AI\docker\data,target=/etc/codeproject/ai ^
      --mount type=bind,source=C:\MyCustomModels,target=/app/AnalysisLayer/ObjectDetectionYolo/custom-models,readonly 
        codeproject/ai-server
    

    这会将本地系统的 C:\MyCustomModels 目录挂载,并将其映射到 Docker 容器内的 /app/AnalysisLayer/ObjectDetectionYolo/custom-models 文件夹。现在,当 CodeProject.AI 服务器查找自定义模型列表时,它将查找 C:\MyCustomModels 而不是 /app/AnalysisLayer/ObjectDetectionYolo/custom-models

    请参阅 API 参考 - CodeProject.AI 服务器

端口已被占用

如果您看到:

Unable to start Kestrel.
System.IO.IOException: Failed to bind to address http://127.0.0.1:5000: address 
   already in use.
要么 CodeProject.AI 已经在运行,要么另一个应用程序正在使用 5000 端口。

我们的第一个建议是不要再使用 5000 端口。这是一个保留端口,但并非所有操作系统都在积极使用它。我们更倾向于使用 32168 端口,因为它易于记忆,并且远离其他已用端口。

您可以通过编辑 appsettings.json 文件并更改 CPAI_PORT 变量的值来更改 CodeProject.AI 使用的外部端口。在演示应用程序中,有一个端口设置需要您进行编辑以匹配新端口。

如果不行,请关闭任何使用端口 5000 的应用程序(包括任何已安装的 CodeProject.AI 服务器版本,如果您尝试在 Visual Studio 的开发模式下运行)。

GPU 未被使用

请确保您已安装 NVidia CUDA 驱动程序

  1. 安装 CUDA 11.7 驱动程序
  2. 安装 CUDA 工具包 11.7
  3. 下载并运行我们的 cuDNN 安装脚本

推理随机失败

加载 AI 模型可能会消耗大量内存,因此如果您在 GPU 或整个系统上的 RAM 较少,您有几种选择:

  1. 禁用您不需要的模块。仪表板(https://:32168)允许您单独禁用模块。
  2. 如果您使用的是 GPU,请禁用那些不一定需要 GPU 性能的模块的 GPU 功能。
  3. 如果您使用的是提供较小模型的模块(例如目标检测器 (YOLO)),请尝试通过仪表板选择一个较小的模型大小。

某些模块,特别是人脸比较,如果内存不足可能会失败。我们正在努力使系统更加精简高效。

模块启动失败

如果您使用的硬件配置较低,每个模块在能够继续加载下一个模块之前可能需要更多时间来启动。

在每个模块文件夹中的 modulesettings.json 文件中,有 PostStartPauseSecs 设置。这指定了给定模块加载和加载下一模块之间的暂停时间。如果您的模块未能正确加载,请将其设置为 3 到 5 秒。

Windows 问题

OSError: [WinError 1455] The paging file is too small for this operation to complete

简而言之,您的分页文件太小。如果您已更改(减小)分页文件设置以节省磁盘空间,您可能希望增加其大小以提供更多系统可用空间。否则,可能是因为您安装的 RAM 太少。我们建议当前版本至少需要 8GB。

服务器启动失败,出现 'System.Management.ManagementException: Invalid class' 错误

您将看到的错误是

仅文本
Description: The process was terminated due to an unhandled exception.
Exception Info: System.TypeInitializationException: The type initializer for
'CodeProject.AI.SDK.Common.SystemInfo' threw an exception.
---> System.Management.ManagementException: Invalid class
这是由于 WMI 存储库损坏。要修复损坏的 WMI,请执行以下操作:

  • 打开管理员命令或 PowerShell 窗口
  • 运行 winmgmt /verifyrepository。如果存储库有问题,它将响应“repository is not consistent”。
  • 如果存储库不一致,则需要对其进行修复。运行 winmmgmt /salvagerepository
  • 再次运行 winmgmt /verifyrepository
  • 如果它仍然报告“repository in not consistent”,那么您可能需要采取更激烈的措施来重置存储库。有关如何执行此操作以及涉及的风险的详细信息,请参阅下面的链接。

参见

开发环境

在 Linux/macOS 的开发设置过程中出现 'command not found'

在 Linux 或 macOS 上运行设置脚本(或任何脚本)时,您会看到类似以下形式的错误:

: No such file or directory 1: #1/bin/bash
: No such file or directory 10: ./utils.sh
setup.sh: line 11: $'\r': command not found
这表明 .sh 脚本文件是以 Windows 风格的 CRLF 行尾保存的,而不是 Linux/Unix 风格的 LF 行尾。

在 Visual Studio 或 Visual Studio Code 中打开脚本,编辑器窗口的右下角将显示一个行尾提示。

CRLF line ending hint

单击它并选择“LF”以更正行尾并重新运行脚本。

模型未找到

构建时您会看到

error MSB3030: Could not copy the file "<path>\\ObjectDetectionNet\\assets\\yolov5m.onnx"
  because it was not found.
在尝试构建之前,请确保您已运行开发设置脚本。

服务器启动失败

System.ComponentModel.Win32Exception: The system cannot find the file specified.
   at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)

在尝试启动服务器之前,请确保您已运行开发设置脚本。

使用 Docker

docker: Error response from daemon: invalid mode: /etc/codeproject/ai.

如果您在 Windows 上,请确保您是从 Windows Powershell 或终端运行 Docker,而不是从 WSL 终端运行。

Raspberry Pi

您必须安装 .NET 才能运行此应用程序

您可能已经在 Pi 上安装了开发环境,但 .NET 运行时或 SDK 的最新版本可能已更新,您需要手动更新 .NET。

在 Pi 上的终端中转到 /src/Scripts 并运行

Bash
sudo bash dotnet-install-rpi.sh

如果在 Windows 的 WSL2 下运行 Docker,推理可能会随机崩溃。

在 Windows 上安装 Docker 时,如果可用,它将默认使用 WSL2。WSL2 只会使用最多 50% 的可用内存,这并不总是足够的。要解决此问题,您可以创建一个 .wslconfig 文件来更改此设置。

.wslconfig
# Place this file into /users/<username> 

# Settings apply across all Linux distros running on WSL 2
[wsl2]

# Limits VM memory to use no more than 12 GB, this can be set as whole numbers 
# using GB or MB. The default is 50% of available RAM and 8GB isn't (currently) 
# enough for CodeProject AI Server GPU
memory=12GB 

# Sets amount of swap storage space to 8GB, default is 25% of available RAM
swap=8GB

您拥有 NVidia 显卡,但在 Docker 下运行时,CodeProject.AI 服务器仪表板中未报告 GPU/CUDA 利用率

请确保使用 --gpus all 参数启动 Docker 镜像

终结符
docker run -d -p 32168:32168 --gpus all codeproject/ai-server:gpu

© . All rights reserved.