前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >集成 Kubernetes 来构建微服务-spring cloud 入门教程

集成 Kubernetes 来构建微服务-spring cloud 入门教程

作者头像
jack.yang
发布于 2025-04-05 11:00:21
发布于 2025-04-05 11:00:21
7000
代码可运行
举报
运行总次数:0
代码可运行

Spring Cloud和Kubernetes是目前Java平台下微服务应用的使用得最多的产品。然而,当谈到微服务架构时,它们有时被描述为具有竞争力的解决方案。它们都在微服务架构中实现流行的模式,如服务发现、分布式配置、负载平衡或断路。当然,他们的做法不同。 Kubernetes 是一个用于运行、扩展和管理容器化应用程序的平台。Kubernetes 最重要的组件之一是etcd。该高度可用的键值存储负责存储所有集群数据,包括服务注册表和应用程序配置。我们不能用任何其他工具代替它。可以使用Istio或 Linkerd等第三方组件来实现更高级的路由负载均衡策略。要在 Kubernetes 上部署和运行应用程序,我们无需在源代码中添加任何内容。编排和配置是在应用程序之外实现的——在平台上。 Spring Cloud 提出了一种不同的方法。所有组件都必须在应用程序端包含和配置。它为我们提供了许多与用于云原生开发的各种工具和框架集成的可能性。但是,一开始 Spring Cloud 是围绕 Eureka、Ribbon等 Netflix OSS 组件构建的、Hystrix 或 Zuul。它为我们提供了一种机制,可以轻松地将它们包含到我们基于微服务的架构中,并将它们与其他云原生组件集成。一段时间后,必须重新考虑这种方法。今天,我们有很多由 Spring Cloud 开发的组件,比如 Spring Cloud Gateway(Zuul 替代品)、Spring Cloud Load Balancer(Ribbon 替代品)、Spring Cloud Circuit Breaker(Hystrix 替代品)。还有一个相对较新的与Kubernetes集成的项目——Spring Cloud Kubernetes。

为什么选择 Spring Cloud Kubernetes?

在我们将微服务迁移到 OpenShift 时,Spring Cloud Kubernetes 项目正处于孵化阶段。由于我们没有任何其他有趣的从 Spring Cloud 迁移到 OpenShift 的选择,包括从 Spring Boot 应用程序中删除用于发现(Eureka 客户端)和配置(Spring Cloud Config 客户端)的组件。当然,我们仍然可以使用其他 Spring Cloud 组件,如 OpenFeign、Ribbon(通过 Kubernetes 服务)或 Sleuth。那么,问题是我们真的需要 Spring Cloud Kubernetes 吗?哪些功能对我们来说会很有趣。 首先,让我们看看在 Spring Cloud Kubernetes 文档站点上构建一个新框架的动机。

Spring Cloud Kubernetes 提供使用 Kubernetes 原生服务的 Spring Cloud 通用接口实现。此存储库中提供的项目的主要目标是促进在 Kubernetes 内运行的 Spring Cloud 和 Spring Boot 应用程序的集成。

简单来说,Spring Cloud Kubernetes 提供了与Kubernetes Master API 的集成,以允许以 Spring Cloud 的方式使用发现、配置和负载平衡。 在本文中,我将介绍 Spring Cloud Kubernetes 的以下有用功能:

  • 使用 DiscoveryClient 支持在所有命名空间中扩展发现
  • 在 Spring Cloud Kubernetes Config 中使用 ConfigMap 和 Secrets 作为 Spring Boot 属性源
  • 使用 Spring Cloud Kubernetes pod 健康指标实现健康检查

启用 Spring Cloud Kubernetes

假设我们将使用 Spring Cloud Kubernetes 提供的更多功能,我们应该将以下依赖项包含到我们的 Maven 中pom.xml。它包含用于发现、配置和功能区负载平衡的模块。

代码语言:javascript
代码运行次数:0
运行
复制
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-kubernetes-all</artifactId>
</dependency>

跨所有命名空间的发现

Spring Cloud Kubernetes 通过提供DiscoveryClient. 我们还可以利用与 Ribbon 客户端的内置集成,在不使用 Kubernetes 服务的情况下直接与 Pod 通信。Ribbon 客户端可以被更高级别的 HTTP 客户端——OpenFeign 所利用。要实现这样的模型,我们必须启用发现客户端、Feign 客户端和 Mongo 存储库,因为我们使用 Mongo 数据库作为后端存储。

代码语言:javascript
代码运行次数:0
运行
复制
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@EnableMongoRepositories
public class DepartmentApplication {
   
   public static void main(String[] args) {
      SpringApplication.run(DepartmentApplication.class, args);
   }

}

让我们考虑一下我们有三个微服务的场景,每个微服务都部署在不同的命名空间中。划分命名空间只是一个逻辑分组,例如我们有三个不同的团队负责每个微服务,我们希望只将命名空间的权限授予负责给定应用程序的团队。在位于不同命名空间的应用程序之间的通信中,我们必须在调用 URL 上包含一个命名空间名称作为前缀。我们还需要设置一个可能因应用程序而异的端口号。在这种情况下,Spring Cloud Kubernetes 发现会提供帮助。由于 Spring Cloud Kubernetes 与主 API 集成,因此能够获取为同一应用程序创建的所有 pod 的 IP。这是说明我们场景的图表。

要启用跨所有命名空间的发现,我们只需要使用以下属性。

代码语言:javascript
代码运行次数:0
运行
复制
spring:
  cloud:
    kubernetes:
      discovery:
        all-namespaces: true

现在,我们可以实现负责消费目标端点的 Feign 客户端接口。这是来自部门服务的示例客户端,专门用于与员工服务进行通信。

代码语言:javascript
代码运行次数:0
运行
复制
@FeignClient(name = "employee")
public interface EmployeeClient {

   @GetMapping("/department/{departmentId}")
   List<Employee> findByDepartment(@PathVariable("departmentId") String departmentId);
   
}

Spring Cloud Kubernetes 需要访问 Kubernetes API,以便能够检索为单个服务运行的 pod 的地址列表。使用 Minikube 时最简单的方法是ClusterRoleBinding使用cluster-admin特权创建默认值。运行以下命令后,您可以确保每个 Pod 都有足够的权限与 Kubernetes API 通信。

代码语言:javascript
代码运行次数:0
运行
复制
$ kubectl create clusterrolebinding admin --clusterrole=cluster-admin --serviceaccount=default:default

使用 Kubernetes PropertySource 进行配置

Spring Cloud KubernetesPropertySource实现允许我们直接在应用程序中使用ConfigMap和使用,Secret而无需将它们注入Deployment. 默认行为基于metadata.nameinside ConfigMapor Secret,它必须与应用程序名称相同(由其spring.application.name属性定义)。您还可以使用更高级的行为,您可以为配置注入定义命名空间和对象的自定义名称。您甚至可以使用多个ConfigMapSecret实例。但是,我们使用默认行为,因此假设我们有以下内容bootstrap.yml

代码语言:javascript
代码运行次数:0
运行
复制
spring:
  application:
    name: employee

我们将定义以下内容ConfigMap

代码语言:javascript
代码运行次数:0
运行
复制
kind: ConfigMap
apiVersion: v1
metadata:
  name: employee
data:
  logging.pattern.console: "%d{HH:mm:ss} ${LOG_LEVEL_PATTERN:-%5p} %m%n"
  spring.cloud.kubernetes.discovery.all-namespaces: "true"
  spring.data.mongodb.database: "admin"
  spring.data.mongodb.host: "mongodb.default"

或者,您可以在ConfigMap.

代码语言:javascript
代码运行次数:0
运行
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: employee
data:
  application.yaml: |-
    logging.pattern.console: "%d{HH:mm:ss} ${LOG_LEVEL_PATTERN:-%5p} %m%n"
    spring.cloud.kubernetes.discovery.all-namespaces: true
    spring:
      data:
        mongodb:
          database: admin
          host: mongodb.default

在配置映射中,我们定义了 Mongo 位置、日志模式和负责允许多命名空间发现的属性。Mongo 凭据应在Secret对象内部定义。规则与配置映射相同。

代码语言:javascript
代码运行次数:0
运行
复制
apiVersion: v1
kind: Secret
metadata:
  name: employee
type: Opaque
data:
  spring.data.mongodb.username: UGlvdF8xMjM=
  spring.data.mongodb.password: cGlvdHI=

值得注意的是,出于安全原因,默认情况下不启用通过 API 使用机密。但是,我们已经设置了默认cluster-admin角色,所以我们不必担心。我们唯一需要做的就是通过 Spring Cloud Kubernetes 的 API 启用使用机密,默认情况下该 API 是禁用的。为此,我们必须在bootstrap.yml.

代码语言:javascript
代码运行次数:0
运行
复制
spring:
  cloud:
    kubernetes:
      secrets:
        enableApi: true

在 Minikube 上部署 Spring Cloud 应用程序

首先,让我们使用kubectl create namespace命令创建所需的命名空间。下面是创建命名空间的命令abcd

然后,让我们通过执行 Mavenmvn clean install命令来构建代码。

我们还需要设置cluster-admin新创建的命名空间,以允许在这些命名空间内运行的 Pod 读取主 API。

现在,让我们看看我们的 Kubernetes 部署清单。它非常简单,因为它没有从ConfigMap和注入任何属性Secret。它已经由 Spring Cloud Kubernetes Config 执行。这是employee-service的部署 YAML 文件。

代码语言:javascript
代码运行次数:0
运行
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: employee
  labels:
    app: employee
spec:
  replicas: 1
  selector:
    matchLabels:
      app: employee
  template:
    metadata:
      labels:
        app: employee
    spec:
      containers:
      - name: employee
        image: piomin/employee:1.1
        ports:
        - containerPort: 8080

最后,我们可以在 Kubernetes 上部署我们的应用程序。每个微服务有ConfigMapSecretDeploymentService对象。YAML 清单在/kubernetes目录内的 Git 存储库中可用。我们使用kubectl apply如下所示的命令依次应用它们。

出于测试目的,您可以通过定义NodePort类型在节点外公开示例应用程序。

代码语言:javascript
代码运行次数:0
运行
复制
apiVersion: v1
kind: Service
metadata:
  name: department
  labels:
    app: department
spec:
  ports:
  - port: 8080
    protocol: TCP
  selector:
    app: department
  type: NodePort

公开有关 Pod 的信息

如果你定义了你ServiceNodePort你可以在 Minikube 之外轻松访问它。要检索目标端口,只需执行kubectl get svc如下所示。现在,您可以使用 address 调用它http://192.168.99.100:31119

使用 Spring Cloud Kubernetes,每个 Spring Boot 应用程序都会公开有关 pod ip、pod 名称和命名空间名称的信息。要输入它,您需要调用/info端点,如下所示。

microservices-with-spring-cloud-kubernetes-info
microservices-with-spring-cloud-kubernetes-info

这是部署所有示例微服务和网关后分布在所有命名空间之间的 pod 列表。

还有一个部署列表。

运行网关

我们架构中的最后一个元素是网关。我们使用 Spring Cloud Netflix Zuul,它通过 Ribbon 客户端与 Kubernetes 发现集成。它公开了分布在多个命名空间中的所有示例微服务的 Swagger 文档。这是所需依赖项的列表。

代码语言:javascript
代码运行次数:0
运行
复制
<dependencies>
   <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-kubernetes-all</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-sleuth</artifactId>
   </dependency>
   <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger-ui</artifactId>
      <version>2.9.2</version>
   </dependency>
   <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger2</artifactId>
      <version>2.9.2</version>
   </dependency>
</dependencies>

路由的配置非常简单。我们只需要使用 Spring Cloud Kubernetes 发现功能。

代码语言:javascript
代码运行次数:0
运行
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: gateway
data:
  logging.pattern.console: "%d{HH:mm:ss} ${LOG_LEVEL_PATTERN:-%5p} %m%n"
  spring.cloud.kubernetes.discovery.all-namespaces: "true"
  zuul.routes.department.path: "/department/**"
  zuul.routes.employee.path: "/employee/**"
  zuul.routes.organization.path: "/organization/**"

虽然 Zuul 代理与DiscoveryClient我们自动集成,但我们可以轻松配置微服务公开的动态解析 Swagger 端点。

代码语言:javascript
代码运行次数:0
运行
复制
@Configuration
public class GatewayApi {

   @Autowired
   ZuulProperties properties;

   @Primary
   @Bean
   public SwaggerResourcesProvider swaggerResourcesProvider() {
      return () -> {
         List<SwaggerResource> resources = new ArrayList<>();
         properties.getRoutes().values().stream()
               .forEach(route -> resources.add(createResource(route.getId(), "2.0")));
         return resources;
      };
   }

   private SwaggerResource createResource(String location, String version) {
      SwaggerResource swaggerResource = new SwaggerResource();
      swaggerResource.setName(location);
      swaggerResource.setLocation("/" + location + "/v2/api-docs");
      swaggerResource.setSwaggerVersion(version);
      return swaggerResource;
   }

}

通常,我们必须配置 KubernetesIngress才能访问网关。使用 Minikube,我们只需要创建一个类型为 的服务NodePort。最后,我们可以开始使用在网关上公开的 Swagger UI 来测试我们的应用程序。但是在这里,我们得到了一个意想不到的惊喜……跨所有命名空间的发现不适用于 Ribbon 客户端。它仅适用于DiscoveryClient. 我认为 Ribbon 自动配置应该尊重 property spring.cloud.kubernetes.discovery.all-namespaces,但在这种情况下,除了准备解决方法之外我们别无选择。我们的解决方法是覆盖 Spring Cloud Kubernetes 中提供的 Ribbon 客户端自动配置。我们DiscoveryClient直接使用它,如下所示。

代码语言:javascript
代码运行次数:0
运行
复制
public class RibbonConfiguration {

    @Autowired
    private DiscoveryClient discoveryClient;

    private String serviceId = "client";
    protected static final String VALUE_NOT_SET = "__not__set__";
    protected static final String DEFAULT_NAMESPACE = "ribbon";

    public RibbonConfiguration () {
    }

    public RibbonConfiguration (String serviceId) {
        this.serviceId = serviceId;
    }

    @Bean
    @ConditionalOnMissingBean
    public ServerList<?> ribbonServerList(IClientConfig config) {

        Server[] servers = discoveryClient.getInstances(config.getClientName()).stream()
                .map(i -> new Server(i.getHost(), i.getPort()))
                .toArray(Server[]::new);

        return new StaticServerList(servers);
    }

}

Ribbon 配置类需要在主类上设置。

代码语言:javascript
代码运行次数:0
运行
复制
@SpringBootApplication
@EnableDiscoveryClient
@EnableZuulProxy
@EnableSwagger2
@AutoConfigureAfter(RibbonAutoConfiguration.class)
@RibbonClients(defaultConfiguration = RibbonConfiguration.class)
public class GatewayApplication {

   public static void main(String[] args) {
      SpringApplication.run(GatewayApplication.class, args);
   }

}

现在,我们终于可以利用多命名空间发现和负载平衡,并使用网关上公开的 Swagger UI 轻松测试它。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
声音识别的ImageNet诞生,谷歌发布大规模音频数据集
【新智元导读】谷歌今天发布了一个在声音识别上对标图像识别领域中的ImageNet的大型数据库。包含2100万标注视频、5800个小时的音频、527种类型的标注声音。 谷歌机器感知研究小组(Machine Perception Research)最新发布了一个大规模的音频数据集AudioSet。 根据谷歌在官网的介绍,AudioSet 包括 632 个音频事件类的扩展类目和从YouTube视频绘制的 2,084,320 个人类标记的10秒声音剪辑的集合。类目被指定为事件类别的分层图,覆盖广泛的人类和动物声音,
新智元
2018/03/27
1.8K0
声音识别的ImageNet诞生,谷歌发布大规模音频数据集
卧槽!ImageNet验证集6%的标签都是错!基于这些数据集的论文尴尬了!
众所周知,测试集是我们拿来衡量机器学习模型性能的基准。如果测试集错误百出,我们得‍到的性能数据也会存在很大偏差。‍
昱良
2021/04/16
1.3K0
收藏 | 全网最大机器学习数据集,视觉、NLP、音频都在这了
每年都有很多大型、高质量的数据集发布,其中大多数数据集都发布在各自的网站上,通过谷歌搜索很难找到所有这些数据集。
CDA数据分析师
2019/05/09
1.1K0
收藏 | 全网最大机器学习数据集,视觉、NLP、音频都在这了
ImageNet验证集6%的标签都是错的,MIT:十大常用数据集没那么靠谱
我们平时用的机器学习数据集存在各种各样的错误,这是一个大家都已经发现并接受的事实。为了提高模型准确率,有些学者已经开始着手研究这些数据集中的错误,但他们的研究主要集中在训练集,没有人系统研究过机器学习测试集的误差。
公众号机器学习与AI生成创作
2021/04/19
9640
ImageNet验证集6%的标签都是错的,MIT:十大常用数据集没那么靠谱
20用于深度学习训练和研究的数据集
数据集在计算机科学和数据科学中发挥着至关重要的作用。它们用于训练和评估机器学习模型,研究和开发新算法,改进数据质量,解决实际问题,推动科学研究,支持数据可视化,以及决策制定。数据集提供了丰富的信息,用于理解和应用数据,从而支持各种应用领域,包括医疗、金融、交通、社交媒体等。正确选择和处理数据集是确保数据驱动应用成功的关键因素,对于创新和解决复杂问题至关重要。因此,数据集不仅是技术发展的基础,也是推动科学进步和社会决策制定的强大工具。
deephub
2023/09/14
6420
20用于深度学习训练和研究的数据集
骗过70%的人!这个AI能自动给视频配音,真假难辨(不服来试)
安妮 发自 凹非寺 量子位 出品 | 公众号 QbitAI 先来做个“真假美猴王”的游戏。 视频内容 你将看到两段画面相同的视频,请判断哪段来自视频原声,哪段是AI根据视频画面配上的假声? 莫非两
量子位
2018/04/02
2.8K0
骗过70%的人!这个AI能自动给视频配音,真假难辨(不服来试)
[转载] 机器学习数据集统计系列一
作者:宋天龙 链接:https://www.zhihu.com/question/63383992/answer/222718972 来源:知乎
marsggbo
2018/12/12
1.2K0
数据集查找神器!100个大型机器学习数据集都汇总在这了 | 资源
网上各种数据集鱼龙混杂,质量也参差不齐,简直让人挑花了眼。想要获取大型数据集,还要挨个跑到各数据集的网站,两个字:麻烦。
量子位
2019/04/23
9270
数据集查找神器!100个大型机器学习数据集都汇总在这了 | 资源
教程 | 如何使用TensorFlow实现音频分类任务
选自Medium 作者:DeviceHive 机器之心编译 参与:Nurhachu Null、刘晓坤 本文介绍了一种使用 TensorFlow 将音频进行分类(包括种类、场景等)的实现方案,包括备选模型、备选数据集、数据集准备、模型训练、结果提取等都有详细的引导,特别是作者还介绍了如何实现 web 接口并集成 IoT。 简介 有很多不同的项目和服务能够识别人类的语音,例如 Pocketsphinx、Google』s Speech API,等等。这些应用和服务能够以相当好的性能将人类的语音识别成文本,但是其中
机器之心
2018/05/10
3.5K0
媲美 ImageNet 的动作识别数据集,你知道哪些?
原标题 | New Datasets for Action Recognition
AI研习社
2019/08/29
2K0
媲美 ImageNet 的动作识别数据集,你知道哪些?
业界 | 谷歌为YouTube添加新功能:利用机器学习自动生成音效字幕
选自Google blog 作者:Sourish Chaudhuri 机器之心编译 音频(audio)对于我们对世界的感知的影响的巨大自然不言而喻。语音(speech)显然是人们最熟悉的通信方式之一,但环境声音(sound)也能传达很多重要的信息。我们可以本能地响应这些背景声音所创造的语境,比如被突然出现的喧闹而吓到、使用音乐作为一种叙述元素或者在情景喜剧中将笑声用作一种观众提示。 自 2009 年以来,YouTube 就开始为视频提供自动生成的字幕了,而这主要是专注于语音转录以使 YouTube 上托管的
机器之心
2018/05/07
1.4K0
业界 | 谷歌为YouTube添加新功能:利用机器学习自动生成音效字幕
谷歌大脑2017技术研究总结 | Jeff Dean执笔(附论文、 数据集)
本文经AI新媒体量子位(公众号ID:qbitai)授权转载,转载请联系出处 本文长度为8311字,建议阅读10分钟 Jeff Dean回顾了谷歌大脑团队过去一年的核心研究,以及在多个AI领域的研究进展。 谷歌AI Senior Fellow、谷歌大脑负责人Jeff Dean,按照惯例,今天开始发布2017年度的谷歌大脑年度总结。 在这份已经发布的总结中,Jeff Dean回顾了谷歌大脑团队过去一年的核心研究,以及在多个AI领域的研究进展。 Jeff Dean还把相关研究的论文等一并附上,堪称良心之作,
数据派THU
2018/01/29
1.5K0
谷歌大脑2017技术研究总结 | Jeff Dean执笔(附论文、 数据集)
业界 | 深度学习也能实现「鸡尾酒会效应」:谷歌提出新型音频-视觉语音分离模型
选自Google Research Blog 作者:Inbar Mosseri等 机器之心编译 在嘈杂的环境中,人们非常善于把注意力集中在某个特定的人身上,在心理上「屏蔽」其他所有声音。这种能力被称为「鸡尾酒会效应」,是我们人类与生俱来的技能。然而,虽然关于自动语音分离(将音频信号分离为单独的语音源)的研究已经非常深入,但该问题仍是计算机领域面临的重大挑战。谷歌今日提出一种新型音频-视觉模型,从声音混合片段(如多名说话者和背景噪音)中分离出单独的语音信号。该模型只需训练一次,就可应用于任意说话者。 在《Lo
机器之心
2018/05/08
1.4K0
业界 | 深度学习也能实现「鸡尾酒会效应」:谷歌提出新型音频-视觉语音分离模型
ECCV 2022 | 76小时动捕,最大规模数字人多模态数据集开源
随着元宇宙的火爆以及数字人建模技术的商业化,AI 数字人驱动算法,作为数字人动画技术链的下一关键环节,获得了学界和工业界越来越广泛的兴趣和关注。其中谈话动作生成 (由声音等控制信号生成肢体和手部动作)由于可以降低 VR Chat, 虚拟直播,游戏 NPC 等场景下的驱动成本,在近两年成为研究热点。
一点人工一点智能
2022/12/27
8100
ECCV 2022 | 76小时动捕,最大规模数字人多模态数据集开源
盘点 | Jeff Dean撰文回顾谷歌大脑2017:从基础研究到新硬件
选自Google Research Blog 作者:Jeff Dean 机器之心编译 参与:黄小天、路雪 继谷歌大脑 2016 年盘点之后,谷歌大脑负责人 Jeff Dean 近日撰文回顾了 2017 年的工作,内容包括基础研究工作,机器学习的开源软件、数据集和新硬件。本文是这次盘点的第一部分,谷歌将稍后推出第二部分,介绍机器学习在医疗、机器人等不同科学领域的应用与创造性,以及对谷歌自身工作带来的影响。 谷歌大脑团队致力于拓展人工智能在研究和系统工程方面的进展。去年,我们盘点了 2016 年的工作。2017
机器之心
2018/05/11
6160
CVPR-17:谷歌大规模视频理解 Kaggle 挑战赛,首次加入音频特征
【新智元导读】谷歌昨天发布消息,更新了此前开源的含上万个视频的大规模数据集 Youtube-8M,新的数据集除了标签升级,还首次包含了预计算的音频特征(pre-computed audio features),有助于联合视听(时间)建模。此外,谷歌还联合Kaggle举办了视频理解竞赛,邀请参与者使用Youtube-8M作为训练数据,利用谷歌云机器学习平台构建视听内容分类模型。相关内容会在今年的CVPR会议上作为Workshop 展出。 去年9月,我们发布了YouTube-8M数据集,该数据集涵盖上千万个代表
新智元
2018/03/27
1K0
CVPR-17:谷歌大规模视频理解 Kaggle 挑战赛,首次加入音频特征
谷歌发布电影动作数据集AVA,57600精准标注视频教AI识别人类行为
【新智元导读】教机器理解视频中的人的行为是计算机视觉中的一个基本研究问题,谷歌最新发布一个电影片段数据集AVA,旨在教机器理解人的活动。 该数据集以人类为中心进行标注,包含80类动作的 57600 个视频片段,有助于人类行为识别系统的研究 数据集地址:https://research.google.com/ava/ 论文:https://arxiv.org/abs/1705.08421 教机器理解视频中的人的行为是计算机视觉中的一个基本研究问题,对个人视频搜索和发现、运动分析和手势界面等应用十分重要。尽管在
新智元
2018/03/21
1.5K0
谷歌发布电影动作数据集AVA,57600精准标注视频教AI识别人类行为
Stability AI开源47秒音频生成模型,虫鸣鸟叫、摇滚、鼓点都能生成
音频生成领域又有好消息:刚刚,Stability AI 宣布推出开放模型 Stable Audio Open,该模型能够生成高质量的音频数据。
机器之心
2024/06/17
2650
Stability AI开源47秒音频生成模型,虫鸣鸟叫、摇滚、鼓点都能生成
谷歌大脑2017总结(Jeff Dean执笔,干货满满,值得收藏)
李杉 维金 编译自 Google Blog 量子位 出品 | 公众号 QbitAI 谷歌AI Senior Fellow、谷歌大脑负责人Jeff Dean,按照惯例,今天开始发布2017年度的谷歌大脑
量子位
2018/03/22
7510
谷歌大脑2017总结(Jeff Dean执笔,干货满满,值得收藏)
【资源】DeepMind发布300k动作标注视频数据集
【新智元导读】DeepMind 最新发布30万 YouTube 视频剪辑的 Kinetics 数据集,包含400类人类动作注释,有助于视频理解机器学习。 Kinetics 是一个大规模、高质量的 YouTube 视频URL数据集,包含了各种各样的人类动作标记。我们发布 Kinetics 数据集的目的是助力机器学习社区推进视频理解模型的研究。 Kinetics 数据集包含大约30万个视频剪辑,涵盖400类人类动作,每类动作至少有400个视频剪辑。每个剪辑时长约10秒,并被标记一个动作类别。所有剪辑都经过多轮人
新智元
2018/03/28
1.7K0
【资源】DeepMind发布300k动作标注视频数据集
推荐阅读
声音识别的ImageNet诞生,谷歌发布大规模音频数据集
1.8K0
卧槽!ImageNet验证集6%的标签都是错!基于这些数据集的论文尴尬了!
1.3K0
收藏 | 全网最大机器学习数据集,视觉、NLP、音频都在这了
1.1K0
ImageNet验证集6%的标签都是错的,MIT:十大常用数据集没那么靠谱
9640
20用于深度学习训练和研究的数据集
6420
骗过70%的人!这个AI能自动给视频配音,真假难辨(不服来试)
2.8K0
[转载] 机器学习数据集统计系列一
1.2K0
数据集查找神器!100个大型机器学习数据集都汇总在这了 | 资源
9270
教程 | 如何使用TensorFlow实现音频分类任务
3.5K0
媲美 ImageNet 的动作识别数据集,你知道哪些?
2K0
业界 | 谷歌为YouTube添加新功能:利用机器学习自动生成音效字幕
1.4K0
谷歌大脑2017技术研究总结 | Jeff Dean执笔(附论文、 数据集)
1.5K0
业界 | 深度学习也能实现「鸡尾酒会效应」:谷歌提出新型音频-视觉语音分离模型
1.4K0
ECCV 2022 | 76小时动捕,最大规模数字人多模态数据集开源
8100
盘点 | Jeff Dean撰文回顾谷歌大脑2017:从基础研究到新硬件
6160
CVPR-17:谷歌大规模视频理解 Kaggle 挑战赛,首次加入音频特征
1K0
谷歌发布电影动作数据集AVA,57600精准标注视频教AI识别人类行为
1.5K0
Stability AI开源47秒音频生成模型,虫鸣鸟叫、摇滚、鼓点都能生成
2650
谷歌大脑2017总结(Jeff Dean执笔,干货满满,值得收藏)
7510
【资源】DeepMind发布300k动作标注视频数据集
1.7K0
相关推荐
声音识别的ImageNet诞生,谷歌发布大规模音频数据集
更多 >
目录
  • 为什么选择 Spring Cloud Kubernetes?
  • 启用 Spring Cloud Kubernetes
  • 跨所有命名空间的发现
  • 使用 Kubernetes PropertySource 进行配置
  • 在 Minikube 上部署 Spring Cloud 应用程序
  • 公开有关 Pod 的信息
  • 运行网关
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档