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}}, }

编辑推荐精选

博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞绘文

讯飞绘文

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

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

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

TRAE编程

AI辅助编程,代码自动修复

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

AI工具TraeAI IDE协作生产力转型热门
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

下拉加载更多