ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

基于YOLOv11的玉米幼苗期杂草检测系统实战解析

基于YOLOv11的玉米幼苗期杂草检测系统实战解析 1. 为什么幼苗期杂草检测是一个真问题而不是为了跑模型才编出来的需求做农业视觉项目最怕的一件事就是拿着一个通用目标检测模型套上农田两个字然后宣称自己做了个落地系统。实际上地里的情况远比公开数据集复杂得多。尤其玉米幼苗期也就是出苗后两到六叶这个阶段视觉算法要面对的根本不是检测一个东西这么简单。玉米幼苗期的杂草危害很大杂草会和幼苗抢水分、抢光照、抢养分而且这个阶段刚好是除草剂施用的关键窗口期。施早了药效没出来施晚了杂草大了抗性上来除草剂用量翻倍还可能影响苗的正常生长。所以什么时候除草、除哪些草这种决策非常依赖对田间杂草分布的准确感知。过去靠农户自己蹲在地头看一片地几百亩看不过来雇人查成本高且主观性强。基于深度学习的检测系统解决的就是这个问题把摄像头采集的图像实时识别出玉米苗和各类杂草输出位置和数量辅助精准喷药或者除草决策。我见过不少人一开始把这个问题想得太简单——不就是检测两类目标吗。实际碰过苗期图像的人会明白问题难在几个非常具体的地方。第一幼苗期的玉米和很多禾本科杂草长得极其相似都是细长叶片、绿色、形态接近尤其出土后十几天内人和模型都容易混淆。第二农田图像的光照变化极大早晨逆光、中午强光、喷灌后叶片带水珠、土壤湿度不一样颜色分布完全不同。第三目标尺寸普遍偏小一株刚出土的幼苗在1080p图像里可能只有二三十个像素高小目标检测本身就是目标检测领域的顽疾。所以这个项目的完整价值不在于跑通一个YOLOv11训练流程而在于搭建了一套能应对上述实际困难的系统YOLOv11负责检测核心自建田间数据集提供训练支撑登录注册和UI界面让非算法人员也能用起来。整套东西更适合三种人参考——正在做智慧农业相关课题的学生、想快速搭建视觉检测演示系统的开发者、以及需要给农业信息化项目做技术验证的产品人员。本文我会把从数据准备、模型训练到系统集成的完整链路拆开讲包括那些训练曲线和接口文档里不会写的坑。2. 从玉米苗到检测框YOLOv11凭什么能处理这类小目标场景2.1 YOLO系列演进到v11真正受益的是部署端YOLOv11作为YOLO系列的新版本核心结构走的还是backbone neck head这条路线但它在几个关键位置上做了调整。相比早几代的YOLOv5v11在骨干网络里引入了更高效的卷积堆叠模块比如C3k2这种跨阶段部分连接结构的改进版能够让信息在层与层之间流动得更充分同时计算成本没有明显增加。SPPF结构继续负责多尺度特征融合而检测头部分沿用了anchor-free的解耦头设计也就是不再依赖预设的锚框尺寸来匹配目标而是直接回归目标中心和边界。这一点对幼苗检测来说很实用因为苗和杂草的尺寸变化范围很大固定锚框往往顾此失彼anchor-free让模型在训练阶段更容易适配不同尺度的目标。还有一个容易被忽视的点是YOLOv11在训练阶段的mosaic增强、自动学习超参这些机制上做得比较成熟也就是说哪怕你不太会手动调参默认配置也能训练出一个可用的模型。这个特性对于落地项目非常重要因为实际项目里时间往往花在数据上而不是网络结构研究上。我自己在测试集上的体验是同样的数据量v11比v5的mAP能高出三到五个百分点尤其在小目标类别上漏检率改善比较明显。2.2 一半看模型一半看输入预处理环节决定了模型上限很多人在跑检测项目时会忽略预处理的重要性。YOLOv11本身有自适应图片缩放但它在推理时默认会做letterbox操作也就是把输入图像等比缩放到模型输入尺寸比如640x640空白部分用灰色填充。这个操作本身没问题但在玉米幼苗检测场景里有个很实际的细节幼苗目标太小直接把整张图缩到640x640相当于把原本可能在1080p图像里占几十像素的小目标进一步压缩成十几个像素甚至几个像素检测头几乎不可能在这种尺寸下输出稳定结果。所以这个项目的推理管线里我在图像输入模型前增加了两个可配置的选项一个是切片推理把大图切成若干有重叠的块每块放大后再进模型另一个是整体缩放加多尺度预测。前者适合地头拍的完整田块图像后者适合单株或者几株苗的特写。这个设计思想其实和遥感图像目标检测里的tiling策略一脉相承——不是模型不够强而是输入方式没有匹配目标的实际尺度。预处理还包括归一化方式。YOLOv11内部会把像素值除以255这个不用自己重复做但要注意图像通道顺序。OpenCV读出来是BGR模型训练时用的是RGB推理接口里如果忘了转换可能出现训练指标很好、实际检测一团糟的诡异情况。这类问题几乎每个做过推理部署的人都遇到过排查起来非常隐蔽。2.3 一次推理接口设计加载一次模型别每次请求都重新初始化系统落地时有个性能问题值得单独说模型加载非常耗时一张训练好的YOLOv11权重文件根据backbone规模不同加载时间可能从几百毫秒到两三秒不等。如果UI界面里每次点一次检测按钮就去重新加载模型那系统基本没法用用户体验就是卡顿、转圈、再卡顿。标准的做法是在程序启动时把模型加载到内存里初始化成一个全局的推理对象后续所有检测请求直接调用这个对象的predict方法。我见过一些项目在Flask或者PyQt的槽函数里反复重载模型结果就是模型推理只要几十毫秒加载反而占了每次操作的大部分时间。这个项目里我把模型加载放到了登录成功后的主界面初始化阶段配合一个进度提示用户登录后能看到模型加载中的过渡状态加载完成后所有检测操作走内存推理单张图耗时基本控制在几十到一百多毫秒的量级取决于是否启用切片和多尺度。提示如果后续要部署成Web服务建议把推理封装成独立进程或者使用常驻服务避免GUI线程阻塞。Python的GIL对推理影响不大因为YOLO推理主要走底层CUDA计算但图像预处理和结果后处理仍然会占用CPU时间放主线程会导致界面掉帧。3. 数据集决定项目的天花板田间图像采集与标注的那些讲究3.1 采集场景覆盖光照、湿度、生育期一个都不能少这个项目的训练数据以自建田间数据集为主采集阶段大概是整个项目里最累但最值得的一段。首先是时间分布玉米从出苗到六叶期几乎每天形态都在变。我只挑了三天采一次后面发现模型对没见过的生育期阶段误检明显增多才改成覆盖多个采集批次。其次是一天内的光照变化清晨和傍晚的侧光会让叶片产生长阴影叶片颜色偏黄绿色正午顶光下颜色偏深绿土壤反光强阴天反而是最均匀的光照。我的建议是建模时要把光照条件当成分层变量来采集而不是随机拍。水肥条件和土壤背景也要纳入考虑。覆膜地和露地田的土壤颜色完全不同前者是白色或透明膜反光后者是黄壤或黑壤。喷灌后的叶片带水珠、滴灌条件下地表湿润颜色偏深这些都会直接影响模型对绿色的感知。有一版模型在露地测试效果不错换到覆膜地块后误检率翻倍就是背景差异太大导致的。玉米苗和杂草混生的情况要重点采集。自然田块里不会出现纯玉米苗区和纯杂草区的整齐分界大部分图像都是苗、草、土混在一起。标注时这种图像很费眼睛但恰恰是这种混乱场景才真正训练出模型的判别力。3.2 标注规范框的边界、遮挡处理、难例怎么标数据标注是另一个决定上限的环节。我用的标注工具是开源的labelme和它配套的格式转换脚本先标成JSON再转成YOLO格式的txt。如果你有精力和预算可以用某商业标注平台的辅助标注功能先跑一遍预标注模型人工修正边界框效率能提升不少。但对于单机个人项目labelme完全够用。标注时最需要统一的标准是边界框的定义。玉米苗叶片展开方向各异有的耷拉下来贴着地面有的斜向上生长。我统一的原则是框住植株所有可见绿色部分的最小外接矩形如果叶片被杂草遮挡了一部分按完整叶片应该占据的范围去推断边界而不是只框可见部分。后者会让模型学到被遮挡的叶子不该有完整边界这种错误规律。类别定义上我最初分了玉米苗、禾本科杂草、阔叶杂草三类。后来发现禾本科杂草和玉米苗形态上的相似性导致标注本身的含争议性很大——同一株草不同标注者有的标为禾本科杂草有的认为更像玉米苗。最后项目里采用了更稳定的方案统一标成玉米苗和杂草两类在类别内部再由系统输出目标数量统计。这个调整让标注一致性大幅提高训练出来的模型反而在用户视角更实用。难例的处理是最花时间的。比如刚出土的苗只有两片子叶形态和某些杂草的幼苗几乎一样比如杂草和玉米苗根系交缠重叠比如叶片枯黄但仍算植株一部分的边界情况。这些难例在初版训练集里占比不高导致模型上线后集中出错。后来我有意识地把难例单独建了一个目录每次训练后专门看难例集的测试结果针对性地去补采、补标而不是盲目增加总数据量。3.3 数据增强从量大到有效Mosaic与色彩扰动配合使用目标检测任务里数据增强几乎是必选项YOLOv11自带的增强策略已经很强但有几个参数在农业场景值得手动调整。我保留了Mosaic增强因为它能把四张图拼成一张让模型在训练时看到更多样化的目标组合和尺度变化对小目标检出率很有帮助。不过mosaic比例过高会导致训练后期模型难以收敛我的做法是前一半训练周期开启mosaic后一半逐渐关掉让模型在真实分布上做精调这一招在YOLOv5时代就很有效。色彩扰动在农业场景要慎重。YOLO默认的HSV变换幅度较大比如色相偏移过大可能把绿色改成紫色或者黄色这在一般物体检测里问题不大因为目标类别对颜色不敏感但玉米苗和杂草的区分高度依赖绿色的渐变色相反转会让模型收到错误信息。我把hsv_h从默认的0.015降到0.008hsv_s和hsv_v维持在0.6左右让增强后图像仍在真实绿色附近波动这样既提升了光照鲁棒性又没有破坏类别可分性。还有一个容易忽略的增强是水平翻转。玉米苗的叶片朝向没有固定方向规律水平翻转是安全且有效的垂直翻转一般不建议在田间场景用因为土壤和天空的相对位置关系隐含了拍摄角度信息垂直翻转会引入不真实的视角。旋转方面我控制在正负15度之内超过这个范围玉米叶片原本的细长条形态容易被插值模糊掉。注意数据增强不是越多越好。农业场景的难点本身在于环境差异大增强是用来模拟环境差异的而不是用来把图像改得面目全非。判断增强是否合理的标准很简单——增强后的图像人眼是否还能正确识别出玉米苗和杂草如果人眼都认不出来模型只会学到噪声。4. 模型训练的关键参数与调优路径从损失下降到mAP浮动的完整过程4.1 训练配置与显存约束选对输入尺寸和batch size训练环境我用的是单卡GPU显存16G这个配置在目前做YOLOv11训练里算是起点级别但也足够训练出一个可用的苗期检测模型。训练前首先要定的是输入尺寸imgsz。官方默认是640前面说过对于幼苗小目标我最终选择了在训练和推理时用800到960之间的值。具体选多少取决于显存。输入尺寸从640提到960显存占用大约增加一倍以上我的batch size从16降到8才稳定下来。如果你显存不够宁可batch小一点也要保输入尺寸因为对幼苗检测来说小目标的像素信息比batch size带来的梯度稳定性更重要。训练轮数epochs我设置的是200轮。实际发现模型在120轮左右已经基本收敛后面更多是在细微波动。这里有个经验值如果你的训练集只有几百张图200轮容易过拟合如果上了两三千张200轮比较稳妥。epochs的设置还要配合早停机制我在代码里加了early stopping连续20轮验证集mAP没有提升就自动终止省去了不少等待时间。优化器方面如果不做特殊调优默认的SGD和AdamW都能用。我在项目里用的是AdamW初始学习率0.001weight decay设为0.0005。YOLO系列训练时学习率会自动做warmup和余弦退火所以不需要手动调整学习率策略。真正需要盯的是loss曲线box_loss、cls_loss、dfl_loss三条曲线都应该平滑下降如果某一条突然上扬先别急着调参多半是数据里混入了标注错误。4.2 训练结果怎么看mAP不是唯一指标漏检率才是农业场景的痛点模型训练完最直观的评估指标是mAP0.5和mAP0.5:0.95。我这个项目训练出来的模型在验证集上mAP0.5大约在0.91到0.93之间mAP0.5:0.95在0.78左右。但说句实在话农业场景比mAP更重要的是漏检率和误检率的平衡。喷药机器人宁可多框出几株杂草也不能漏掉一株而如果是做除草决策误检带来的浪费和漏检带来的杂草残留都会造成实际损失。所以我在验证阶段除了看mAP还专门统计了不同尺寸目标的召回率小目标面积小于32x32像素、中目标32x32到96x96、大目标。小目标的召回率通常比中目标低五到十个百分点这是正常的因为小目标本身携带的信息量少。如果小目标召回率最低的那一类恰好是杂草苗就要回到数据层面补小目标样本或者调整推理时切片策略而不是盲目调置信度阈值。置信度阈值的选择也很有讲究。YOLOv11推理时默认conf阈值是0.25这个值在通用场景比较合适但在幼苗检测场景里把阈值降到0.15可以显著提升召回率代价是会有更多误检框。我的做法是UI界面里把置信度阈值做成滑杆让最终使用者根据地块实际情况调整。农业场景的使用者往往比算法工程师更了解自己的地给他们一个可调参数比帮他们定死一个值更实用。4.3 过拟合与类别不平衡的处理宁可欠拟合不要假性收敛农业数据集普遍不会特别大几百张到两三千张是常态。这个体量下过拟合是头号风险。判断过拟合不能只看训练集loss趋近于零而要看验证集mAP是否停滞不前甚至下降。我遇到过的一种典型情况是训练集mAP到了0.95验证集只有0.7说明模型已经开始背答案而不是学规律。解决过拟合的手段按照性价比排序第一是增加数据量尤其是难例第二是增强策略也就是前面说的Mosaic和色彩扰动第三是降低模型规模如果用的是YOLOv11x可以换到YOLOv11m或者s在小数据集上大模型反而容易学坏第四是加dropout或权重衰减但这个对卷积网络效果有限。类别不平衡的情况在苗期检测里也很常见——杂草类别样本多玉米苗类别样本少因为自然田块里杂草分布本来就比玉米苗密集。训练出来的模型会偏向杂草类别表现为玉米苗漏检率偏高。处理方式我建议先不急着用focal loss或者重采样而是先看一下两个类别的目标数量比值。如果差距在五倍以内通过数据增强扩充少数类样本通常是够用的如果差距超过十倍就要考虑图像层面的采样策略比如每个batch强制保证玉米苗样本的最低比例。提示训练过程中每轮验证都在做记得保存最优权重而不是最后一轮权重。YOLO训练默认会保留best.pt和last.ptbest是按验证集mAP选出来的。我遇到过有些同学不知道这一点直接拿last.pt去推理结果性能差了一截白白浪费了训练时间。5. 从模型到系统UI界面、登录注册和推理链路的完整拼装5.1 系统功能拆解用户端所见即所得这套系统的功能结构很直接大致分成四个模块用户管理、图像输入、检测展示、结果导出。用户管理就是登录注册负责区分不同使用者的身份防止未授权访问图像输入支持本地图片选择也做了摄像头采集的接入接口检测展示是核心交互区左侧显示原图右侧显示带检测框的结果图下方用表格列出识别出的玉米苗数量和杂草数量并对每类目标标出平均置信度结果导出可以把检测结果保存成标注图或者JSON格式的检测记录方便后续做地块分析。UI框架我用的PyQt5原因是它做桌面工具类应用足够成熟控件丰富打包发布也方便。如果你对Web技术更熟也可以把整套系统包装成Flask或者FastAPI服务前端用Vue或者React。但桌面版本的好处是模型推理和界面在同一个进程内省去了网络通信的开销和维护成本。文档里常写的前后端分离虽然灵活但在单人单机项目里往往是过度设计。我对界面交互的要求是一个完全不懂深度学习的人拿到这个系统十分钟内能完成从登录到出检测结果的全流程。所以按钮命名不用执行推理这种专业词直接用开始检测置信度阈值滑杆默认0.2界面右侧有实时提示阈值越低检出越多误检也可能越多让使用者能根据画面反馈自己调整。5.2 登录注册的实现细节密码不存明文是底线登录注册模块看起来简单但安全上的细节不少。密码存储必须用哈希加盐我用的Python标准库hashlib配合secrets生成的随机盐迭代一万次以上PBKDF2或者直接用bcrypt库都行。绝不能把明文密码存到数据库里这不仅是规范问题一旦数据库泄露所有用户密码都会暴露。用户信息我用的是SQLite存储轻量而且Python内置支持对单机系统完全够用。会话管理也有讲究。登录成功后系统在主界面内存里保存当前用户信息所有涉及用户操作的日志都会带上用户ID。注册时做了用户名唯一性校验和密码强度检查最少6位而且必须同时包含字母和数字。还有一些体验上的细节登录按钮回车触发、注册成功自动回填用户名、密码输入框支持显示/隐藏切换这些虽然不起眼但会实实在在影响系统的可用性。如果未来要把系统放到公网环境供多用户使用建议把登录注册模块换成JWT或者OAuth方案并且在服务端加请求频率限制。不过话说回来农业现场环境往往在田间接入摄像头或者工控机网络条件不稳定本地单机部署仍然是主流场景过度的安全设计反而会增加使用门槛。5.3 推理线程与界面线程的配合保证界面不卡死的核心设计桌面端UI开发有个经典问题主线程负责界面刷新和事件循环如果推理这类耗时操作直接放在主线程画面会卡住甚至出现未响应的提示。我的做法是用Python的QThread把推理放到后台线程推理完成后通过信号把结果传回主线程更新界面。这里有个坑在Python的线程机制里很典型模型推理本身是在C底层跑的不一定完全遵守GIL的限制但图像处理、nms后处理、结果数据结构转换这些Python层操作会受GIL影响。如果同时开多个推理线程性能提升几乎为零甚至可能下降。所以我干脆把推理设计成单线程队列所有检测请求按顺序排队避免不必要的锁竞争和上下文切换。摄像头采集场景还有一个额外问题视频流帧率一般在25到30帧每秒模型推理速度如果只能达到10到15帧每秒就需要丢帧策略。我的做法是采集线程始终负责拿画面并放入队列推理线程每次从队列里拿最新一帧处理处理完后把旧帧丢弃。这样界面显示速度取决于推理速度但画面不会因为处理不过来而越积越久导致内存暴涨。提示如果你在UI里使用Python的线程去加载模型权重一旦线程被强制终止比如用户关闭窗口模型占用的显存可能无法立即释放。处理方法是监听窗口关闭事件在关闭前显示等待对话框并显式调用torch.cuda.empty_cache()清理缓存否则重复启动程序时可能出现显存不足的报错。6. 实测效果与踩坑记录训练指标好看不等于地里效果好6.1 多个测试地块的表现对比光照与土壤背景是主要波动源模型训练完成后我找了三类不同条件的地块做了实测。第一类是大晴天、露地黄壤、苗龄两叶期整体光线均匀模型表现最好玉米苗和杂草的检出准确率目测在95%以上误检主要集中在远处贴近地平线的模糊区域。第二类是阴天、覆膜地块、苗龄四叶期叶片遮挡严重部分薄膜反光形成高光区模型对玉米苗的召回率有所下降杂草的误检率上升主要原因是覆膜反光产生的伪绿色区域被当成了植物。第三类是清晨侧光、土壤湿润、苗龄五叶期长阴影和叶片反光导致边界定位偏移检测框普遍偏大但目标类别判别基本正确。这个结果印证了我在数据采集阶段的判断光照和土壤背景是系统实际生效的最主要变量。算法层能改进的空间有限真正有效的办法还是数据层面的覆盖。同时也说明只放一套固定的推理参数是不能指望全场景通用的这也是我们在UI里保留置信度滑杆的原因之一。6.2 常见问题排查清单漏检、误检、标签错位、显存占用把项目从头到尾跑的体验记录成一份问题清单对后来者会很有帮助。漏检该框的没框出来。最常见的原因是目标尺寸太小画面里一株苗只占几个像素再强的网络也识别不了。对策是切片推理或者调高输入分辨率。其次是目标颜色与土壤接近幼苗期有些叶片黄绿色偏淡和干土的褐色在灰度上分不开。这种情况人对颜色敏感但模型对梯度敏感只能靠更多类似的训练样本。误检不该框的框出来了。我遇到最多的是把土壤中的绿色藻类或者苔藓误判成杂草以及把覆膜上的反光绿叶倒影当成幼苗。后者极难解决因为从二维图像上看倒影的纹理和真实叶片确实高度相似。目前的处理方式是提高置信度阈值以及在后处理阶段加入最小目标面积过滤把面积小于一定像素的框直接丢弃。标签错位。检测框的位置正确但类别来回横跳一会儿是玉米苗一会儿是杂草。这种情况基本是两类目标形状和颜色重叠太多模型特征判别力不足。解决方向不是调参而是回到数据层把容易混淆的样本单独抽出来做模型精调。显存占用异常。UI窗口反复打开关闭显存逐步上涨直到溢出这个是典型的模型加载后没有释放。排查方式是任务管理器看进程的GPU内存占用曲线如果是阶梯式上升按前面说的方式加显存清理逻辑。6.3 关于性能调优的补充NMS和后处理参数以及批量推理的可能性YOLOv11推理器的后处理里非极大值抑制的IoU阈值默认一般是0.45这个值在田间场景可以尝试调低到0.35。原因是玉米叶片和杂草密集交错时同一个目标可能会被多个锚框覆盖NMS阈值太松会导致同一个目标被重复框出阈值适当收紧会减少重复框代价是紧挨着的两个目标可能被合并成一个。整体上农业场景对少重复框的需求大于不合并紧挨目标所以我推荐这个调整方向。批量推理是提升吞吐量的另一个思路。如果你需要在系统里批量处理一批地块图像不要一张一张循环predict而是把所有图像resize后组成一个batch一次前向推理处理全部。YOLO模型对batch维度没有限制batch size设为8到16时GPU利用率明显上升单张均摊时间能下降一半以上。我这里没有把批量推理暴露到UI界面但预留了命令行批处理入口实际批处理两千张图的效果是比单张循环快约一点六倍。7. 如果我重做这个项目会在哪些地方改变做法先给一个个人判断这类深度学习模型界面登录注册的组合项目最大的风险往往不在模型精度而在工程链路的完整性。很多人的Demo只跑到模型能在测试集上框出目标就结束了但实际要交付给别人用还需要处理环境依赖、模型文件管理和异常输入等问题。如果重做我会考虑三个改进点。第一个是把模型文件和数据集的路径管理做得更规范。这个项目开发过程中出现过一次模型路径写死的问题导致换机器跑的时候系统直接报错找不到权重文件。后来我统一用配置文件管理所有路径权重、配置文件、用户数据库、导出目录各自独立程序启动时检查目录是否存在不存在则自动创建。这套路径检查机制花了不到半小时但避免了无数个在我电脑上能跑的尴尬。第二个是把验证闭环做得更早。我是在项目后期才意识到与其等系统完全搭好再采集测试不如先做一个小规模的端到端验证——也就是先用十几张图跑通数据标注 - 训练 - 推理 - 界面显示的完整流程确认每个环节都能衔接再回过头来大规模补数据和优化。很多人做项目是数据标注一个月、训练一周、写界面半个月最后发现推理输出格式和界面解析逻辑不匹配前面的工作全要返工。先跑通最小闭环后面的扩展只是量变不会引起质变层面的返工。第三是给模型输出增加了目标密度热力图。这是我在后期加的一个小功能检测完成后把图像按网格切分统计每个网格内杂草目标的数量用颜色深浅表示密度。这个可视化给使用者的价值比一堆检测框更大因为农户关心的不是这一株是草而是这一片草多需要重点处理。它也是从检测系统走向决策支持系统的关键一步。实现起来并不复杂在UI右侧增加一个canvas把检测结果坐标映射到热力图上即可。我自己的体会是农业视觉项目的验收标准永远是地里用得稳不稳而不是指标高不高。模型精度再高如果在真实地块的三类光照条件下表现波动巨大、UI卡顿、登录流程繁琐项目都很难真正落地。这也是为什么整套系统里我把数据覆盖和交互体验放到了和模型训练同等重要的位置。希望这篇记录能帮你少走一些弯路在你自己的玉米幼苗检测项目里把力气花在真正影响结果的地方。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表