news 2026/8/26 11:46:11

课堂行为识别评价系统全链路解析:从模型选型到部署避坑

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
课堂行为识别评价系统全链路解析:从模型选型到部署避坑

简介:在智慧校园与课堂数字化场景中,如何将多路视频流转化为可量化的教学评价结果,是教育AI落地的重要挑战。深度学习技术为这一需求提供了核心支撑,其中目标检测、行为分类与时序建模是三大关键环节。通过YOLO系列模型完成学生定位,结合轻量CNN或LSTM实现行为状态识别,再基于统计窗口计算课堂参与度、专注指数等评价指标,即可构建一套从视频到报告的完整链路。然而,实际工程中数据不均衡、类别定义模糊、部署并发瓶颈等问题往往决定项目成败。本文以学生课堂行为识别评价系统为例,系统讲解数据标注策略、模型选型经验、损失函数调优以及ONNX Runtime部署方案,帮助开发者在真实教室场景中构建稳定可用的智能评价工具,实现从算法Demo到教育产品的关键跨越。 教室里装了摄像头之后,很多学校其实一直缺一个东西:能把几十路视频流自动变成可量化评价结果的系统。我拿到的这个项目标题是“基于深度学习的学生课堂行为识别评价综合系统”,一听就知道是个打包好的完整工程——检测学生行为、识别课堂状态、输出评价报告,一条龙。市面上能搜到的单点教程不少,但真正能端到端跑通、把识别结果落到“评价”这两个字上的项目其实不多。这篇文章我就把这个系统从模型选型、数据处理到训练部署的完整链路拆开讲一遍,重点说清楚哪些地方容易翻车,以及我实际调通这套流程时积累下来的经验。

不少朋友拿到类似的毕设或实训项目压缩包,第一反应是打开README、装依赖、跑demo。但这类“综合系统”真正的难点不在模型本身,而在数据准备、标签设计、前后端串接和部署环境这几块。如果你手上正好有一个这样的工程,或者打算从零复现一个学生课堂行为识别评价系统,这篇文章可以帮你少走非常多弯路。下面我按实际开发的顺序,把系统拆开聊。

1. 课堂行为识别到底在识别什么:先定义任务边界

1.1 三类核心识别目标:状态检测、动作识别、注意力估计

先别急着选模型。做课堂行为识别,第一步是把“识别什么”这件事定义清楚。我见过很多项目把检测、识别、评价混在一起,结果训练数据乱七八糟,模型输出也不知道该怎么用。

拆开看,这个系统其实包含三个不同层次的任务。

第一层是学生目标检测。摄像头画面里每个学生坐在哪里、每个座位框是什么位置,这是最基础的目标检测任务。YOLO系列、RT-DETR、SSD这些检测模型都能胜任。这一层解决的问题是“谁在哪儿”。

第二层是行为状态分类。检测到每个学生之后,需要判断他当前的行为状态。常见的类别有这么几种:认真听讲、低头写字、举手发言、趴桌休息、玩手机、交头接耳。这一层其实是“单目标行为分类”,也就是对每个检测框裁剪出图像块,再送进分类网络。

第三层是注意力估计与评价。基于连续视频帧的行为状态序列,判断学生在一节课内的专注度走势、参与活跃度、异常行为频率等。这一层已经超出了单纯的视觉识别范畴,涉及到时间序列分析和统计建模。

任务边界定义清楚了,后面每一步才有据可依。很多项目失败,就是因为在第二层和第三层之间来回横跳,既没把静态分类做好,又急着做时序分析。

1.2 “识别”和“评价”之间的映射关系

这个系统叫“识别评价综合系统”,识别是手段,评价才是目的。从识别结果到评价结论,中间需要设计一套映射规则。

举个例子。帧级别的行为分类结果是“举手”,但一节课举手一次和举手八次,评价结论完全不同。所以系统里通常设置一个行为统计窗口,比如按分钟聚合,统计每个学生在每个时间窗口内的各类行为占比。然后基于统计结果计算几个核心指标:

  • 课堂参与度:举手、回答问题、主动发言等积极参与行为的时间占比。
  • 专注指数:认真听讲、低头写字等正向行为的持续时间占比。
  • 异常行为频率:趴桌、玩手机、交头接耳等行为的出现次数和单次持续时间。

这些指标的计算公式并不复杂,比如专注指数可以定义为正向行为帧数除以总帧数。但要注意,不同学校、不同年级对“正向行为”的定义可能有差异,所以评价体系必须做成可配置的,不能写死。我会在后面的章节详细展开。

2. 模型选型与网络结构设计:不是越新的模型越好用

2.1 目标检测模型:YOLOv8还是RT-DETR

课堂场景下的目标检测有一个特点:教室环境相对固定,摄像头视角固定,学生数量有限,密集遮挡情况比自动驾驶场景轻得多。所以检测模型的选择其实有比较大的自由度。

我实际测试下来,YOLOv8n或者YOLOv8s在这个场景下性价比最高。n版本参数量只有3.2M左右,在GPU上推理一张1080P图片能做到几十毫秒,精度对于课堂座位这种大目标完全够用。如果教室比较大、学生人数多、座位密集,可以换YOLOv8m,精度能再上一个台阶,代价是推理时间翻倍。

RT-DETR是百度提出的实时检测Transformer,精度确实比YOLOv8高一些,尤其是在小目标上表现更好。但它的部署依赖相对重,转ONNX之后推理性能不如YOLO系列那么稳定。我建议是:如果对精度要求极高、教室有后排远距离小目标,优先考虑RT-DETR;如果要做实时视频流处理,YOLOv8更省心。

2.2 行为分类模型:轻量CNN加时序建模

行为分类这层,有两种做法。

第一种是单帧图像分类。把检测框裁剪出来,缩放到固定尺寸,送进一个分类网络。ResNet18、MobileNetV3、EfficientNet这些小网络就够用。优点是简单直接,容易训练收敛。缺点是没有时序信息——蹲下捡笔和趴桌睡觉从单帧上看可能很像。

第二种是时序行为识别。用TSM(Temporal Shift Module)或者3D CNN处理连续视频片段,捕捉动作的动态信息。这种方案的优点是能区分“坐姿端正但发呆”和“低头认真做题”这类需要上下文的行为。缺点是训练数据需求量大,视频片段标注成本极高,而且对帧率、剪辑时长都很敏感。

我在实际项目中用的是一个折中方案:检测框序列加LSTM。具体做法是:

  1. 用检测模型得到每个学生的轨迹框。
  2. 每帧对轨迹框做RoIAlign提取特征。
  3. 把连续N帧的特征拼接成序列,送入一个两层LSTM。
  4. LSTM输出每个学生的行为状态时间线。

这个方案的好处是,检测和分类可以分开训练、分开调优,LSTM部分的数据需求比端到端3D CNN小得多。课程设计或者毕业设计级别的项目,用这个方案最容易出成果。

2.3 辅助分支:人脸朝向与姿态估计

想要把“评价”做得更有说服力,只靠行为分类还不够。比如一个学生坐姿很端正,但眼睛一直看窗外,从行为分类来看可能还是“认真听讲”。要处理这种场景,需要加上人脸朝向估计或者头部姿态估计作为辅助信息。

轻量级的方案是直接用MediaPipe的FaceMesh,它可以输出头部姿态的欧拉角,准确率在教室这种光照条件下基本够用。也可以用RTMPose做全身关键点检测,通过肩膀和头部的相对位置推断朝向。

不过我要提醒一句:辅助分支一定要控制复杂度。我见过一个项目,光姿态估计就接了三套模型,结果整个系统推理延迟飙升到每秒一帧,课堂实时性完全没了。辅助分支的价值在于补充关键信息,不是喧宾夺主。如果算力有限,优先保证检测和分类主链路,辅助分支可以做成离线分析模块,不上实时链路。

3. 数据处理与标注:整个系统最容易翻车的一环

3.1 自建课堂数据集的采集与标注策略

课堂行为识别没有特别成熟的公开数据集,自己做标注几乎是必经之路。但采集数据要注意几个硬性问题——隐私合规、多视角覆盖和时间采样策略。

隐私方面,采集前必须有明确的授权流程,教室属于特定场所,采集视频需要遵守相关要求。技术层面,我建议在拍摄后第一时间做人脸脱敏处理,只保留检测和分类所需的信息。项目开发调试阶段,用脱敏数据足够。

视角覆盖上,教室摄像头通常是教室前方或后方高位安装。建议至少采集两个视角的数据——正面视角用于人脸和表情,侧后方视角用于姿态和动作。这样模型能学到不同视角下的行为特征,不会出现过拟合单一机位的问题。

采样策略也很关键。不要只截取“标准行为”片段,要把正常课堂中的过渡状态也采集进来。比如学生从趴桌到坐直的过程、从低头到抬头的过程,这些中间态如果缺失,模型在推理时就容易在状态切换的瞬间产生误判。

标注工具我用过labelImg和X-AnyLabeling。分类任务的标注格式建议直接输出为txt或json,每行是图片路径、目标框坐标和类别ID。标注类别不要超过8个,类别越多,标注成本越高,模型越容易混淆。

3.2 类别不均衡问题:玩手机样本太少怎么办

课堂行为数据有一个天然的不均衡问题:认真听讲、写字这类行为的帧数占比极高,而玩手机、举手这类行为可能只占不到5%。如果不做处理,模型会严重偏向多数类,玩手机这类关键异常行为反而识别不准。

我常用的处理手段有三个:

第一个是过采样和欠采样结合。对少数类样本做随机裁剪、翻转、颜色抖动等增强,对多数类样本做时空降采样。这个手段简单直接,但过采样做得太过容易过拟合。

第二个是损失函数加权。在分类损失中给少数类更高的权重,比如用Focal Loss替换普通的CrossEntropy Loss。Focal Loss通过调节gamma参数,让模型更关注难分类的少数类样本,在课堂行为场景下效果非常明显。

第三个是阈值调整。训练完成后,在验证集上绘制PR曲线,根据业务需求调整分类阈值。比如“玩手机”这个类别,宁可误报也不能漏报,就把阈值调低;而“交头接耳”这类干扰性强的类别,就把阈值调高,减少误报带来的评价失真。

我在实际项目中是三个手段叠加使用的:Focal Loss加gamma=1.5,少数类过采样到多数类样本量的40%,然后对玩手机类别在验证集上单独调阈值。最终玩手机类别的F1从0.61提升到0.83,效果非常明显。

3.3 数据增强在教室场景中的特殊注意事项

通用数据增强手段——随机裁剪、水平翻转、颜色抖动——在课堂场景下基本可用,但有几个细节要注意。

颜色抖动不能太强。教室里的光照环境相对统一,如果颜色增强过度,模型会学到错误的颜色不变性,导致在真实课堂的复杂光照下误判。我建议色相偏移控制在±5度以内,亮度偏移控制在±10%以内。

水平翻转要谨慎。如果摄像头固定安装在教室左侧,画面里的学生大多是左侧面朝向,水平翻转后会出现大量右侧面朝向的样本。这个增强本身没问题,但要注意翻转后的样本和真实场景的分布差异。我的做法是:在训练阶段做水平翻转增强,但在验证和推理阶段不做翻转,这样模型能适应不同朝向,又不会影响实际推理的准确率。

另外,课堂场景有一个非常容易被忽略的增强手段——模拟遮挡。学生之间互相遮挡、被书本遮挡、被摄像头支架遮挡是常态。用RandomErasing模拟遮挡,可以显著提升模型在拥挤教室场景下的鲁棒性。

4. 训练与调参实战:损失函数、超参数和评估指标

4.1 多任务损失函数的权重配比

在这个系统里,如果是联合训练检测和行为分类,就会涉及到多任务损失的权重配比问题。如果检测和分类分开训练,那这一步可以跳过。但如果你打算端到端训练,这里有几个经验值可以分享。

常见的组合是:

L = λ1 * L_det + λ2 * L_cls + λ3 * L_lstm

L_det是检测损失(包含框回归损失和置信度损失),L_cls是单帧行为分类损失,L_lstm是时序行为分类损失。λ的取值直接影响训练收敛速度和最终效果。我的经验是λ1=1.0,λ2=0.5,λ3=0.5起步,然后根据验证集上的表现动态调整。

如果发现L_det下降正常但L_cls迟迟不收敛,可能是λ2偏大,检测分支的梯度淹没了分类分支的梯度。这时候要把λ2降到0.1~0.3。反过来,如果检测框数量够但分类准确率低,可以适当增大λ2。

还需要注意一个细节:不同任务的收敛速度不同。检测任务通常比行为分类任务收敛快,如果你用固定权重从头训练到尾,后期分类任务可能会被检测任务压制。解决方法是在训练曲线变平后,手动调整权重,把λ2和λ3调大,让分类分支在后期有更大的优化空间。

4.2 训练超参数:从经验值到自适应调整

训练超参数这块,有几个关键的经验值,我直接列出来供参考。

批量大小(batch size)建议16到32之间。课堂场景的检测框数量多,显存占用比一般目标检测任务高,8的batch在12G显存下可能都不太够用。如果显存不够,优先减小输入图片分辨率,而不是强行降batch——分辨率太低小目标会直接消失。

初始学习率从1e-4起步,用CosineAnnealingWarmRestarts或者CosineAnnealingLR做调度。Warmup是必须的,前3~5个epoch用线性warmup从1e-6升到1e-4,可以避免训练初期损失爆炸。

优化器选AdamW,weight_decay设为5e-4。很多人纠结要不要用SGD,我实测下来AdamW在这个任务上收敛更快,最终精度也更高,可能是课堂数据量本身不大的原因。

训练轮数方面,检测模型一般60~100轮收敛,行为分类模型30~50轮就够。不要盲目训200轮,反而容易过拟合。判断收敛的方法很简单——验证集loss连续10个epoch不再下降,就停掉。

4.3 评估指标怎么选:mAP、F1、还是业务指标

很多课程设计项目评估模型只看mAP,但课堂行为识别系统里,mAP只是最底层的基础指标。真正要关注的是几个业务层面的指标。

行为分类层面,建议看各类别的Precision和Recall,以及综合F1。因为类别不均衡,整体准确率没有意义——模型全预测“认真听讲”都能有90%的准确率,但这种模型完全不可用。

系统评价层面,要看专注指数的误差。取一个班级的实际视频,人工标注出每位学生的专注度时间线,再和系统输出的专注指数对比,计算均方根误差(RMSE)。这个误差越小,说明系统输出的评价报告越接近真实情况。

如果做的是实时系统,还要关注端到端延迟——画面中出现一个行为到系统完成识别并更新评价数据的时间间隔。这个延迟通常要求低于2秒,否则课堂老师看实时反馈时会有明显的滞后感。

我调试下来的经验是:优先保证玩手机、趴桌这类异常行为的Recall达到80%以上,再去优化整体mAP。系统的价值更多体现在异常行为的及时发现,而不是把每个学生的“认真程度”排得精确到小数点后两位。

5. 从识别结果到评价体系:一套可落地的报告生成链路

5.1 行为统计与评价指标的计算逻辑

模型输出的是帧级别的行为序列,但老师和管理者需要的是课程级别的评价结论。从帧序列到评价结论,中间需要经过一个统计聚合层。

我在系统里是这样设计的:把一节课按时间轴切分成多个统计窗口,每个窗口默认1分钟。对每个窗口内每个学生的行为类别进行统计,计算各类别出现的帧数占比。

然后基于窗口统计结果,计算三个维度的评价指标:

维度一:课堂参与度参与行为包括举手、朗读、主动发言等。计算公式是参与行为帧数除以有效检测帧数。

维度二:专注指数正向行为包括听讲、看书、写字等。这一项是最能反映整体课堂状态的指标,做实时监控时主要看它。

维度三:异常行为分布玩手机、趴桌、交头接耳等行为按次数和持续时间统计。这里有一个细节:一次持续3秒的玩手机和一次持续30秒的玩手机,评价结论完全不同。所以统计时要记录连续异常行为的起止时间,而不是只记录总帧数。

这些统计逻辑用一段简单的Python代码就能实现。核心就是遍历行为序列,做状态切分和聚合统计。我建议把统计逻辑单独封装成模块,而不是写在推理脚本里,方便后续调整评价标准。

5.2 可视化与报告:班级热力图、个人时间线、周报输出

评价数据生成之后,还需要通过可视化呈现给不同用户。

对授课老师,最有价值的是一张课堂行为分布图——横轴是时间,纵轴是行为类别,每个学生的数据用不同颜色呈现。老师可以快速看到哪段时间学生注意力下降,哪个区域的学生频繁出现异常行为。

对教务管理者,更需要的是班级层面的对比报告,比如各班专注指数曲线对比、异常行为频率排行榜。这些数据可以直接用matplotlib生成静态图片,也可以用Grafana做实时看板。我建议课程设计阶段先用matplotlib生成报告,减少部署复杂度。

对单个学生家长,需要的是个性化行为时间线,展示该学生在课堂上的行为变化,配合老师的评价意见。注意这里有个分寸问题,报告只呈现客观行为记录,不当“结论性评价”使用,避免引发争议。

5.3 评价体系的可配置设计:不同班级类型不同标准

课堂评价标准不是一成不变的。小学课堂和大学课堂的“认真听讲”定义不同,实验课和理论课的评价维度也完全不同。所以评价体系必须做可配置化,把所有阈值和权重抽出来放到配置文件里。

我用的配置格式是yaml,核心配置项包括:

behavior_weights: listen: 1.0 write: 0.8 raise_hand: 1.2 look_away: -0.3 sleep: -1.5 phone: -2.0 attention_threshold: high: 0.8 medium: 0.6 low: 0.4 windows: stat_window_sec: 60 report_window_min: 15

behavior_weights定义各行为类别的权重,attention_threshold定义专注度等级阈值,windows定义统计窗口。这样一套默认配置可以适配大部分课堂场景,具体学校使用时只需要修改配置文件,不需要改代码。这套设计的核心是让“评价标准”成为业务参数,而不是写死在代码逻辑里。

6. 部署与并发处理:从单机Demo到可用系统的关键跨越

6.1 推理框架选择:TensorRT、ONNX Runtime还是纯PyTorch

训练阶段用PyTorch没问题,但部署阶段如果还直接用PyTorch推理,性能和稳定性都很难让人满意。我测试过三种部署方案,各有优劣。

纯PyTorch:部署最简单,改造成本最低,但显存占用高、推理速度慢,而且在很多生产环境上PyTorch版本冲突严重。只适合做demo演示。

ONNX Runtime:导出torch.onnx,用onnxruntime推理。推理速度比PyTorch快20%~40%,部署依赖也轻很多,不需要安装完整的PyTorch环境。这是课程设计阶段最推荐的方案,兼容性好,遇到问题也好排查。

TensorRT:推理速度比ONNX Runtime再快30%~50%,但TensorRT只支持NVIDIA显卡,导出过程对模型算子有严格限制,稍有兼容问题就要反复调试。适合对实时性要求极高的场景,否则不建议一上来就碰。

我实际部署时选择的是ONNX Runtime加CUDA执行器,在1080Ti上跑YOLOv8s加分类模型,单路视频流能做到25FPS以上,完全满足课堂实时监测需求。

6.2 多路视频流的处理架构

一个教室可能有多路摄像头,一个学校可能有几十间教室同时需要监测。这种场景下,单线程逐帧推理会直接把CPU/GPU打满。

我的处理方案是生产者-消费者模式加进程池。采集线程负责从摄像头拉流,把帧放入带缓冲的队列;推理进程从队列中取帧,批量做预处理和推理;结果再交给统计模块做聚合。

具体来说,Python的multiprocessing可以配合共享内存做小块数据传输,但更省事的方案是用Redis做任务队列——采集端推送帧数据,推理端消费者订阅处理。Redis的队列缓冲能有效平抑摄像头拉流帧率的波动,防止推理进程被突发流量打满。

如果是在单机上跑多路视频流,还有一个重要的优化:把多路视频的帧拼接成一个大batch,一次推理处理多路。比如四路视频各取一帧,拼接成4路batch,推理时间只比单帧多20%~30%,但吞吐量提升了4倍。这是性价比最高的并发优化手段。

6.3 部署踩坑记录:显存泄漏、视频流卡死、模型偶发崩溃

部署阶段最容易碰到三个问题,我逐一说明排查思路。

显存泄漏。如果系统连续运行几个小时,显存占用逐渐上涨,甚至OOM,大概率是某个环节有显存引用没有释放。最常见的原因是OpenCV的VideoCapture在读取帧时返回的numpy数组没有正确释放,或者PyTorch的tensor在循环外被持有引用。排查方法是每隔100帧打印一次显存使用情况,定位泄漏点。

视频流卡死。摄像头或RTSP流偶尔会断流或者卡住,导致解码线程阻塞,整个系统看起来像“死机”了。解决方法是设置超时检测线程,连续5秒没有新帧到来,就主动重建视频解码器。不要试图在一个进程内无限重试,重启解码器进程往往更有效。

模型偶发崩溃。ONNX Runtime推理偶尔会报错,比如输入尺寸不一致或缺少CUDA内存。这个问题多半是预处理时没有严格保证输入尺寸和格式的一致性。我的做法是写一个统一的预处理函数,内部强制resize到固定尺寸、转换通道顺序、归一化,任何模块调用推理前都必须经过这个函数,不允许在调用处临时改数据格式。

这三个坑我都在真实项目中踩过,前两个排查起来折磨人,但定位到根因之后都是小问题。部署阶段的经验就一个核心逻辑:所有不稳定因素都要在代码层面加保护,不能依赖外部环境的稳定


最后再分享一点我个人的体会。这类课堂行为识别评价系统,技术在往前迭代,但真正能落地、能被学校长期使用的,往往是那些把评价标准设计得足够清晰、把系统稳定性做得足够好的项目。模型精度从88%提升到92%可能只花几天,但让系统在没有运维人员的情况下连续运行一个月不崩,才更难。做系统的过程中,我越来越觉得算法只是其中的一环,工程能力反而决定了这个项目能不能真正走出实验室。如果你在复现这个项目,建议在保证主链路跑通的基础上,多花点精力在统计模块和部署稳定性上,这些才是让系统从“能跑”到“能用”的关键。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 11:46:03

基于瑞萨RA MCU与Qt的无线遥控小车开发实战

1. 项目缘起:当瑞萨RA MCU遇上Qt遥控最近在捣鼓一个挺有意思的玩意儿:用瑞萨的RA系列MCU做核心控制器,再通过Qt写个上位机软件,实现一个无线遥控小车。这个项目听起来像是把嵌入式底层和PC端应用开发给串起来了,确实能…

作者头像 李华
网站建设 2026/8/26 11:45:38

人形机器人跑出百米9.39秒关键技术拆解:电机、算法与芯片

最近圈子里热度最高的消息,就是北京人形机器人跑出百米 9.39 秒这件事。如果按公开报道中的说法,这个成绩比博尔特的世界纪录还快,而且是在人形双足构型下跑出来的。先不争论这个成绩是否满足传统田径规则,单看它能稳定跑完百米、…

作者头像 李华
网站建设 2026/8/26 11:42:59

Copula变分贝叶斯:建模双变量依赖关系的工程实践

1. 这不是又一个“高斯混合模型”教程:Copula VB(CVB)到底在解决什么真问题? 你有没有遇到过这样的场景:手头有一组二维数据,比如某地区居民的年收入和教育年限,或者某批传感器记录的温度与湿度…

作者头像 李华
网站建设 2026/8/26 11:41:45

甲骨文智能识别:从图像预处理到小样本分类的完整技术实践

1. 项目概述:当古老甲骨文遇见现代AI 最近在整理一些跨学科的研究资料,恰好又看到了MathorCup这类数学建模竞赛的题目,今年的B题“甲骨文智能识别中原始拓片单字自动分割与识别研究”让我眼前一亮。这不仅仅是一道竞赛题,更是一个…

作者头像 李华
网站建设 2026/8/26 11:39:46

CTF杂项实战:ZIP伪加密与Base64隐写原理与破解

1. 项目概述:从“杂项”到“实战”的思维跃迁 在CTF(Capture The Flag)竞赛中,“杂项”(Miscellaneous)这个分类常常让新手感到既兴奋又头疼。兴奋在于,它不像Web渗透或逆向工程那样有明确的攻击…

作者头像 李华
网站建设 2026/8/26 11:35:54

烟叶病害检测数据集详解:612张VOC+YOLO双格式的YOLOv8训练实践

简介:目标检测是计算机视觉领域的基础技术,其核心在于通过标注数据训练模型,实现对图像中特定目标的定位与分类。在农业场景中,烟叶病害检测便是典型应用,通过无人机或手机采集田间图像,利用检测模型快速识…

作者头像 李华