yolov4-custom-functions

GitHub
610 362 中等 1 次阅读 昨天MIT图像开发框架
AI 解读 由 AI 自动生成,仅供参考

yolov4-custom-functions 是一个为 YOLOv4、YOLOv4-tiny、YOLOv3 和 YOLOv3-tiny 提供多种自定义功能的开源工具,支持 TensorFlow、TFLite 和 TensorRT 平台。它允许用户在目标检测任务中添加丰富的扩展功能,如物体计数、检测信息打印、图像裁剪、车牌识别与 OCR 文本提取等,满足不同场景下的个性化需求。

这个工具解决了传统 YOLO 模型功能单一的问题,让用户可以灵活地根据实际应用场景进行功能拓展和定制。例如,开发者可以通过它实现更智能的监控系统或自动化识别流程,研究人员则可以利用其提供的功能进行算法测试与创新实验。

适合有一定编程基础的开发者和研究人员使用,尤其是对目标检测有深入需求的用户。对于希望快速实现复杂功能但又不想从零开始编写代码的用户来说,这是一个非常实用的选择。

其独特之处在于提供了多种可直接使用的自定义函数,并且支持多种深度学习框架,方便用户在不同环境下部署和优化模型。

使用场景

某智能停车场管理公司正在开发一个基于视频监控的车辆识别与计数系统,用于实时统计进入和离开停车场的车辆数量,并识别车牌信息以实现自动化收费。

没有 yolov4-custom-functions 时

  • 需要手动编写大量代码来实现目标检测、计数和车牌识别功能,开发周期长且容易出错。
  • 缺乏现成的工具支持,无法快速集成对象计数、OCR识别等功能,导致系统功能扩展困难。
  • 车辆检测和车牌识别的精度不高,影响系统的实际应用效果。
  • 不同模型(如YOLOv4和YOLOv4-tiny)之间的切换和适配需要重新编写代码,增加维护成本。
  • 无法直接使用预训练模型进行演示或测试,需要从零开始训练模型。

使用 yolov4-custom-functions 后

  • 提供了现成的对象计数功能,可直接调用并实现对车辆的实时计数,提升开发效率。
  • 内置的Tesseract OCR功能可自动识别车牌信息,简化了车牌识别流程,提高了识别准确率。
  • 支持多种YOLO模型(如YOLOv4、YOLOv4-tiny等),便于根据性能需求灵活切换,无需重复开发。
  • 提供了丰富的自定义函数接口,方便后续添加新功能(如打印检测信息、裁剪检测区域等)。
  • 可直接使用官方预训练权重进行演示,降低了模型训练门槛,加快了系统测试和部署速度。

核心价值:yolov4-custom-functions 大大简化了YOLO模型在实际项目中的应用,显著提升了开发效率和系统功能的灵活性。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

需要 NVIDIA GPU,CUDA 10.1(若不使用 Conda 环境且未设置 CUDA)

内存

未说明

依赖
notes建议使用 conda 管理环境,首次运行需下载约 5GB 模型文件。若使用 GPU,需安装 CUDA Toolkit 10.1。
python未说明
TensorFlow
TFLite
TensorRT
OpenCV
Tesseract OCR
yolov4-custom-functions hero image

快速开始

yolov4-自定义函数

license

这是一个在 TensorFlow、TFLite 和 TensorRT 中实现的 YOLOv4、YOLOv4-tiny、YOLOv3 和 YOLOv3-tiny 的多种自定义函数库。

免责声明:本仓库与我的另一个仓库 tensorflow-yolov4-tflite 非常相似。我创建这个仓库是为了探索使用 YOLOv4 实现自定义函数,但这些自定义函数可能会降低整体运行速度,并且在时间复杂度方面可能不够优化。因此,如果您希望运行最优化的 TensorFlow 版 YOLOv4 代码,请前往我的另一个仓库。而这个仓库则是为了探索利用 YOLOv4 可以实现的酷炫自定义功能和应用场景!

对象计数自定义函数的实际演示!

当前支持的自定义函数及标志

如果您希望看到某个特定的自定义功能被实现,请在 Issues 标签页中提交 issue 并提出建议!如果足够多的人提出相同的自定义需求,我会尽快将其添加到项目中!

快速入门

Conda(推荐)

# TensorFlow CPU
conda env create -f conda-cpu.yml
conda activate yolov4-cpu

# TensorFlow GPU
conda env create -f conda-gpu.yml
conda activate yolov4-gpu

Pip

# TensorFlow CPU
pip install -r requirements.txt

# TensorFlow GPU
pip install -r requirements-gpu.txt

Nvidia 驱动程序(适用于 GPU,若您未使用 Conda 环境且尚未配置 CUDA)

请确保使用 CUDA Toolkit 10.1 版本,因为这是本仓库所用 TensorFlow 版本的适配版本。
https://developer.nvidia.com/cuda-10.1-download-archive-update2

下载官方预训练权重

YOLOv4 已经预训练完成,能够检测 80 类物体。为了便于演示,我们将使用预训练权重。
下载预训练的 yolov4.weights 文件:https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT

将下载的 yolov4.weights 文件从您的下载文件夹复制并粘贴到本仓库的 data 文件夹中。

如果您想使用 yolov4-tiny.weights——一个运行检测更快但精度稍低的小型模型——请从这里下载:https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.weights

使用自定义训练的 YOLOv4 权重

在此学习如何训练自定义 YOLOv4 权重:https://www.youtube.com/watch?v=mmj3nxGT2YQ

观看我在 TensorFlow 中使用自定义模型的详细讲解:https://www.youtube.com/watch?v=nOIVxi5yurE

使用我的车牌训练的自定义权重:https://drive.google.com/file/d/1EUPtbtdF0bjRtNjGv436vDY28EN5DXDH/view?usp=sharing

将您的自定义 .weights 文件复制并粘贴到 data 文件夹中,同时将自定义 .names 文件复制并粘贴到 data/classes/ 文件夹中。

为了让您的自定义模型正常工作,您需要在代码中仅做一处修改:将 core/config.py 文件第 14 行的路径更新为指向您的自定义 .names 文件,如下所示。(我的自定义 .names 文件名为 custom.names,但您的文件名可能不同)

注意:如果您使用的是预训练的 yolov4,则务必保持第 14 行为 coco.names

使用 TensorFlow 的 YOLOv4(tf、.pb 模型)

要使用 TensorFlow 实现 YOLOv4,首先需要将 .weights 转换为对应的 TensorFlow 模型文件,然后运行该模型。

# 将 Darknet 权重转换为 TensorFlow
## yolov4
python save_model.py --weights ./data/yolov4.weights --output ./checkpoints/yolov4-416 --input_size 416 --model yolov4 

# 运行 YOLOv4 TensorFlow 模型
python detect.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --images ./data/images/kite.jpg

# 在视频上运行 YOLOv4
python detect_video.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --video ./data/video/video.mp4 --output ./detections/results.avi

# 在网络摄像头上运行 YOLOv4
python detect_video.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --video 0 --output ./detections/results.avi

如果您想运行 yolov3 或 yolov3-tiny,请在上述命令中将 --model yolov3 和 .weights 文件替换为相应内容。

注意:您还可以通过修改 --images 标志一次性处理多张图片,例如:--images "./data/images/kite.jpg, ./data/images/dog.jpg"

输出图像(常规 TensorFlow)

您可以在 detections 文件夹中找到包含检测结果的输出图像。

预训练 YOLOv4 模型示例

输出视频

视频会保存到您指定的 --output 标志所指向的路径。如果您未设置该标志,则视频不会保存检测结果。

使用 TensorFlow 的 YOLOv4-Tiny

以下命令可用于运行 yolov4-tiny 模型。

# yolov4-tiny
python save_model.py --weights ./data/yolov4-tiny.weights --output ./checkpoints/yolov4-tiny-416 --input_size 416 --model yolov4 --tiny

# 运行 YOLOv4-Tiny TensorFlow 模型
python detect.py --weights ./checkpoints/yolov4-tiny-416 --size 416 --model yolov4 --images ./data/images/kite.jpg --tiny

使用 TensorFlow 的自定义 YOLOv4

以下命令可用于运行您的自定义 YOLOv4 模型。(视频和网络摄像头命令同样适用)

# 自定义 YOLOv4
python save_model.py --weights ./data/custom.weights --output ./checkpoints/custom-416 --input_size 416 --model yolov4 

# 运行自定义 YOLOv4 TensorFlow 模型
python detect.py --weights ./checkpoints/custom-416 --size 416 --model yolov4 --images ./data/images/car.jpg

自定义 YOLOv4 模型示例(请参阅上方视频链接以了解如何训练该模型)

自定义函数及标志

以下是目前我已实现的所有支持的自定义函数及标志的使用方法。

物体计数(总物体数或按类别计数)

我在 core/functions.py 文件中创建了一个自定义函数,可用于统计并跟踪在每张图像或视频中某一时刻检测到的物体数量。该函数既可统计检测到的物体总数,也可按类别统计检测到的物体数量。

统计总物体数

要统计总物体数,只需在 detect.pydetect_video.py 命令中添加自定义标志 --count 即可。

# 运行 YOLOv4 模型并统计检测到的总物体数
python detect.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --images ./data/images/dog.jpg --count

运行上述命令后,将统计检测到的物体总数,并将其输出到您的命令提示符或终端,同时也会保存在检测结果文件中,如下所示:

按类别统计物体数

要统计目标检测器中每个类别的物体数量,需添加自定义标志 --count,并修改 detect.pydetect_video.py 脚本中的某一行代码。默认情况下,count_objects 函数有一个名为 by_class 的参数,其值为 False。若将该参数改为 True,则会按类别进行统计。

要按类别统计,需将 detect.pydetect_video.py 修改为如下形式:

然后运行与前述相同的命令:

# 运行 YOLOv4 模型并按类别统计物体数
python detect.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --images ./data/images/dog.jpg --count

运行上述命令后,将统计每个类别的检测物体数量,并将其输出到您的命令提示符或终端,同时也会保存在检测结果文件中,如下所示:

注意: 您也可以将 --count 标志添加到 detect_video.py 命令中!

打印每次检测的详细信息(类别、置信度、边界框坐标)

我创建了一个名为 INFO 的自定义标志,可添加到任何 detect.pydetect_video.py 命令中,以打印目标检测器每次检测的详细信息。只需在任意命令中添加 --info 标志,即可在命令提示符上显示这些详细信息。每次检测的信息包括类别、检测置信度以及边界框的坐标,格式为 xmin, ymin, xmax, ymax

如果您想修改输出的具体信息,可以编辑位于 core/utils.py 文件中的 draw_bbox 函数。打印信息的代码行如下:

添加 --info 标志后的示例命令:

python detect.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --images ./data/images/dog.jpg --info

终端或命令行中的输出结果如下:

注意: 您也可以将 --info 标志添加到 detect_video.py 命令中!

裁剪检测结果并保存为新图像

我在 core/functions.py 文件中创建了一个自定义函数,可应用于任何 detect.pydetect_video.py 命令,用于裁剪 YOLOv4 的检测结果,并将每个检测结果保存为单独的新图像。要裁剪检测结果,只需在任意命令中添加 --crop 标志即可。裁剪后的图像将保存在 detections/crop/ 文件夹中。

添加 --crop 标志后的示例命令:

python detect.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --images ./data/images/dog.jpg --crop

以下是上述命令生成的其中一个裁剪后的检测结果示例。

使用 Tesseract OCR 进行车牌识别

我创建了一个自定义函数,可将由我的自定义 YOLOv4 模型检测到的车牌边界框区域输入 Tesseract OCR,以读取并提取车牌号码。为了从图像中准确提取车牌号码,会对车牌进行充分的预处理。负责执行预处理和文本提取的函数名为 recognize_plate,位于 core/utils.py 文件中。

免责声明: 若要运行 Tesseract OCR,您必须先下载二进制文件并在本地机器上完成安装。请务必在继续操作前完成此步骤,否则命令将无法正常运行!

Tesseract OCR 官方 GitHub 仓库:tesseract-ocr/tessdoc

关于如何在 Mac 或 Linux 机器上安装 Tesseract 的优秀文章:PyImageSearch 文章

对于 Windows 系统,推荐使用:Windows 安装指南

成功安装 Tesseract 后,即可继续操作。若您尚未训练出用于检测车牌的 YOLOv4 模型,也可直接使用我已训练好的模型。虽然该模型并不完美,但效果尚佳。在此下载车牌检测模型,并学习如何使用 TensorFlow 保存和运行它

在图像上运行车牌识别(下方为视频示例)

车牌识别在图像上的表现非常出色。您只需在运行自定义 YOLOv4 模型的命令中添加 --plate 标志即可。

试试在仓库中的这张图片上运行吧!

# 运行车牌识别
python detect.py --weights ./checkpoints/custom-416 --size 416 --model yolov4 --images ./https://oss.gittoolsai.com/images/theAIGuysCode_yolov4-custom-functions_readme_22c1b2608d4b.jpg --plate

示例结果图

上述命令的输出将在您的命令终端中显示所有检测到的车牌号码,并将以下图像输出并保存到 detections 文件夹中。

您应该能够在屏幕上看到车牌号码,显示在 YOLOv4 检测到的边界框上方。

幕后揭秘

本节将重点介绍我为实现基于 YOLOv4 的车牌识别所采取的步骤,以及未来可进一步优化的方向。

本次演示将以如下原始图像为例,展示整个流程的每一步操作。

第一步是从 YOLOv4 中获取边界框坐标,并简单地截取该边界框内的子图像区域。由于这张图非常小,我们通常会使用 cv2.resize() 将其放大至原图尺寸的 3 倍。

随后,我们将图像转换为灰度图,并应用一个小的高斯模糊以使其更加平滑。

接着,对图像进行二值化处理,使白字黑底的文本更清晰,并同时采用 Otsu 方法进行自动阈值分割。这种白字黑底的图像有助于后续提取轮廓。

然后,利用 OpenCV 对图像进行膨胀操作,以增强轮廓的可见性,便于后续步骤中更好地检测到这些轮廓。

接下来,我们使用 OpenCV 在图像中查找所有矩形形状的轮廓,并按从左到右的顺序对其进行排序。

如您所见,这样做会检测到许多非车牌数字字符的轮廓。为了过滤掉这些不必要的区域,我们设置了若干参数来判定一个轮廓是否有效。这些参数主要包括高度与宽度的比例(例如,区域的高度至少应为图像总高度的 1/6),此外还设置了区域面积等其他条件。具体细节请参阅代码。经过这一系列筛选后,最终得到的结果如下。

现在,车牌数字中的每个字符都成为了我们关注的唯一区域。我们将每个子图像单独分割出来,并应用 bitwise_not 掩码,将图像反转为黑字白底,这样 Tesseract 的识别准确率会更高。最后一步是对图像进行小幅中值模糊处理,然后将其送入 Tesseract 进行文字识别,从而提取出对应的字母或数字。以下是字母输入 Tesseract 后的示例效果。

随后,我们将每个字母或数字依次拼接成字符串,最终便得到了完整的车牌识别结果!砰!

在视频上运行车牌识别

直接在视频上实时运行车牌识别,并同时进行 YOLOv4 的目标检测,会遇到一些问题。Tesseract OCR 的时间复杂度较高,会导致视频处理速度大幅下降,几乎慢得像蜗牛一样。不过,通过在任何 detect_video.py 命令中添加 --plate 命令行参数,仍然可以实现这一功能。

然而,我认为最佳方案是先不加 --plate 参数运行视频检测,而是使用 --crop 参数,将屏幕上检测到的目标裁剪下来并保存为新图像。点击此处查看具体操作。待视频以较高帧率完成处理后,所有车牌图像都会被裁剪并保存到 detections/crop 文件夹中。我在仓库中新增了一个名为 license_plate_recognizer.py 的简易脚本,您可以直接运行它来识别车牌。此外,您还可以轻松自定义该脚本,以进一步提升识别效果。未来我将在仓库的后续提交中实现这一功能的自动化集成。

使用 detect_video.py 运行车牌识别的命令如下:

python detect_video.py --weights ./checkpoints/custom-416 --size 416 --model yolov4 --video ./data/video/license_plate.mp4 --output ./detections/recognition.avi --plate

而我认为更为高效的推荐方案是使用以下命令:在代码中自定义检测结果的裁剪频率。

python detect_video.py --weights ./checkpoints/custom-416 --size 416 --model yolov4 --video ./data/video/license_plate.mp4 --output ./detections/recognition.avi --crop

现在就动手玩一玩 license_plate_recognizer.py,尽情享受吧!

在任意检测结果上运行 Tesseract OCR

我还实现了 Tesseract OCR 与 YOLOv4 的通用结合方式。只需在任何 detect.py 图像命令中启用 --ocr 参数,即可在检测结果中搜索文本并提取其中的内容。系统会对构成检测边界框内部的子图像进行通用预处理。不过,由于光照或色彩问题较多,往往需要更高级的预处理,因此这项功能并非完美无缺。此外,在运行此参数之前,您还需要在本地安装 Tesseract(详见上文相关链接与建议)。

示例命令(请注意,这张图本身并无文字,因此不会输出任何内容,仅用于展示命令的结构):

python detect.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --images ./data/images/dog.jpg --ocr

使用 TensorFlow Lite 实现 YOLOv4(.tflite 模型)

您也可以使用 TensorFlow Lite 来部署 YOLOv4。TensorFlow Lite 是一种体积更小的模型,非常适合在移动设备或边缘设备(如树莓派等)上运行。

# 保存 TF 模型以便转换为 TFLite
python save_model.py --weights ./data/yolov4.weights --output ./checkpoints/yolov4-416 --input_size 416 --model yolov4 --framework tflite

# YOLOv4 转换为 TFLite
python convert_tflite.py --weights ./checkpoints/yolov4-416 --output ./checkpoints/yolov4-416.tflite

# YOLOv4 量化为 FP16
python convert_tflite.py --weights ./checkpoints/yolov4-416 --output ./checkpoints/yolov4-416-fp16.tflite --quantize_mode float16

# YOLOv4 量化为 INT8
python convert_tflite.py --weights ./checkpoints/yolov4-416 --output ./checkpoints/yolov4-416-int8.tflite --quantize_mode int8 --dataset ./coco_dataset/coco/val207.txt

# 运行 TFLite 模型
python detect.py --weights ./checkpoints/yolov4-416.tflite --size 416 --model yolov4 --images ./data/images/kite.jpg --framework tflite

结果图像(TensorFlow Lite)

您可以在“detections”文件夹中找到显示检测结果的输出图像。

TensorFlow Lite int8 示例

Yolov4 和 Yolov4-tiny 的 int8 量化存在一些问题。我将尝试修复这些问题。您可以先尝试 Yolov3 和 Yolov3-tiny 的 int8 量化。

使用 TensorRT 的 YOLOv4

也可以使用 TensorFlow 的 TensorRT 来实现 YOLOv4。TensorRT 是一款高性能的推理优化器和运行时,能够在 GPU 上以较低精度(FP16 和 INT8)进行推理。与普通的 TensorFlow 相比,TensorRT 可以将性能提升高达 8 倍。

python save_model.py --weights ./data/yolov3.weights --output ./checkpoints/yolov3.tf --input_size 416 --model yolov3
python convert_trt.py --weights ./checkpoints/yolov3.tf --quantize_mode float16 --output ./checkpoints/yolov3-trt-fp16-416

# yolov3-tiny
python save_model.py --weights ./data/yolov3-tiny.weights --output ./checkpoints/yolov3-tiny.tf --input_size 416 --tiny
python convert_trt.py --weights ./checkpoints/yolov3-tiny.tf --quantize_mode float16 --output ./checkpoints/yolov3-tiny-trt-fp16-416

# yolov4
python save_model.py --weights ./data/yolov4.weights --output ./checkpoints/yolov4.tf --input_size 416 --model yolov4
python convert_trt.py --weights ./checkpoints/yolov4.tf --quantize_mode float16 --output ./checkpoints/yolov4-trt-fp16-416
python detect.py --weights ./checkpoints/yolov4-trt-fp16-416 --model yolov4 --images ./data/images/kite.jpg --framework trt

命令行参数参考

save_model.py:
  --weights: 权重文件路径
    (默认:'./data/yolov4.weights')
  --output: 输出路径
    (默认:'./checkpoints/yolov4-416')
  --[no]tiny: yolov4 或 yolov4-tiny
    (默认:'False')
  --input_size: 定义导出模型的输入尺寸
    (默认:416)
  --framework: 使用何种框架(tf、trt、tflite)
    (默认:tf)
  --model: yolov3 或 yolov4
    (默认:yolov4)

detect.py:
  --images: 输入图像路径,以逗号分隔的字符串形式
    (默认:'./data/images/kite.jpg')
  --output: 输出文件夹路径
    (默认:'./detections/')
  --[no]tiny: yolov4 或 yolov4-tiny
    (默认:'False')
  --weights: 权重文件路径
    (默认:'./checkpoints/yolov4-416')
  --framework: 使用何种框架(tf、trt、tflite)
    (默认:tf)
  --model: yolov3 或 yolov4
    (默认:yolov4)
  --size: 将图像调整为
    (默认:416)
  --iou: IoU 阈值
    (默认:0.45)
  --score: 置信度阈值
    (默认:0.25)
  --count: 统计图像中的目标数量
    (默认:False)
  --dont_show: 不显示图像输出
    (默认:False)
  --info: 打印检测信息
    (默认:False)
  --crop: 裁剪检测结果并保存为新图像
    (默认:False)
    
detect_video.py:
  --video: 输入视频路径(使用 0 表示摄像头)
    (默认:'./data/video/video.mp4')
  --output: 输出视频路径(请确保为给定格式设置正确的编解码器,例如 .avi 格式使用 XVID)
    (默认:None)
  --output_format: 保存视频时 VideoWriter 使用的编解码器
    (默认:'XVID')
  --[no]tiny: yolov4 或 yolov4-tiny
    (默认:'false')
  --weights: 权重文件路径
    (默认:'./checkpoints/yolov4-416')
  --framework: 使用何种框架(tf、trt、tflite)
    (默认:tf)
  --model: yolov3 或 yolov4
    (默认:yolov4)
  --size: 将图像调整为
    (默认:416)
  --iou: IoU 阈值
    (默认:0.45)
  --score: 置信度阈值
    (默认:0.25)
  --count: 统计视频中的目标数量
    (默认:False)
  --dont_show: 不显示视频输出
    (默认:False)
  --info: 打印检测信息
    (默认:False)
  --crop: 裁剪检测结果并保存为新图像
    (默认:False)

参考文献

特别感谢 hunglc007 创建了本仓库的核心基础:

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2天前
Agent图像开发框架