【AI + TensorFlow 项目实战】Web 图像分类器(TF.js 部署)

个人简介
在这里插入图片描述
作者简介:全栈研发,具备端到端系统落地能力,专注大模型的压缩部署、多模态理解与 Agent 架构设计。 热爱“结构”与“秩序”,相信复杂系统背后总有简洁可控的可能。
我叫观熵。不是在控熵,就是在观测熵的流动
个人主页:观熵
个人邮箱:privatexxxx@163.com
座右铭:愿科技之光,不止照亮智能,也照亮人心!

专栏导航

观熵系列专栏导航:
AI前沿探索:从大模型进化、多模态交互、AIGC内容生成,到AI在行业中的落地应用,我们将深入剖析最前沿的AI技术,分享实用的开发经验,并探讨AI未来的发展趋势
AI开源框架实战:面向 AI 工程师的大模型框架实战指南,覆盖训练、推理、部署与评估的全链路最佳实践
计算机视觉:聚焦计算机视觉前沿技术,涵盖图像识别、目标检测、自动驾驶、医疗影像等领域的最新进展和应用案例
国产大模型部署实战:持续更新的国产开源大模型部署实战教程,覆盖从 模型选型 → 环境配置 → 本地推理 → API封装 → 高性能部署 → 多模型管理 的完整全流程
TensorFlow 全栈实战:从建模到部署:覆盖模型构建、训练优化、跨平台部署与工程交付,帮助开发者掌握从原型到上线的完整 AI 开发流程
PyTorch 全栈实战专栏: PyTorch 框架的全栈实战应用,涵盖从模型训练、优化、部署到维护的完整流程
深入理解 TensorRT:深入解析 TensorRT 的核心机制与部署实践,助力构建高性能 AI 推理系统
Megatron-LM 实战笔记:聚焦于 Megatron-LM 框架的实战应用,涵盖从预训练、微调到部署的全流程
AI Agent:系统学习并亲手构建一个完整的 AI Agent 系统,从基础理论、算法实战、框架应用,到私有部署、多端集成
DeepSeek 实战与解析:聚焦 DeepSeek 系列模型原理解析与实战应用,涵盖部署、推理、微调与多场景集成,助你高效上手国产大模型
端侧大模型:聚焦大模型在移动设备上的部署与优化,探索端侧智能的实现路径
行业大模型 · 数据全流程指南:大模型预训练数据的设计、采集、清洗与合规治理,聚焦行业场景,从需求定义到数据闭环,帮助您构建专属的智能数据基座
机器人研发全栈进阶指南:从ROS到AI智能控制:机器人系统架构、感知建图、路径规划、控制系统、AI智能决策、系统集成等核心能力模块
人工智能下的网络安全:通过实战案例和系统化方法,帮助开发者和安全工程师识别风险、构建防御机制,确保 AI 系统的稳定与安全
智能 DevOps 工厂:AI 驱动的持续交付实践:构建以 AI 为核心的智能 DevOps 平台,涵盖从 CI/CD 流水线、AIOps、MLOps 到 DevSecOps 的全流程实践。
C++学习笔记?:聚焦于现代 C++ 编程的核心概念与实践,涵盖 STL 源码剖析、内存管理、模板元编程等关键技术
AI × Quant 系统化落地实战:从数据、策略到实盘,打造全栈智能量化交易系统


🎯 Web 图像分类器(TF.js 部署)

📝 说明: 将训练好的图像分类模型部署到浏览器端,实现前端实时识别。
用户可通过上传图片或开启摄像头,直接在网页上完成图像识别,无需后端服务器。


✅ 项目亮点

  • 使用 TensorFlow.js 在浏览器端推理模型
  • 支持模型转换(SavedModel → TF.js 格式)
  • 支持 Webcam 实时推理 + 文件上传识别
  • 适合部署图像分类 / 手势识别 / 人脸检测等模型
  • 零后端、全前端运行,加载即用

🧠 模型选择与准备

可以使用你训练的任意模型(如本专栏中的“猫狗分类器”),要求:

  • 输入:定长图像 [height, width, 3]
  • 输出:分类 logits / softmax 概率分布

🛠️ Step 1:导出模型为 TF.js 格式

✅ 使用 tensorflowjs_converter

tensorflowjs_converter \
  --input_format=tf_saved_model \
  --output_format=tfjs_graph_model \
  export/catdog_model tfjs_model/

你将获得:

tfjs_model/
├── model.json
├── group1-shard1of1.bin

🌐 Step 2:构建 HTML + JS 前端页面

✅ 示例 HTML 页面

<!DOCTYPE html>
<html>
<head>
  <title>图像分类器</title>
  <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@3.21.0"></script>
</head>
<body>
  <h1>图像分类器(浏览器端)</h1>
  <input type="file" id="image-upload" accept="image/*" />
  <br><br>
  <canvas id="canvas" width="150" height="150"></canvas>
  <div id="result">预测结果将显示在这里</div>

  <script>
    let model;
    const canvas = document.getElementById("canvas");
    const ctx = canvas.getContext("2d");

    async function loadModel() {
      model = await tf.loadGraphModel("tfjs_model/model.json");
      console.log("模型加载成功");
    }

    async function predict(img) {
      const input = tf.browser.fromPixels(img).resizeNearestNeighbor([150, 150]).toFloat().div(255).expandDims();
      const preds = await model.predict(input).data();
      const label = preds[0] > 0.5 ? "狗 🐶" : "猫 🐱";
      document.getElementById("result").innerText = `预测结果:${label}${(preds[0]*100).toFixed(2)}%)`;
    }

    document.getElementById("image-upload").addEventListener("change", (event) => {
      const file = event.target.files[0];
      const img = new Image();
      const reader = new FileReader();

      reader.onload = () => {
        img.onload = () => {
          ctx.drawImage(img, 0, 0, 150, 150);
          predict(img);
        };
        img.src = reader.result;
      };
      reader.readAsDataURL(file);
    });

    loadModel();
  </script>
</body>
</html>

🔍 效果展示

  • 上传图片:自动缩放、画入 Canvas
  • 调用模型:预测结果实时显示
  • 推理性能:平均 <200ms(Chrome / Edge)

📦 可拓展功能

功能技术
摄像头识别navigator.mediaDevices.getUserMedia + tf.browser.fromPixels(video)
多类分类argMax(preds) + 映射索引
热力图叠加Grad-CAM(需模型支持)
UI 美化使用 Tailwind / Bootstrap 改进样式

📁 项目结构建议

web-classifier-tfjs/
├── tfjs_model/
│   ├── model.json
│   ├── group1-shard1of1.bin
├── index.html
└── preview.jpg (用于博客封面)

✅ 项目小结

内容技术
模型格式TensorFlow.js GraphModel
部署平台浏览器(前端)
运行环境无需后端 / 云端
推理性能CPU 推理,低延迟
应用场景图像识别、手势识别、Web Demo 展示

🌟 如果本文对你有帮助,欢迎三连支持!

👍 点个赞,给我一些反馈动力
⭐ 收藏起来,方便之后复习查阅
🔔 关注我,后续还有更多实战内容持续更新


写系统,也写秩序;写代码,也写世界。
观熵出品,皆为实战沉淀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

观熵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值