sahi目标检测java实现

YOLOv8小目标检测实战:如何用SAHI算法提升检测精度(附完整代码) 本文详细介绍了如何通过SAHI算法提升YOLOv8在小目标检测中的精度,包括算法原理、集成方案和实战案例。针对工业质检、卫星图像等场景中的小目标检测难题,SAHI通过重叠切片推理和结果融合显著提升检测性能,附完整代码实现和优化技巧。 阅读详情

SAHI(Slicing Aided Hyper Inference)采用了切片辅助推理和微调技术,可提高小目标对象的检测精度。

1 图像进行切片分割

private static void sahiImg(Bitmap tBitmap, int sWh, int boxWh){
        int dImgW = tBitmap.getWidth();
        int dImgH = tBitmap.getHeight();
        int cNum = (int) Math.ceil((float) dImgW / sWh);
        int rNum = (int) Math.ceil((float) dImgH / sWh);
        Log.d("testWH", dImgW + "," + dImgH+ "," +rNum+ "," +cNum+ "," +sWh);
        for(int i=0; i<rNum; i++) {
            for (int j = 0; j < cNum; j++) {
                int bX = sWh * j;
                int bY = sWh * i;
                if( bX >=dImgW-boxWh){
                    bX = dImgW-boxWh;//break;
                    j = cNum -1;
                }
                if( bY >=dImgH-boxWh){
                    bY = dImgH-boxWh;
                    i = rNum -1;
                }
                Bitmap part1bmap = Bitmap.createBitmap(tBitmap, bX, bY, boxWh, boxWh);
                Log.d("testBmap",  bX + "," + bY+ "," +boxWh+ "," +i+ ",a" +j);
                if(CONST.decGpu==1){ isGpu = true; }
                YoloV5Ncnn.dObj[] yoloObj = CONST.yolov5ncnn.Detect(part1bmap, isGpu);

                for (YoloV5Ncnn.dObj dObj : yoloObj) {
                    Float[] tBoxArr = new Float[4];
                    tBoxArr[0] = bX + dObj.x;
                    tBoxArr[1] = bY + dObj.y;
                    tBoxArr[2] = bX + dObj.x + dObj.w;
                    tBoxArr[3] = bY + dObj.y + dObj.h;
                    boxList.add(tBoxArr);
                    Log.d("testXY",   i+ "|" + j + "|a" + dObj.prob + CONST.yPestArr[dObj.label]);
                    pestIdxList.add(dObj.label);//
                    confidList.add(dObj.prob);
                }
            }
        }
     }

2 nms非极大值抑制

    public static List<Integer> non_max_suppression(Float[][] box2Arr, List<Integer> pestIdxLs, List<Float> conFLs) {//single_class_
        if (box2Arr.length == 0)
            return null;
        List<Integer> confIdxLs = new ArrayList<>();//保存置信度大于CONF_THRESH的元素的下标
        List<Float> nConfLs = new ArrayList<>();//保存置信度大于CONF_THRESH的元素的值
        List<Integer> nPestIdxLs = new ArrayList<>();//pest name
        for (int i = 0; i < box2Arr.length; i++) {//confidences.size()
            float confVal = conFLs.get(i);
            Log.d("box",i +","+confVal);
            if (confVal > Float.parseFloat(CONST.conStr)){
                confIdxLs.add(i);
                nConfLs.add(confVal);
                nPestIdxLs.add(pestIdxLs.get(i));
            }
        }
        if (confIdxLs.isEmpty())
            return null;
        int aliveIdxSize = confIdxLs.size();

        List<Idxs> idxsList = new ArrayList<>();//将置信度与下标对应
        for (int i = 0; i < aliveIdxSize; i++) {
            //Idxs idxs = new Idxs(confIdxLs.get(i), nPestIdxLs.get(i), nConfLs.get(i));
            idxsList.add(new Idxs(confIdxLs.get(i), nPestIdxLs.get(i), nConfLs.get(i)));
        }
        Collections.sort(idxsList);//按score升序排列
        for (int i = 0; i < aliveIdxSize; i++) {
            Log.d("idxNum",i +","+idxsList.get(i).getIndex()+","+ idxsList.get(i).getPestIdx()+","+idxsList.get(i).getConfVal());
        }

        float ovXmin, ovYmin, ovXmax, ovYmax;
        float ovW, ovH, overArea, ovRatio;
        //取出得分最高的bbox,计算剩下的bbox与它的交并比iou,去掉大于iou_thresh的bbox
        List<Integer> pickList = new ArrayList<>();
        while (idxsList.size() > 0) {
            sleep(20);
            int lastN = idxsList.size() - 1;
            if(pickList.size() >= CONST.numDetect)//取置信度最高的NUM_DETECTIONS个结果
                break;
            int lastIdx = idxsList.get(lastN).getIndex();
            Log.d("idx",lastIdx+","+idxsList.get(lastN).getPestIdx()+","+idxsList.get(lastN).getConfVal()+"");
            float last_area = (box2Arr[lastIdx][2] -box2Arr[lastIdx][0]) * (box2Arr[lastIdx][3] -box2Arr[lastIdx][1]);//area=(xmax-xmin)*(ymax-ymin)
            pickList.add(lastIdx);
            List<Idxs> idxs_to_remove = new ArrayList<>();//交并比过大需要移除的bbox
            for (int i = 0; i < lastN; i++) {
                int iIdx = idxsList.get(i).getIndex();
                ovXmin = Math.max(box2Arr[lastIdx][0], box2Arr[iIdx][0]);
                ovYmin = Math.max(box2Arr[lastIdx][1], box2Arr[iIdx][1]);
                ovXmax = Math.min(box2Arr[lastIdx][2], box2Arr[iIdx][2]);
                ovYmax = Math.min(box2Arr[lastIdx][3], box2Arr[iIdx][3]);
                ovW = Math.max(0, ovXmax - ovXmin);
                ovH = Math.max(0, ovYmax - ovYmin);
                overArea = ovW * ovH;
                float i_area = (box2Arr[iIdx][2] -box2Arr[iIdx][0]) * (box2Arr[iIdx][3] -box2Arr[iIdx][1]);
                ovRatio = overArea / ( last_area + i_area - overArea);//IoU

                if (ovRatio > (float)CONST.iouThresh/100)
                    idxs_to_remove.add(idxsList.get(i));
            }
            idxs_to_remove.add(idxsList.get(lastN));
            Log.d("testIdx",idxs_to_remove.size()+"||"+idxsList.size());
            idxsList.removeAll(idxs_to_remove);
        }
        return pickList;
    }

3 检测图

    private static void drawImg(Bitmap mBmap,Float[][] bboxes, List<Integer> pestIdxLs, List<Float> conFLs,List<Integer> pickIdxLs) {
        copyBMap = mBmap.copy(Bitmap.Config.ARGB_8888, true);
        final int[] colors = new int[] {
                Color.rgb( 54,  67, 244),
                Color.rgb( 99,  30, 233),
                Color.rgb(176,  39, 156),
                Color.rgb(183,  58, 103),
                Color.rgb(181,  81,  63),
                Color.rgb(243, 150,  33),
                Color.rgb(244, 169,   3),
                Color.rgb(212, 188,   0),
                Color.rgb(136, 150,   0),
                Color.rgb( 80, 175,  76),
                Color.rgb( 74, 195, 139),
                Color.rgb( 57, 220, 205),
                Color.rgb( 59, 235, 255),
                Color.rgb(  7, 193, 255),
                Color.rgb(  0, 152, 255),
                Color.rgb( 34,  87, 255),
                Color.rgb( 72,  85, 121),
                Color.rgb(158, 158, 158),
                Color.rgb(139, 125,  96)
        };
        Canvas canvas = new Canvas(copyBMap);
        Paint paint = new Paint();
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeWidth(4);
        Paint textbgpaint = new Paint();
        textbgpaint.setColor(Color.WHITE);
        textbgpaint.setStyle(Paint.Style.FILL);
        Paint textpaint = new Paint();
        textpaint.setColor(Color.BLACK);
        textpaint.setTextSize(26);
        textpaint.setTextAlign(Paint.Align.LEFT);

        for (int i = 0; i < pickIdxLs.size(); i++) { //if(yObj[i].prob>= Float.parseFloat(CONST.conStr)) {//高于置信限值 CONST.conStr
                paint.setColor(colors[i % 19]);
                float rectX1 = bboxes[pickIdxLs.get(i)][0];
                float rectY1 = bboxes[pickIdxLs.get(i)][1];
                float rectX2 = bboxes[pickIdxLs.get(i)][2];
                float rectY2 = bboxes[pickIdxLs.get(i)][3];
                canvas.drawRect(rectX1, rectY1, rectX2, rectY2, paint);
                {// draw filled text inside image
                    String text = CONST.yPestArr[pestIdxLs.get(pickIdxLs.get(i))] + " = " + String.format("%.1f", conFLs.get(pickIdxLs.get(i)) * 100) + "%";
                    float text_width = textpaint.measureText(text);
                    float text_height = -textpaint.ascent() + textpaint.descent();
                    float lX1 = bboxes[pickIdxLs.get(i)][0];
                    float lY1 = bboxes[pickIdxLs.get(i)][1] - text_height;
                    if (lY1 < 0)
                        lY1 = 0;
                    if (lX1 + text_width > copyBMap.getWidth())
                        lX1 = copyBMap.getWidth() - text_width;

                    canvas.drawRect(lX1, lY1, lX1 + text_width, lY1 + text_height, textbgpaint);
                    canvas.drawText(text, lX1, lY1 - textpaint.ascent(), textpaint);

                    CONST.rectStr += (int) Math.round(rectX1) + "," + (int) Math.round(rectY1) + "," + (int) Math.round(rectX2) + "," + (int) Math.round(rectY2) + ";";
                    CONST.detectStr += CONST.yPestArr[pestIdxLs.get(pickIdxLs.get(i))] + ","
                            + String.format("%.1f", conFLs.get(pickIdxLs.get(i)) * 100) + ";";
                }   //}
        }
        canvas.save();
        canvas.restore();
    }

基于YOLOv8与Unity3D的工业质检数字孪生系统实践 目标检测技术作为计算机视觉的核心领域,YOLOv8凭借其优异的实时性能在工业质检场景获得广泛应用。数字孪生通过Unity3D等引擎实现物理世界的虚拟映射,为预测性维护提供可视化基础。本方案创新性地将YOLOv8检测算法与Java中间件、Unity3D可视化深度整合,构建了支持实时双向交互的工业质检系统。关键技术亮点包括采用WebSocket+Protobuf实现50ms低延迟通信,基于LSTM+Attention的预测性维护模型,以及针对工业场景优化的YOLOv8轻量化方案。该架构已在实际产线验证,检测准确 阅读详情

相关推荐

YOLOv8进阶实战 | SAHI切片推理赋能小目标检测:精度与实用性的完美平衡(附代码与详细教程)

SAHI(Slice Aware Hyper Inference)是一种推理优化算法,通过将大图切片为小块并分别推理的方式,实现更精细的小目标检测。提升小目标检测精度:切片后的小目标在每个小块中占比更大,模型能够更好地聚焦。兼容性强:可直接集成到现有目标检测框架中(如YOLO系列、Detectron2等)。支持大分辨率图片和视频推理:减少硬件对大图推理的限制。本文详细探讨了如何通过SAHI(切片辅助超推理算法)结合YOLOv8模型,有效提升小目标检测性能,尤其是在高分辨率图片和视频场景中表现优异。

一键难忘的博客 4160

32个小众搜索网站,相信一定有你想要的

首先问你一个问题,你平时都会用什么搜索引擎来进行搜索? 下面我将推荐32个小众搜索网站,相信一定会有你想要的。 1、多吉搜索 首先对因为拒绝商业化黑客攻击、不可抗力而停止服务的多吉搜索表示哀悼,这款由个人开发的小众搜索引擎如今已经停止服务了半年。 2、magi(Magi) 这是一个基于机器学习的搜索引擎,它不仅会为你展示普通的搜索结果,同时还会为你提供由机器学习完成的高聚合的结构化知识结果。比如我搜索哔哩哔哩,他会告诉我这是国内最大的年轻人潮流文化娱乐社区,简称是B站,这一切都是由AI自动学习

破损的天堂鸟博客 3万+

YOLOv8/v9 遥感图像目标检测实战指南:建筑物检测与变化监测

遥感图像在城市规划、灾害评估、农业监管等领域应用广泛,但传统目标检测方法存在效率低、精度不足、难以适配遥感图像大尺寸、多尺度目标等问题。本文以“建筑物检测与变化监测”为核心,基于DOTA、NWPU VHR-10等公开数据集,系统讲解YOLOv8/v9在遥感图像中的实战流程。从数据获取、格式转换、模型训练优化,到大图切片推理、建筑物变化监测,全程提供可复现的代码与参数配置。通过针对性优化(旋转增强、切片推理等),模型在NWPU VHR-10数据集上mAP50达0.85以上,可适配卫星影像、无人机航拍等多场景

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 520

Xlist

/** * @file XFooterView.java * @create Mar 31, 2012 9:33:43 PM * @author Maxwin * @description XListView's footer */ package com.example.day09_2; import android.content.Context; import android.

zh15001187361的博客 3782

工业级落地:Spring Boot + YOLOv11 电力巡检缺陷检测系统全解

绝缘子破损/自爆: 导线断股/散股Bird_Nest: 杆塔鸟巢: 导线悬挂异物(风筝、塑料布)Rust: 金具/杆塔严重锈蚀: 树障(导线附近树木过高): 销钉缺失本系统通过的工程化优势与YOLOv11的算法先进性相结合,成功解决了电力巡检中的实际痛点。价值: 替代人工 80% 的重复劳动,缺陷识别率提升至 95% 以上,响应速度从“天级”缩短至“分钟级”。扩展: 未来可接入更多传感器(红外热成像、局放检测),构建多模态融合的综合诊断平台;

2601_94871597的博客 366

多类别车辆目标检测数据集实战:从解压校验到YOLOv8训练

目标检测是计算机视觉的核心任务之一,其落地效果高度依赖数据质量与模型训练策略。在车辆感知场景中,数据集通常以压缩包形式分发,内部包含多种类别标注,常见格式涵盖VOC、COCO与YOLO txt。理解不同标注格式的坐标体系与归一化原理,是正确训练模型的基础。结合深度学习工具链,合理划分训练集与验证集、分析类别分布和边界框特征,能显著提升模型泛化能力。YOLOv8作为高效的目标检测框架,凭借成熟生态和便捷部署,广泛应用于自动驾驶、智慧交通、车流统计等场景。想要高效利用一份多类别车辆目标检测数据集,从解压校验、格

weixin_34296641的博客 373

学妹跑过来问我为啥Xshell 打不开了,让我帮她处理下【手把手讲解】

问题描述 Xshell关闭后,打不开了。 解决办法 把【flexnet licensing service】服务停止后,启动类型改成禁止就可以解决问题了。 解决效果 按照上面的解决办法处理后就可以正常使用了。 OK,到此完美解决了学妹的问题,如果对你也有帮助那就太好了。 以上就是学妹跑过来问我为啥Xshell 打不开了,让我帮她处理下【手把手讲解】的全部内容。 看完如果对你有帮助,感谢点赞支持! 如果你是电脑端,看到右下角的 “一键三连” 了吗,没错点它[哈哈] 加油! 共同努力! Keafm

『愚』的博客 6983

921张海洋鱼类图像:YOLOv8目标检测数据集解析与实战技巧

目标检测模型的落地效果高度依赖训练数据的真实性与标注质量。在计算机视觉任务中,数据集构建与预处理往往是决定模型性能的基础环节。YOLO系列算法凭借端到端的回归思路,成为工程界应用最广泛的实时检测框架之一,而高质量的真实场景数据则是发挥其能力的核心前提。海洋生态监测、水产养殖及水下视觉分析等场景对鱼类目标检测提出了现实需求,但也面临光照不均、遮挡与形变等挑战。本文围绕一套包含921张真实海洋图像的鱼类检测数据集,详细说明其YOLO标注格式、目录组织、模型选型、训练参数调优及常见坑位规避方法,并延伸介绍ONNX

weixin_31499265的博客 229

Xlistv

package aaaaa.yangxinhong20170911; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.Toast; import com.google.g

qq_40096551的博客 401

GOM Correlate拉伸试验后处理操作

本文描述了使用GOM Software 2022对拉伸试样进行后处理的操作,包括设置检测点、引伸计、输出应变数据到表格、输出报告为视频等

qq_45008924的博客 4665

保姆级教程:在LKD3588开发板上为RK3588添加SC2210摄像头驱动(含完整DTS配置)

本文提供了一份详细的教程,指导如何在LKD3588开发板上为RK3588处理器添加SC2210摄像头驱动,包括完整的DTS配置和内核编译步骤。教程涵盖了环境准备、驱动文件添加、DTS配置详解、内核编译与烧录、驱动测试以及常见问题排查,帮助开发者快速实现SC2210传感器在RK3588平台上的集成与优化。

weixin_42641741的博客 480

xslt入门资源

来自:http://www.kanf.cn/document/2006-01/08.html最权威的网站W3C http://www.w3.org/Style/XSL/有关标准XSLT1.0 http://www.w3.org/TR/xslt.html XSLT1.1 http://www.w3.org/TR/xslt11/XPath1.0 http://www.w3.org/

yethyeth的专栏 2097

AI智能体安全沙箱agentguard:为LLM代码执行筑起防火墙

在AI应用开发领域,大语言模型(LLM)驱动的智能体(Agent)能够自动生成并执行代码,极大地提升了自动化能力。然而,赋予AI直接执行系统命令的权限也带来了显著的安全风险,如恶意代码注入、敏感数据泄露和系统资源滥用。为了解决这一核心矛盾,安全沙箱技术应运而生,它通过在不可信代码与宿主系统之间建立隔离层,实现"默认拒绝、最小权限"的安全原则。agentguard项目正是这一理念的工程实践,它结合白名单机制与容器化隔离,为AI智能体提供了可配置、可审计的安全执行环境。该方案不仅适用于内部自动化工具开发,也为构

weixin_28695537的博客 297

基于SAHI技术的端到端目标检测器

SAHI通过图像切片的方式来检测小目标,然而在使用SAHI时,其缺陷也很明显,图像切片在CPU上运行,而图像推理在GPU上进行,完成一张图像的推理时间由图像切片的数量和检测器的推理时间确定,并且与图像切片的数量和检测器的推理次数成正比例关系。最主要的是,图像切片与图像推理并不是端到端的流程。 为此,本文将SAHI技术集成到目标检测器中,即加入了SAHI的优势,也保留了检测器的端到端推理的特性。对于检测器来说,提高了对于小目标的检测能力,也降低了推理时间。

weixin_54708995的博客 1423

【斯坦福计网CS144项目】环境配置 & Lab0: ByteStream

前言 感觉学了不少 C++ 编程的知识和技术但比较缺少实践,于是打算找一些项目跟着做一做。 首先安利一个自学网站 CS自学指南,北大的同学做的,汇总了很多国内外高校 CS 相关的高质量公开课,其中大部分是有课程项目的。翻了翻感觉 Stanford 的这门 CS144 计网课的 Lab 比较有趣,难度也不错,就是它了! 课程网址:CS 144: Introduction to Computer Networking 我跟的是 2021 Fall 学期的版本。 准备工作 在上面的网站中先把 8 个实验的文档(

アルタイル 8165

WKWebView 白屏问题,WKWebView request body丢失问题

1,WKWebView 白屏问题 WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebView 是一个多进程组件,Network Loading 以及 UI Rendering 在其它进程中执行。初次适配 WKWebView 的时候,我们也惊讶于打开 WKWebView 后,App 进程内存消耗反而大幅下降,但是仔细观察会发现,Other Process 的内存占用会...

weixin_37543822的博客 737

基于YOLO与深度学习的无人机智能识别系统实现

目标检测作为计算机视觉的核心技术,通过深度学习算法实现对图像中特定目标的定位与分类。YOLO系列算法因其出色的实时性能,成为工业界广泛采用的检测框架。结合大型语言模型的语义理解能力,可以构建从感知到认知的完整技术栈。这种技术组合在安防监控、空域管理等场景具有重要应用价值。以无人机识别为例,通过YOLOv8到v12的模型动态切换策略,配合DeepSeek智能分析模块,能够实现96.8%的高精度检测,同时输出自然语言描述。系统采用Spring Boot+Vue.js的前后端分离架构,支持图像、视频和实时流三种检

weixin_30402343的博客 419

Cesium体渲染实战:从医学CT到气象数据的3D可视化全攻略

本文详细介绍了如何利用Cesium体渲染技术实现医学CT和气象数据的3D可视化。从数据预处理到交互式渲染,涵盖了DICOM和NetCDF格式的处理技巧,以及性能优化的实战策略,帮助开发者高效处理复杂的三维数据集。

weixin_28717431的博客 420

无人机目标检测实战:从YOLO训练到机载部署与飞控联动

目标检测作为计算机视觉的核心任务,在无人机自主作业中面临算力受限、视角多变、小目标密集等挑战。YOLO系列模型凭借端到端推理和高效特征提取能力,成为机载视觉处理的主流选择。针对20像素以下的极小目标,可通过增加P2检测头、切片推理及数据增强等手段有效提升召回率;同时结合TensorRT量化与模型剪枝,可在Jetson等边缘设备上实现实时推理。将检测框的像素坐标解算为惯性系中的三维位置,并与PX4飞控及串级PID控制形成闭环,方能完成自主跟踪、电力巡检与安防巡逻等任务。本文从目标检测原理出发,系统梳理数据采集

keke1314520的博客 304

Vue3 - 完美解决高德地图定位失败 Get ipLocation failed.Geolocation permission denied.(获取ipLocation失败。地理定位权限被拒绝。)

Get ipLocation failed.Geolocation permission denied.,vue3引入高德地图当前定位失败 ,vue3中使用高德地图定位报错,高德地图API用户定位失败,高德地图H5 定位失败报错排查和解决方案,微信公众号H5网页高德地图定位报错,谷歌浏览器-高德地图定位失败geolocation,getCurrentPosition 返回的 message报错,如何解决此问题,uniapp h5高德地图,微信、QQ等内置浏览器定位失败,高德地图实现实时用户位置定位,引入高德

🏆 前端领域优质创作者 4172

ADAS工作原理解析:如何通过智能技术提升驾驶安全

ADAS通过集成传感器、摄像头、雷达、SoC计算单元以及高效的数据融合技术,提供了一系列主动和被动安全功能,如自动刹车、车道保持、自适应巡航控制等。这些功能共同作用,不仅减少了交通事故的发生,还大幅提升了驾驶员的驾驶体验和安全性。随着技术的进步,ADAS的功能将越来越智能,最终迈向全自动驾驶的未来🚗💨。

weixin_43199439的博客 1149

YOLO11n目标检测实战:从结构原理到训练部署全流程笔记

目标检测是计算机视觉领域的核心任务之一,其目标是在图像中定位并分类多个对象。随着深度学习的发展,以YOLO系列为代表的单阶段检测器凭借速度与精度的良好平衡,成为工业应用的主流选择。YOLO11n作为Ultralytics推出的轻量级模型,在继承Anchor-Free、多尺度预测等经典设计的同时,引入了C3k2模块与C2PSA注意力机制,进一步提升了特征提取效率。理解其从Backbone到Head的完整数据流,有助于开发者掌握目标检测的通用原理。在实际工程中,数据质量决定了模型上限,而合理的训练策略、超参数调

weixin_34267123的博客 247

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

基于YOLO的森林防火视觉检测系统:多版本对比与工程实践

目标检测是计算机视觉领域的核心技术,通过深度神经网络实现对图像中物体的定位与分类,在安全生产、智慧安防等场景中广泛应用。在森林防火领域,早期烟火识别依赖人工盯屏,存在漏检率高、响应滞后等痛点。随着YOLO系列算法迭代,带来了实时性与精度的平衡提升。本文基于实际项目,对比YOLOv8/v10/v11/v12/v26五个版本的检测性能,并设计了一套包含Flask推理服务、Spring Boot业务后端和Vue可视化前端的完整系统,同时接入大模型辅助研判。该系统在真实场景中实现了小目标烟火的高效识别,为同类视觉检

weixin_34079177的博客 321

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

目标检测实战指南:从YOLOv8到小目标检测与部署

目标检测是计算机视觉中最贴近人类视觉感知的核心任务,在图像分类基础上,不仅要识别“是什么”,还要定位“在哪里”。从早期基于候选区域的两阶段方法,到以YOLO为代表的单阶段实时检测器,再到Transformer端到端方案,检测算法经历了从繁琐到优雅的演进。YOLO系列凭借速度与工程生态的平衡,成为工业落地的首选;而小目标检测、三维目标检测等进阶需求,则推动着算法与部署技术的持续优化。对于刚踏入目标检测的开发者,从YOLOv8实战入手是一条高效路径:掌握数据准备、模型训练、评估调参和轻量化部署的完整链路,就能快

weixin_33857679的博客 374

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

汽车部件识别数据集与计算机视觉应用实战

计算机视觉中的目标检测与语义分割技术是智能汽车应用的核心基础。通过深度学习模型对图像中的物体进行定位和分类,可以实现精确的部件识别。在汽车行业,这项技术能显著提升维修辅助系统、自动驾驶环境感知和生产质量检测的效率。针对金属反光、部件遮挡等实际挑战,采用Labelme格式标注的数据集配合CLAHE增强等预处理方法能有效提升模型鲁棒性。典型应用显示,经过优化的DeepLabV3+模型在边缘设备部署时可达到82.3%的mIoU,为汽车钣喷检测等场景提供可靠支持。

weixin_30325487的博客 315

森林火灾火焰烟雾检测系统实战:YOLO系列模型选型与Spring Boot/Flask架构解析

目标检测技术正加速落地于森林防火场景,但火焰形态多变、烟雾半透明且易与自然光影混淆,传统算法难以兼顾实时性与准确率。YOLO系列模型凭借出色的速度-精度平衡,成为视频监控火情识别的首选方案。从YOLOv8到最新YOLO26,每一代在特征融合、注意力机制和推理效率上均有迭代,适配不同算力与精度需求。同时,一个可用的检测系统不止于模型本身,还需工程化架构支撑——Spring Boot负责业务闭环与告警管理,Flask独立承担AI推理服务,Vue实现可视化监控,再接入DeepSeek、千问等大模型完成自然语言火情

weixin_29055137的博客 255
上一篇: mysql表GEOMETRY记录的读取与增加
下一篇: 51单片机开关电路+限位+舵机
model2005
博客等级 码龄18年 97粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值