前言
在当今的技术环境中,人工智能(AI)与前端开发的融合越来越普遍。其中一个显著的应用是在图像识别中,AI算法可以检测和标记图像中的对象,增强用户体验,并在网站或应用程序上实现创新功能。
下面将给出完成图片识别功能简易代码示例与讲解:
先决条件: 在继续之前,请确保您对HTML、CSS和JavaScript有基本的了解。另外,熟悉与AI和图像处理相关的概念将会有所帮助。
Step1:导入必要的模块
1 | js复制代码import { pipeline, env } from "https://cdn.jsdelivr.net/npm/@xenova/transformers@2.6.0" |
- 此代码从CDN(内容传送网络)中导入必要的模块。
pipeline
和env
是从@xenova/transformers
包中导入的。 env.allowLocalModels = false;
将环境变量allowLocalModels
设置为false
,表示不允许使用本地模型。
Step2:文件上传事件监听器
1 | js复制代码const fileUpload = document.getElementById('file-upload'); |
- 此部分代码从HTML文档中选择文件上传输入框和图像容器。
- 它向文件上传输入框添加了一个事件监听器,当选择文件时触发一个函数。
Step3:FileReader 读取上传的图像
1 | js复制代码const reader = new FileReader(); |
- 当选择文件时,创建了一个
FileReader
对象。 - 一个
onload
事件监听器被附加到读取器上,当文件读取完成时执行一个函数。 readAsDataURL
方法在读取器上被调用,将所选文件的内容读取为数据URL。
Step4:显示上传的图像
1 | js复制代码javascriptCopy code |
- 在
onload
函数内部,创建了一个<img>
元素。 - 图像的
src
属性设置为读取文件作为数据URL的结果。 - 图像元素被追加到HTML文档中的图像容器中。
Step5:启动AI检测
1 | js复制代码detect(image) |
- 在显示上传的图像后,使用上传的图像作为参数调用
detect
函数。
Step6:使用AI模型进行对象检测
1 | js复制代码const detector = await pipeline("object-detection", "Xenova/detr-resnet-50") |
- 使用
pipeline
函数从指定的模型("Xenova/detr-resnet-50"
)实例化一个对象检测模型("object-detection"
)。 - 使用
await
等待detector
对象,确保模型完全加载后再继续。 - 然后使用
detector
对象在上传的图像上执行对象检测。 output
包含对象检测任务的结果。
Step7:渲染检测到的框
1 | js复制代码output.forEach(renderBox) |
- 对输出中检测到的每个对象,调用
renderBox
函数以渲染边界框。
Step8:渲染边界框
1 | js复制代码function renderBox({ box, label }) { |
renderBox
函数接受一个具有box
(边界框的坐标)和label
(检测到的对象的标签)的对象。- 在函数内部,创建一个
<div>
元素来表示边界框。 - 应用 CSS 样式来根据检测到的对象的坐标来定位和样式化边界框。
- 创建一个
<span>
元素来在边界框内显示检测到的对象的标签。
完整代码
1 | js复制代码<!-- |
效果图
还需要调整参数,加强精确度
总结
这篇文章,我们探讨了将AI对象检测与前端Web开发无缝集成的方法。通过按照所述步骤并利用现成的AI库,开发人员可以为其Web应用程序增加强大的图像识别功能。这种AI和前端技术的融合为在Web上创建智能和交互式用户体验开启了广阔的可能性。
前往揭秘前端+ai的真相:juejin.cn/post/735919…
本文转载自: 掘金