解锁NLP之图片检测:前端编程技巧与AI应用

引言

在当今大厂级别的编程中,不仅要求功能强大,还需要展现出高超的逻辑能力和深入的语言理解。本文将介绍如何结合前端编程技巧和人工智能(AI)应用,实现图片检测功能。

编程效率的追求

大厂程序员们始终追求编程效率的提升。在HTML编程中,使用EMMET(HTML代码快速输入工具)可以极大地提高编程效率。此外,通过刻意练习,我们能够培养快速编程的能力,从而更高效地完成任务。

前端素养的重要性

前端素养是成为优秀程序员的关键。构建语义化的HTML结构是前端开发的基础之一。不同的HTML标签代表着不同的语义,例如使用<main>标签比使用<div>更能表达页面的主体内容。同时,熟悉CSS选择器的使用,能够更精准地定位和样式化HTML元素,提高页面的美观程度和用户体验。

NLP任务之图片检测

本文以NLP(自然语言处理)任务中的图片检测为例,展示了如何将前端编程技巧与AI应用相结合,实现图片检测的功能。以下是相关代码:

xml 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>nlp之图片识别,两种语言</title>
    <style>
        .container {
        margin: 40px auto;
        width: max(50vw, 400px);
        display: flex;
        flex-direction: column;
        align-items: center;
    }
    .custom-file-upload {
        display: flex;
        align-items: center;
        cursor: pointer;
        gap:10px;
        border: 2px solid black;
        padding: 8px 16px;
        border-radius: 6px;
    }
    #file-upload {
        display: none;
    }
    #image-container {
        width: 100%;
        margin-top:20px;
        position: relative;
    }
    #image-container>img {
        width: 100%;
    }
    .bounding-box {
        position: absolute;
        box-sizing: border-box;
    }
    .bounding-box-label {
        position: absolute;
        color: white;
        font-size: 12px;
    }
    </style>
</head>
<body>
    <!-- 语义化 main就比div 更好 页面中的主体内容 -->
    <!-- css 选择器 -->
    <main class="container">
        <label for="file-upload" class="custom-file-upload">
            <!-- <input type="file" id="file-upload" accept="image/*"> -->
            <input type="file" accept="image/*" id="file-upload">
            上传图片
        </label>
        <div id="image-container">
        </div>
        <p id="status"></p>
    </main>
    <script type="module">
        // transformers npl 任务 
        import { pipeline, env } from "https://cdn.jsdelivr.net/npm/@xenova/transformers@2.6.0"
        env.allowLocalModels = false;

        const fileUpload = document.getElementById('file-upload');
        const imageContainer = document.getElementById('image-container');
        fileUpload.addEventListener('change', function (e1) {
            console.log(e1.target.files[0]);
            const file = e1.target.files[0];
            //新建一个FileReader 对象,01 序列
            //图片比较大
            const reader = new FileReader();
            reader.onload = function (e2) {
                //加载完成
                const image = document.createElement('img'); //图片对象
                image.src = e2.target.result;
                console.log(image.src);
                imageContainer.appendChild(image);
                detect(image);//启动ai任务 功能模块化,封装出去
            }
            reader.readAsDataURL(file);
        })
        const status = document.getElementById('status');
        // 检测图片的AI任务
        const detect = async (image) => {
            status.textContent = "分析中..."
            const detector = await pipeline("object-detection",
                "Xenova/detr-resnet-50");//model 实例化了detector对象
            const output = await detector(image.src, {
                threshold: 0.1,
                percentage: true
            })
            console.log(output);
            output.forEach(renderBox)
        }
        function renderBox({ box, label }) {
            const { xmax, xmin, ymax, ymin } = box;
            const boxElement = document.createElement("div");
            boxElement.className = "bounding-box";
            Object.assign(boxElement.style, {
                borderColor: '#123123',
                borderWidth: '1px',
                borderStyle: 'solid',
                left: 100 * xmin + '%',
                top: 100 * ymin + '%',
                width: 100 * (xmax - xmin) + "%",
                height: 100 * (ymax - ymin) + "%"
            })
            const labelElement = document.createElement('span');
            labelElement.textContent = label;
            labelElement.className = "bounding-box-label";
            labelElement.style.backgroundColor = '#000000';
            boxElement.appendChild(labelElement);
            imageContainer.appendChild(boxElement);
        }
    </script>
</body>
</html>

在代码中,我们通过HTML和CSS构建了一个简单的页面,用户可以上传图片。一旦用户上传了图片,JavaScript代码将调用AI模型对图片进行检测,并在页面上显示检测结果。这个过程中,运用了前文提到的HTML语义化、CSS选择器等前端技巧,以及异步编程、事件监听等JavaScript技术。

效果图

结语

通过本文的学习,我们了解了如何结合前端编程技巧和AI应用,实现图片检测的功能。这不仅提升了我们的编程技能,也拓展了我们对前端和AI领域的理解。希望读者通过本文的学习,能够在实践中运用所学知识,不断提升自己的编程能力。

相关推荐
飞哥数智坊4 小时前
从CodeBuddy翻车到MasterGo救场,我的小程序UI终于焕然一新
人工智能
AKAMAI6 小时前
跳过复杂环节:Akamai应用平台让Kubernetes生产就绪——现已正式发布
人工智能·云原生·云计算
新智元8 小时前
阿里王牌 Agent 横扫 SOTA,全栈开源力压 OpenAI!博士级难题一键搞定
人工智能·openai
新智元8 小时前
刚刚,OpenAI/Gemini 共斩 ICPC 2025 金牌!OpenAI 满分碾压横扫全场
人工智能·openai
机器之心8 小时前
OneSearch,揭开快手电商搜索「一步到位」的秘技
人工智能·openai
阿里云大数据AI技术8 小时前
2025云栖大会·大数据AI参会攻略请查收!
大数据·人工智能
YourKing9 小时前
yolov11n.onnx格式模型转换与图像推理
人工智能
sans_9 小时前
NCCL的用户缓冲区注册
人工智能
sans_9 小时前
三种视角下的Symmetric Memory,下一代HPC内存模型
人工智能
算家计算9 小时前
模糊高清修复真王炸!ComfyUI-SeedVR2-Kontext(画质修复+P图)本地部署教程
人工智能·开源·aigc