AI-DSW 上编辑嵌套式模型实现Resnet手势识别

简介: 体验了KerasGraph后,个人感觉它代表了最新的ai开发环境演进方向——类似轻代码(low code)编辑器,可以快速构建模型结构并验证模型效果,提升了我们对模型结构的实现效率,避免纠结与在TF过于繁琐的源码,而是Focus在模型结构优化本身,总体来说还是不错的。

AI-DSW 上编辑嵌套式模型实现Resnet手势识别

AI-DSW(Data science workshop)是专门为算法开发者准备的云端深度学习开发环境,

进入DSW,目前只有KerasCode和KerasGraph两个Kernel实现了FastNeuralNetwork功能。

  • KerasCode:先写深度学习网络代码,然后将代码转成图
  • KerasGraph:直接通过画布构建深度学习网络,并且将图转成代码

接下来我们通过实现Resnet18实现手势识别为例,体验AI-DSW的使用

我们的任务为,手语英文字母数据集中包含用手语表示的26个英文字母的信息,我们通过建立ResNet18模型进行手语英文字母识别

_2020_05_16_9_39_01

在AI-DSW 的官方文档中推荐我们采用序贯式(sequential)的方式构建模型,但是嵌套式封装来构建模型可以使结构更清晰,一些内容可以复用,我们来具体看下代码:

def Conv2d_BN(x, nb_filter, kernel_size, strides=(1, 1), padding='same'):

    x = Conv2D(nb_filter, kernel_size, padding=padding, strides=strides)(x)
    x = BatchNormalization(axis=3)(x)
    x = Activation('relu')(x)
    return x

首先我们将最常见的CNN模块封装,包括卷积,BN,激活函数;用于Resnet模型的复用;

def identity_Block(inpt, nb_filter, kernel_size, strides=(1, 1), with_conv_shortcut=False):
    x = Conv2d_BN(inpt, nb_filter=nb_filter, kernel_size=kernel_size, strides=strides, padding='same')
    x = Conv2d_BN(x, nb_filter=nb_filter, kernel_size=kernel_size, padding='same')
    if with_conv_shortcut:#shortcut的含义是:将输入层x与最后的输出层y进行连接,如上图所示
        shortcut = Conv2d_BN(inpt, nb_filter=nb_filter, strides=strides, kernel_size=kernel_size)
        x = add([x, shortcut])
        return x
    else:
        x = add([x, inpt])
        return x

接下来我们实现Resnet用于Residual Block的模块,即残差块,基于残差块可以有效提升网络性能,提升模型泛化能力,如图所示:

image

有了核心模块后,我们可着手搭建模型的核心结构,包括输入,卷积,残差,池化,全连接,输出等一系列步骤

def resnet_18(width,height,channel,classes):
    inpt = Input(shape=(width, height, channel))
    # x = ZeroPadding2D((3, 3))(inpt)
 
    #conv1
    x = Conv2d_BN(inpt, nb_filter=64, kernel_size=(7, 7), strides=(2, 2), padding='valid')
    x = MaxPooling2D(pool_size=(3, 3), strides=(2, 2), padding='same')(x)
 
    #conv2_x
    x = identity_Block(x, nb_filter=64, kernel_size=(3, 3))
    x = identity_Block(x, nb_filter=64, kernel_size=(3, 3))
 
    #conv3_x
    x = identity_Block(x, nb_filter=128, kernel_size=(3, 3), strides=(2, 2), with_conv_shortcut=True)
    x = identity_Block(x, nb_filter=128, kernel_size=(3, 3))
 
    #conv4_x     
    x = identity_Block(x, nb_filter=256, kernel_size=(3, 3), strides=(2, 2), with_conv_shortcut=True)
    x = identity_Block(x, nb_filter=256, kernel_size=(3, 3))
 
    #conv5_x
    x = identity_Block(x, nb_filter=512, kernel_size=(3, 3), strides=(2, 2), with_conv_shortcut=True)
    x = identity_Block(x, nb_filter=512, kernel_size=(3, 3))

    x = GlobalAvgPool2D()(x)
    x = Dense(classes, activation='softmax')(x)
 
    model = Model(inputs=inpt, outputs=x)
    return model

基于嵌套式策略同样可以做生成模型结构,如图所示:

_2020_05_16_10_40_44

同样的,我们按照官方文档介绍的,也可做模型可视化编辑,调整参数等

_2020_05_16_11_19_10

有了模型后,我们定义损失函数,加入训练集验证集来训练优化模型,最终得到结果。
_2020_05_16_10_47_38

综上,体验了KerasGraph后,个人感觉它代表了最新的ai开发环境演进方向——类似轻代码(low code)编辑器,可以快速构建模型结构并验证模型效果,提升了我们对模型结构的实现效率,避免纠结与在TF过于繁琐的源码,而是Focus在模型结构优化本身,总体来说还是不错的。

当然KerasGraph当前使用也存在一些问题:

  • 暂不支持各类预训练模型,比如keras_bert,resnet这些,不过在支持了预训练模型,甚至支持对预训练模型最后几层做编辑,将大大提升实用性
  • KerasGraph图形化界面前端占用过多内存,有的时候会导致页面卡塞
  • KerasGraph对于各层参数编辑和定义易用性还需要提升,目前并不比查阅文档方便多少

当然这不妨碍KerasGraph已经是个较为出色的模型展示工具,我也相信假以时日KerasGraph在模型编辑上取得突破

目录
相关文章
|
6月前
|
云安全 人工智能 自然语言处理
阿里云x硅基流动:AI安全护栏助力构建可信模型生态
阿里云AI安全护栏:大模型的“智能过滤系统”。
2386 120
|
7月前
|
人工智能 自然语言处理 IDE
模型微调不再被代码难住!PAI和Qwen3-Coder加速AI开发新体验
通义千问 AI 编程大模型 Qwen3-Coder 正式开源,阿里云人工智能平台 PAI 支持云上一键部署 Qwen3-Coder 模型,并可在交互式建模环境中使用 Qwen3-Coder 模型。
1187 109
|
8月前
|
人工智能 自然语言处理 搜索推荐
AI Compass前沿速览:Qoder Agentic编程、vivo Vision头显、AIRI桌面伴侣、RM-Gallery奖励模型平台
AI Compass前沿速览:Qoder Agentic编程、vivo Vision头显、AIRI桌面伴侣、RM-Gallery奖励模型平台
AI Compass前沿速览:Qoder Agentic编程、vivo Vision头显、AIRI桌面伴侣、RM-Gallery奖励模型平台
|
6月前
|
人工智能 搜索推荐 程序员
当AI学会“跨界思考”:多模态模型如何重塑人工智能
当AI学会“跨界思考”:多模态模型如何重塑人工智能
832 120
|
8月前
|
机器学习/深度学习 人工智能 监控
大型动作模型LAM:让企业重复任务实现80%效率提升的AI技术架构与实现方案
大型动作模型(LAMs)作为人工智能新架构,融合神经网络与符号逻辑,实现企业重复任务的自动化处理。通过神经符号集成、动作执行管道、模式学习、任务分解等核心技术,系统可高效解析用户意图并执行复杂操作,显著提升企业运营效率并降低人工成本。其自适应学习能力与上下文感知机制,使自动化流程更智能、灵活,为企业数字化转型提供坚实支撑。
533 0
大型动作模型LAM:让企业重复任务实现80%效率提升的AI技术架构与实现方案
|
8月前
|
人工智能 JavaScript 测试技术
Cradle:颠覆AI Agent 操作本地软件,AI驱动的通用计算机控制框架,如何让基础模型像人一样操作你的电脑?
Cradle 是由 BAAI‑Agents 团队开源的通用计算机控制(GCC)多模态 AI Agent 框架,具备视觉输入、键鼠操作输出、自主学习与反思能力,可操作各类本地软件及游戏,实现任务自动化与复杂逻辑执行。
984 6
|
7月前
|
人工智能 监控 Kubernetes
稳定支撑大规模模型调用,携程旅游的 AI 网关实践
为了进一步提升服务水平和服务质量,携程很早就开始在人工智能大模型领域进行探索。而随着工作的深入,大模型服务的应用领域不断扩大,公司内部需要访问大模型服务的应用也越来越多,不可避免的就遇到了几个问题,我们自然就会想到使用网关来对这些服务接入进行统一管理,并增加各种切面上的流量治理功能。
656 77

热门文章

最新文章

下一篇
开通oss服务