Serverless架构下的AI应用开发:入门、实战与性能优化_刘宇;田初东;卢萌凯;王仁达_AZW3_MOBI_EPUB_PDF_电子书(无页码)_刘宇;田初东;卢萌凯;王仁达

内容节选

5.2.2猫狗识别项目训练 Kaggle是由联合创始人、首席执行官安东尼·高德布卢姆(Anthony Goldbloom)于2010年在墨尔本创立的,为开发商和数据科学家提供了举办机器学习竞赛、托管数据库、编写和分享代码的平台。 如图5-2所示,多年前,Kaggle平台上线了一个名为Dogs vs. Cats的比赛项目。时至今日,该项目成为人工智能学习过程中非常经典的案例之一。该项目使用的猫狗分类图像共25000张,猫、狗均有12500张。 如图5-3所示,可以发现猫狗的姿态不一,有的站着,有的眯着眼睛,有的和其他可识别物体比如桶、人混在一起。同时,图像尺寸也不一致。因此,数据预处理变得非常重要。 ▲图5-2 Kaggle上的猫狗识别项目 图5-3 猫狗识别案例的数据集预览 1.数据预处理 原数据的命名规则是“类别.编号.格式”,例如cat.73.jpg。为了便于数据的后期处理,我们可以将猫与狗的图像进行归类:import osimport shutilimport baseroot_path = base.SOURCE_ROOTtrain_path = base.SOURCE_ROOT + '/train'def copyFile(srcfile, dstfile): if os.path.isfile(srcfile): path, name = os.path.split(dstfile) # 分离文件名和路径 if not os.path.exists(path): os.makedirs(path) # 创建路径 shutil.copyfile(srcfile, dstfile) # 复制文件 print("copy %s -> %s" % (srcfile, dstfile)) for root, dirs, files in os.walk(train_path, True, None, False): # 遍历目录 for f in files: if os.path.isfile(os.path.join(root, f)): lable, label_id = os.path.splitext(f)[0].split('.') base_path = './strengthen' if int(label_id) > 5000 else './train' img_path = os.path.join(root, f) target_path = base_path + ("/cat" if lable == 'cat' else "/dog") if not os.path.exists(target_path): os.makedirs(target_path) # 创建路径 copyFile(img_path, os.path.join(target_path, f)) 图5-4 猫狗识别案例项目数据集目录结构 由于猫和狗的图像数据均为12500份,而我们不仅要通过这些数据进行初始模型的训练,还要模拟测试后期进行模型的完善,所以在进行数据归类时,只把id小于5000的图像用于训练,id大于5000的图像用于后期的模型完善,结果如图5-4所示。 完成上述的简单归类之后,为了有效使用内存资源,我们使用tfrecord对图像进行存储:_float_feature = lambda value: tf.train.Feature(float_list=tf.train.Float-List(value=[value] if not isinstance(value, list) else value))_int_feature = lambda value: tf.train.Feature(int64_list=tf.train.Int64- List(value=[value] if not isinstance(value, list) else value))_bytes_feature = lambda value: tf.train.Feature(bytes_list=tf.train.Bytes-List(value=[value] if not isinstance(value, list) else value))getFolderName = lambda folder: sorted([x for x in os.listdir(folder) if os.path.isdir(os.path.join(folder, x))])get_file_name = lambda folder: [x for x in map(lambda x: os.path.join(folder,......

  1. 信息
  2. 作者简介
  3. 序一
  4. 序二
  5. 序三
  6. 序四
  7. 序五
  8. 前言
  9. 第1章 初识Serverless架构
  10. 1.1 Serverless架构的概念
  11. 1.2 Serverless架构的特点
  12. 1.2.1 优势与价值
  13. 1.2.2 面临的挑战
  14. 1.3 Serverless架构的应用场景
  15. 第2章 Serverless架构下的应用开发
  16. 2.1 Serverless架构下的应用开发流程
  17. 2.2 与ServerFul应用开发流程对比
  18. 2.3 传统Web框架部署与迁移
  19. 2.3.1 请求集成方案
  20. 2.3.2 其他方案
  21. 2.4 Serverless应用的开发和部署
  22. 2.4.1 如何开发、部署Serverless应用
  23. 2.4.2 如何对Serverless应用进行调试
  24. 2.4.3 通过开发者工具进行依赖安装和项目构建
  25. 2.4.4 Serverless架构与CI/CD工具的结合
  26. 2.5 Serverless应用的可观测性
  27. 第3章 机器学习入门
  28. 3.1 什么是人工智能
  29. 3.1.2 人工智能的发展
  30. 3.1.3 人工智能的典型应用场景
  31. 3.2 常用的机器学习算法
  32. 3.2.1 常见的监督学习算法
  33. 3.2.2 常见的无监督学习算法
  34. 3.2.3 其他常见的深度学习模型
  35. 第4章 主流机器学习框架与Serverless架构结合
  36. 4.1 scikit-learn与Serverless架构结合
  37. 4.1.2 scikit-learn实践:鸢尾花数据分类
  38. 4.1.3 与Serverless架构结合:文本分类
  39. 4.2 TensorFlow与Serverless架构结合
  40. 4.2.2 TensorFlow实践:基于人工智能的衣物区分
  41. 4.2.3 与Serverless架构结合:目标检测系统
  42. 4.3 PyTorch与Serverless架构结合
  43. 4.3.2 PyTorch实践:图像分类系统
  44. 4.3.3 与Serverless架构结合:对姓氏进行分类
  45. 4.4 PaddlePaddle与Serverless架构结合
  46. 4.4.2 PaddlePaddle实践:手写数字识别任务
  47. 4.4.3 与Serverless架构结合:PaddleOCR项目开发与部署
  48. 第5章 Serverless架构下的AI项目实战
  49. 5.1 Serverless架构下的AI应用
  50. 5.1.1 项目的开发与部署
  51. 5.1.2 冷启动优化
  52. 5.1.3 训练与推理性能优化
  53. 5.1.4 模型更新迭代方案
  54. 5.2 模型升级在Serverless架构下的实现与应用
  55. 5.2.2 猫狗识别项目训练
  56. 5.2.3 将模型部署到Serverless架构
  57. 5.2.4 用户反馈与模型迭代
  58. 5.2.5 项目总结
  59. 5.3 人脸识别在Serverless架构下的应用
  60. 5.3.2 人脸识别模型训练
  61. 5.3.3 人脸识别模型的应用
  62. 5.3.4 项目Serverless化
  63. 5.3.5 项目总结
  64. 5.4 文本情感分析在Serverless架构下的应用
  65. 5.4.2 情感分析模型的训练
  66. 5.4.3 部署到Serverless架构
  67. 5.4.4 项目Serverless化
  68. 5.4.5 项目总结
  69. 第6章 基于Serverless架构的智能问答系统
  70. 6.1 需求分析
  71. 6.2 整体设计
  72. 6.2.1 数据库设计
  73. 6.2.2 原型图设计
  74. 6.2.3 接口设计
  75. 6.2.4 架构设计
  76. 6.3 项目开发
  77. 6.3.1 项目初始化
  78. 6.3.2 数据库与表的建设
  79. 6.3.3 管理后台相关能力的配置
  80. 6.3.4 业务逻辑开发
  81. 6.4 项目部署与运维
  82. 6.5 项目预览
  83. 6.6 项目总结
  84. 第7章 基于Serverless架构的人工智能相册小程序
  85. 7.1 需求分析
  86. 7.2 整体设计
  87. 7.2.1 数据库设计
  88. 7.2.2 原型图设计
  89. 7.2.3 细节设计
  90. 7.2.4 架构设计
  91. 7.3 项目开发
  92. 7.3.2 小程序开发
  93. 7.3.3 服务端开发
  94. 7.3.4 管理系统开发
  95. 7.4 项目预览
  96. 7.5 经验积累
  97. 7.5.2 如何进行本地调试
  98. 第8章 Serverless应用的优化与注意事项
  99. 8.1 函数基础与资源编排
  100. 8.1.2 对无状态性的认识
  101. 8.1.3 资源评估的重要性
  102. 8.1.4 工作流的加持
  103. 8.2 警惕冷启动
  104. 8.2.1 云厂商侧的冷启动优化方案
  105. 8.2.2 开发者侧降低冷启动影响的方案
  106. 8.3 应用开发注意事项
  107. 8.3.1 如何上传文件
  108. 8.3.2 文件读写与持久化方法
  109. 8.3.3 慎用部分Web框架的特性
  110. 8.3.4 应用组成结构注意事项
  111. 8.3.5 如何实现WebSocket
  112. 8.3.6 善于利用平台特性