keras-cv

keras-cv

跨框架模块化计算机视觉工具集

keras-cv 是基于 Keras 3 的模块化计算机视觉库,兼容 TensorFlow、JAX 和 PyTorch。它为数据增强、分类、目标检测等视觉任务提供高级组件,支持跨框架迁移,并包含预训练模型。该库旨在帮助开发者高效构建生产级计算机视觉应用。

KerasCV计算机视觉深度学习Keras模型训练Github开源项目

KerasCV

下载量 Python Tensorflow 欢迎贡献

KerasCV 是一个模块化的计算机视觉组件库,可与 TensorFlow、JAX 或 PyTorch 原生配合使用。基于 Keras 3 构建,这些模型、层、指标、回调等可以在任何框架中训练和序列化,并在其他框架中重复使用,无需进行昂贵的迁移。有关多框架 KerasCV 的更多详细信息,请参阅下面的"配置后端"部分。

<img style="width: 440px; max-width: 90%;" src="https://yellow-cdn.veclightyear.com/835a84d5/3cb998f7-7797-46bc-8b8c-e8c6a24aa9f3.gif">

KerasCV 可以被理解为 Keras API 的横向扩展:这些组件是新的第一方 Keras 对象,它们过于专业化,无法添加到 Keras 核心中。它们获得与 Keras 核心 API 相同水平的完善和向后兼容性保证,并由 Keras 团队维护。

我们的 API 协助完成常见的计算机视觉任务,如数据增强、分类、对象检测、分割、图像生成等。应用计算机视觉工程师可以利用 KerasCV 快速组装生产级、最先进的训练和推理管道,用于所有这些常见任务。

快速链接

安装

KerasCV 同时支持 Keras 2 和 Keras 3。我们建议所有新用户使用 Keras 3,因为它可以让 KerasCV 模型和层与 JAX、TensorFlow 和 PyTorch 一起使用。

Keras 2 安装

要安装最新的 KerasCV 发布版和 Keras 2,只需运行:

pip install --upgrade keras-cv tensorflow

Keras 3 安装

目前有两种方法可以安装带有 KerasCV 的 Keras 3。要安装 KerasCV 和 Keras 的最新更改,可以使用我们的每日构建包。

pip install --upgrade keras-cv-nightly tf-nightly

要安装 KerasCV 和 Keras 3 的稳定版本,应该在安装 KerasCV 之后安装 Keras 3。这是 TensorFlow 固定使用 Keras 2 的临时步骤,在 TensorFlow 2.16 之后将不再需要。

pip install --upgrade keras-cv tensorflow
pip install --upgrade keras

[!重要] Keras 3 无法与 TensorFlow 2.14 或更早版本一起使用。

配置后端

如果您的环境中已安装 Keras 3(请参阅上面的安装说明),您可以将 KerasCV 与 JAX、TensorFlow 和 PyTorch 中的任何一个一起使用。为此,请设置 KERAS_BACKEND 环境变量。例如:

export KERAS_BACKEND=jax

或在 Colab 中:

import os os.environ["KERAS_BACKEND"] = "jax" import keras_cv

[!重要] 确保在导入任何 Keras 库之前设置 KERAS_BACKEND,它将在首次导入 Keras 时用于设置 Keras。

完成配置步骤后,您可以直接导入 KerasCV 并开始在您选择的后端上使用它:

import keras_cv import keras filepath = keras.utils.get_file(origin="https://i.imgur.com/gCNcJJI.jpg") image = np.array(keras.utils.load_img(filepath)) image_resized = keras.ops.image.resize(image, (640, 640))[None, ...] model = keras_cv.models.YOLOV8Detector.from_preset( "yolo_v8_m_pascalvoc", bounding_box_format="xywh", ) predictions = model.predict(image_resized)

快速入门

import tensorflow as tf import keras_cv import tensorflow_datasets as tfds import keras # 创建带有数据增强的预处理管道 BATCH_SIZE = 16 NUM_CLASSES = 3 augmenter = keras_cv.layers.Augmenter( [ keras_cv.layers.RandomFlip(), keras_cv.layers.RandAugment(value_range=(0, 255)), keras_cv.layers.CutMix(), ], ) def preprocess_data(images, labels, augment=False): labels = tf.one_hot(labels, NUM_CLASSES) inputs = {"images": images, "labels": labels} outputs = inputs if augment: outputs = augmenter(outputs) return outputs['images'], outputs['labels'] train_dataset, test_dataset = tfds.load( 'rock_paper_scissors', as_supervised=True, split=['train', 'test'], ) train_dataset = train_dataset.batch(BATCH_SIZE).map( lambda x, y: preprocess_data(x, y, augment=True), num_parallel_calls=tf.data.AUTOTUNE).prefetch( tf.data.AUTOTUNE) test_dataset = test_dataset.batch(BATCH_SIZE).map( preprocess_data, num_parallel_calls=tf.data.AUTOTUNE).prefetch( tf.data.AUTOTUNE) # 使用预训练骨干网络创建模型 backbone = keras_cv.models.EfficientNetV2Backbone.from_preset( "efficientnetv2_b0_imagenet" ) model = keras_cv.models.ImageClassifier( backbone=backbone, num_classes=NUM_CLASSES, activation="softmax", ) model.compile( loss='categorical_crossentropy', optimizer=keras.optimizers.Adam(learning_rate=1e-5), metrics=['accuracy'] ) # 训练模型 model.fit( train_dataset, validation_data=test_dataset, epochs=8, )

贡献者

如果您想贡献,请查看我们的贡献指南。 要寻找可以解决的问题,请查看我们的贡献呼吁

我们希望利用/外包Keras社区不仅用于错误报告,还用于功能开发的积极参与。为此,以下是对本仓库做出贡献的预定流程:

  1. 我们一直欢迎贡献者帮助我们修复问题、添加测试和改进文档。
  2. 如果贡献者想创建一个骨干网络,我们通常要求首个PR提供该模型在一个数据集上的预训练权重,后续再提供训练脚本。训练脚本最好能帮助我们重现论文中声称的结果。骨干网络应该是通用的,但训练脚本可以包含论文特定的参数,如学习率计划和权重衰减。训练脚本将用于产生排行榜结果。对于难以训练的大型transformer模型可以例外。如果是这种情况,贡献者应该告知我们,以便团队可以协助训练模型或提供GCP资源。
  3. 如果贡献者想创建一个元架构,请尝试与我们的路线图保持一致,并创建一个PR进行设计审查,以确保元架构是模块化的。
  4. 如果贡献者想创建一个不在我们未来6个月路线图中的新输入格式,例如关键点,请创建一个问题并寻求赞助。
  5. 如果贡献者想支持一个不在我们未来6个月路线图中的新任务,例如3D重建,请创建一个问题并寻求赞助。

感谢所有wonderful贡献者!

<a href="https://github.com/keras-team/keras-cv/graphs/contributors"> <img src="https://contrib.rocks/image?repo=keras-team/keras-cv" /> </a>

预训练权重

KerasCV中的许多模型都带有预训练权重。 除了StableDiffusion和标准Vision Transformer之外,所有这些权重都是使用本仓库中的Keras和KerasCV组件以及训练脚本进行训练的。 尽管有些模型的训练参数或预处理流程可能与原始发表时不完全相同,但KerasCV团队确保了强大的数值性能。 提供的预训练权重的性能指标可以在每个记录任务的训练历史中找到。 例如,可以在骨干模型的ImageNet分类训练历史记录中找到这些信息。 所有结果都可以使用本仓库中的训练脚本复现。

历史上,许多模型都是在通过手动制定的归一化方案重新缩放的图像数据集上训练的。 最常见的手动制定归一化方案变体是减去ImageNet平均像素值,然后基于ImageNet像素标准差进行标准差归一化。 这种方案是手动特征工程时代的产物,但使用现代深度学习架构获得最先进的分数已不再需要它。 因此,KerasCV标准化为使用简单的1/255重缩放层操作图像。 这可以在所有KerasCV训练流程和代码示例中看到。

自定义算子

请注意,在某些3D目标检测层中使用了自定义TF算子。为了保持我们的wheel为纯Python,这些算子的二进制文件未包含在我们的PyPI包中。

如果您想使用这些自定义算子,可以按照以下说明从源代码安装。

从源代码安装带有自定义算子的KerasCV

从源代码安装自定义算子需要Bazel构建系统(版本 >= 5.4.0)。安装Bazel的步骤可以在这里找到

git clone https://github.com/keras-team/keras-cv.git
cd keras-cv

python3 build_deps/configure.py

bazel build build_pip_pkg
export BUILD_WITH_CUSTOM_OPS=true
bazel-bin/build_pip_pkg wheels

pip install wheels/keras_cv-*.whl

请注意,GitHub操作存在用于发布带有自定义算子的KerasCV,但目前已禁用。您可以在自己的fork中使用这些操作为Linux(manylinux2014)、MacOS(x86和ARM)和Windows创建wheel。

免责声明

KerasCV通过keras_cv.models API提供对预训练模型的访问。 这些预训练模型按"原样"提供,不附带任何形式的保证或条件。 以下基础模型由第三方提供,并受单独许可的约束: StableDiffusion, Vision Transformer

引用KerasCV

如果KerasCV对您的研究有帮助,我们感谢您的引用。 以下是BibTeX条目:

@misc{wood2022kerascv, title={KerasCV}, author={Wood, Luke and Tan, Zhenyu and Stenbit, Ian and Bischof, Jonathan and Zhu, Scott and Chollet, Fran\c{c}ois and Sreepathihalli, Divyashree and Sampath, Ramesh and others}, year={2022}, howpublished={\url{https://github.com/keras-team/keras-cv}}, }

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多