通用问题
找不到自定义模型
CodeProject.AI 服务器安装时会附带两个不同的目标检测模块。这两个模块的工作方式相同,区别在于一个是支持 CUDA GPU 的 Python 实现,另一个是支持嵌入式 Intel GPU 的 .NET 实现。每个模块都附带一套可用的自定义模型。自定义目标检测需要您
- 确保已启用对象检测(默认情况下已启用)
- 使用提供的自定义模型,或 a. 将您自己的模型添加到标准的自定义模型文件夹(Windows 安装时为
C:\Program Files\CodeProject\AI\AnalysisLayer\ObjectDetectionYolo\custom-models
或C:\Program Files\CodeProject\AI\AnalysisLayer\ObjectDetectionNet\custom-models
),或 b. 指定一个包含模型的目录(Docker 实用)
要指定不同的文件夹用于自定义模型,您可以:
- 启动时设置
--Modules:ObjectDetectionYolo:EnvironmentVariables:CUSTOM_MODELS_DIR
参数,或 - 设置
Modules:ObjectDetectionYolo:EnvironmentVariables:CUSTOM_MODELS_DIR
环境变量,或 - 在 ObjectDetectionYolo 文件夹中的 modulesettings.json 文件中设置
CUSTOM_MODELS_DIR
值,或 - 设置全局覆盖(即将弃用!)变量
MODELSTORE-DETECTION
以指向您的自定义目标文件夹,或 -
(适用于 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
。
端口已被占用
如果您看到:
Unable to start Kestrel.
System.IO.IOException: Failed to bind to address http://127.0.0.1:5000: address
already in use.
我们的第一个建议是不要再使用 5000 端口。这是一个保留端口,但并非所有操作系统都在积极使用它。我们更倾向于使用 32168 端口,因为它易于记忆,并且远离其他已用端口。
您可以通过编辑 appsettings.json 文件并更改 CPAI_PORT
变量的值来更改 CodeProject.AI 使用的外部端口。在演示应用程序中,有一个端口设置需要您进行编辑以匹配新端口。
如果不行,请关闭任何使用端口 5000 的应用程序(包括任何已安装的 CodeProject.AI 服务器版本,如果您尝试在 Visual Studio 的开发模式下运行)。
GPU 未被使用
请确保您已安装 NVidia CUDA 驱动程序
- 安装 CUDA 11.7 驱动程序
- 安装 CUDA 工具包 11.7。
- 下载并运行我们的 cuDNN 安装脚本。
推理随机失败
加载 AI 模型可能会消耗大量内存,因此如果您在 GPU 或整个系统上的 RAM 较少,您有几种选择:
- 禁用您不需要的模块。仪表板(https://:32168)允许您单独禁用模块。
- 如果您使用的是 GPU,请禁用那些不一定需要 GPU 性能的模块的 GPU 功能。
- 如果您使用的是提供较小模型的模块(例如目标检测器 (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
- 打开管理员命令或 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
在 Visual Studio 或 Visual Studio Code 中打开脚本,编辑器窗口的右下角将显示一个行尾提示。
单击它并选择“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 并运行
如果在 Windows 的 WSL2 下运行 Docker,推理可能会随机崩溃。
在 Windows 上安装 Docker 时,如果可用,它将默认使用 WSL2。WSL2 只会使用最多 50% 的可用内存,这并不总是足够的。要解决此问题,您可以创建一个 .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 镜像