【社会服务赛道】鲜眸 FreshEye:一款通过鱼眼图像辨别水产品新鲜度的工具

【标签】

社会服务


【标题】

【社会服务赛道】鲜眸 FreshEye:一款通过鱼眼图像辨别水产品新鲜度的工具


【正文】


0.1 写在前面:grin:

大家好,我是 祈雨柒,一名准大一新生,打算主修 Applied AI 方向。

FreshEye 是我用 TRAE WorkTRAE IDE 从零做出来的完整 AI 产品——从前端页面到后端服务,从模型训练到检测流程编排,全链路独立完成。在 200+ 轮次的开发迭代中,我精选了 27 个具有代表性的 Session ID 作为关键开发节点进行展示。TRAE 让我能比较轻松地迈过入门这道坎,把想法真正落地,也谢谢官方在初赛赠送的 Pro 权益和在复赛赠送的 Pro + 权益,让我能在产品迭代与优化上做更深的探索。同时,我也欢迎各界同学们、老师们、帅哥们、美女们、同志们提出批评与建议。你们的批评与建议都是我不断前行的动力!

谢谢大家


0.2 宣传小短片:film_frames:

宣传小短片


0.3 项目总览:clipboard:

项目 内容
赛道 社会服务
体验入口 已通过复赛的飞书问卷提交 :saluting_face:
核心模型 FishFreshNetV1(EfficientNet-B0 + CBAM,98.88%)+ FishFreshNetV2(EfficientNet-B0 + Light CRA + ECA,99.29%)
自研数据集 MFED 4800+ 样本,已在 Mendeley Data 平台开源
工作流 CNN 推理 + Grad-CAM 可解释性 + 置信度自适应交互
前端 HTML/CSS/JS,深海动态主题
开发方式 TRAE Work + TRAE IDE,200+ 轮次开发迭代,选取 27 个代表性 Session ID 作为关键节点展示
作者 祈雨柒

1 引言

初赛时,我完成后端编写并部署在 Hugging Face Spaces 上,提交前端 HTML Demo 后并没有停下。我自己反思时发现的几个问题,加上大家给出的建议,让我决定继续往下做 V2。

1.1 项目前景分析

水产品是全球人类优质动物蛋白的重要来源。根据联合国粮农组织(FAO)发布的《2022 年世界渔业和水产养殖状况》[1],世界鱼类产量在 2020 年已达到约 1.78 亿吨,并持续保持增长态势。但水产品高水分、高蛋白的特性也使其极易腐败——Gram 与 Huss 在 1996 年指出,鱼类腐败过程中微生物活动会产生生物胺、组胺等有害物质[2],一旦流入餐桌会直接威胁消费者健康。所以水产品新鲜度检测是食品安全的最后一道防线,也直接关系到整个产业链的公信力。

现有的新鲜度检测方法大致分为两条路子:一条是传统感官评估——靠训练有素的检查员看鱼眼透明度、瞳孔外观、鳃色和表面纹理。Hassoun 与 Karoui 指出,这种方式受评估者主观状态影响很大,评估者之间存在主观标准不一致和评估疲劳问题[3]。另一条是化学检测,包括 TVB-N(挥发性碱性氮)、三甲胺、组胺、K 值、硫代巴比妥酸反应物、pH 与微生物计数等指标。Nollet 与 Toldrá 在 2010 年主编的《海鲜与海鲜产品分析手册》[4]系统总结了这些方法,结果客观,但需要破坏性采样、用专业设备和实验室基础设施。这种化学检测方法单次成本高昂,耗时时间长,没法满足消费终端或者监管终端的需求。

所以问题就很清楚了:水产品产业链体量庞大、食安风险高,但既有检测方案要么主观不可复现,要么客观却昂贵且破坏样品。中间缺一个零成本、非破坏式、又能解释清楚结果的 AI 工具——这就是 FreshEye 想填补的空缺。

1.2 前人研究综述

1.2.1 传统检测方法与计算机视觉路径

围绕鱼类新鲜度的客观化评估,学界经历了从感官评估 → 化学指标 → 机器视觉 → 深度学习的演进(貌似每个传统领域都经历了类似的变化)。感官评估受评估者主观影响大;化学指标虽客观但破坏样品且需实验室。计算机视觉提供了一条非破坏、快速、可复现的替代路径——Dowlati 等[5]系统总结了早期机器视觉技术在鱼类质量评估中的应用,这些早期方法依赖人工设计的颜色、纹理、形状描述符,泛化能力有限。

1.2.2 深度学习在鱼类新鲜度检测中的应用

近年来深度学习逐步取代人工特征工程,成为鱼类新鲜度检测的主流路径:

  • Lalabadi 等(2020)[6]是该领域的先行研究,从鱼眼和鳃部提取颜色特征,结合人工神经网络(ANN)与支持向量机(SVM)进行多分类,验证了鱼眼视觉特征用于新鲜度分类的可行性——这也是本项目选择鱼眼作为检测入口的理论支撑。

  • Yildiz 等(2024)[7]使用深度学习特征选择 + 人工神经网络分类,并开发了配套移动应用,准确率约 77.3%。这是与本作品最接近的同期研究,但未集成注意力机制和可解释性,也未构建完整工程闭环。

  • Prasetyo 等(2022)[8]在公开 FFE 数据集上改进 MobileNetV1 的瓶颈结构(DSC bottleneck),但准确率仅 63.21%,反映出小模型在复杂场景下的精度瓶颈。

  • Kilicarslan 等(2024)[9]比较了 MobileNetV2、Xception、VGG16 等多种迁移学习特征提取器在鱼新鲜度检测中的表现,为本项目的骨干网络选型提供了横向参考。

  • Hamidy 等(2025)[10]采用多角度图像数据预测鱼类新鲜度,是近期较新的工作,但仍以精度优先为主,未在轻量化与可解释性上做平衡设计。

1.2.3 注意力机制与可解释 AI

为了让模型聚焦关键区域并提升可解释性,注意力机制与事后解释方法被广泛引入。Woo 等 2018 年提出的 CBAM[11]让模型同时从"通道"和"空间"两个维度学会"看哪里",是 FreshEye 骨架模型 FishFreshNetV1 采用的核心模块;Wang 等 2020 年提出的 ECA-Net[12]进一步证明,仅用一维卷积就能高效捕获通道之间的关系,在几乎零参数开销的前提下达到甚至超过 SE/CBAM 的效果——V2 换掉 CBAM 改用 ECA,就是基于这个。在可解释性方面,Selvaraju 等 2017 年提出的 Grad-CAM[13]通过目标类梯度反向流向最终卷积层,生成一张"热力图"标出模型判断时盯住的位置,成为卷积网络事后解释的事实标准,也是 FreshEye 让用户信任模型决策的核心技术。

1.3 本研究的创新点与差异化优势

1.3.1 现有研究的三个不足

综合 1.2 节综述,现有研究存在三个普遍不足:

  1. 准确率与轻量化难以兼得:高精度模型(如 VGG 系列)参数量动辄上千万;轻量模型(如 MobileNetV1)精度又受限。Prasetyo 等[8]的 63.21% 与 VGG 系列的高参数量形成两难。

  2. 可解释性缺失:Yildiz 等[7]、Kilicarslan 等[9]的工作基本只输出分类结果,缺乏对模型决策依据的可视化解释,黑箱输出难以让消费者与监管方信任。

  3. 工程化落地不足:多数研究止步于论文与数据集,缺少从模型 → 后端服务 → 前端交付 → 置信度自适应交互的完整工程闭环,无法被真实用户使用。

1.3.2 FreshEye 的定位

FreshEye 想做的就是补上这三块:基于我提出的 FishFreshNetV1/V2 轻量化可解释架构,串联 Grad-CAM 可解释性[13]、置信度自适应检测流程与多页面 Web 前端,把一个论文级模型真正交付到用户手里。

1.3.3 V2 的两大核心创新

相对于 V1,FishFreshNetV2 在保持工程化落地的同时,往学术方向做了一次升级,主要改了两处:

  1. ECA 替代 CBAM:V1 使用的 CBAM[11]在"通道"和"空间"两个维度都引入了额外参数;V2 改用 ECA[12],用一维卷积让相邻通道直接互动,在精度提升的同时做到"零额外参数"——ECA 只用一个一维卷积核(几个权重),不引入任何通道压缩参数。

  2. Light CRA 鱼眼专用区域注意力:V2 引入了我设计的轻量级环形区域注意力(Light CRA),利用鱼眼近似圆形的几何特点,把特征图按瞳孔/角膜/眼眶三个同心环分别施加注意力。原始 CRA 参数高达 13.846M,而 Light CRA 只增加 0.083M 参数就带来 0.37% 的准确率提升。

改完之后,V2 在 MFED 数据集上达到 99.29% 准确率(V1 为 98.88%),参数量从 4.216M 降到 4.095M,即 V2 模型用更小的参数实现了更高的准确率,V2 相对 V1 提升 0.41 个百分点(p = 0.034)。下一节我将正式介绍 FreshEye 产品本身。


2 产品简介

2.1 是什么

FreshEye 是一个 Web 应用,浏览器打开就能用,不用安装、不用注册、不挑系统、不挑设备。

  • 后端:FastAPI + PyTorch,部署在 Hugging Face Spaces

  • 模型:FishFreshNetV1(EfficientNet-B0 + CBAM,98.88%)+ FishFreshNetV2(EfficientNet-B0 + Light CRA + ECA,99.29%),在开源数据集 MFED 上训练

2.2 面向谁

用户群体 痛点 FreshEye 提供的价值
:shopping_cart: 普通消费者 不会看鱼眼、买鱼凭运气 拍一张照片,秒级得到三级新鲜度判定
:fish: 海鲜商户与餐饮采购 进货核验依赖老师傅经验,纠纷无据 客观置信度 + Grad-CAM 可解释热力图作凭证
:clipboard: 市场监管与基层检疫 化学检测贵、慢、破坏样品 非破坏式视觉判定 + 服务器可留档
:desert_island: 边远地区渔民与农贸摊主 偏远地区无专业质检条件 浏览器即可使用,离线模式兜底

2.3 现有方案对比

方案 单次成本 耗时 是否破坏样品 可解释 使用门槛
经验判断 免费 即时
化学检测 200-500元 2-24h
便携式仪器 设备5000-20000元 5-30min 部分破坏 部分
FreshEye 免费 <10s

2.4 完整功能清单

2.4.1 核心检测路径

  1. 上传鱼眼照片(点击 / 拖拽 / 粘贴 三种方式)

  2. 内置示例鱼眼照片(高度新鲜 / 新鲜 / 不新鲜三档标签一键载入,方便评委快速体验)

  3. 实时预览 + AI 扫描动画

  4. 一键分析,调用 HF Spaces 后端推理

  5. 4-Tab 完整分析报告:

  • 概览:新鲜度等级 + 置信度仪表盘 + 三类概率分布

  • AI 视觉分析:原图 vs Grad-CAM 热力图滑块对比

  • 详细报告:鱼眼外观评估 / 趋势预测 / 知识图谱匹配(手风琴折叠)

  • 处理建议:储存 / 食用 / 处理 / 安全警告 / 最佳实践 五大类建议卡片

  1. 置信度自适应交互:
  • 置信度 < 75%:黄色警告横幅,提示用户确认照片为清晰鱼眼特写

  • 置信度 < 60%:红色弹窗,提示输入照片可能并非鱼眼图像,建议重新拍摄

  • 仪表盘三色分区:绿色(≥80% 高置信度直出)/ 黄色(60-80% 中置信度·多区域融合)/ 红色(<60% 低置信度·建议重拍)

  1. 历史记录本地存档(支持收藏、删除、回看)

  2. 报告导出:一键生成 PDF 报告(含原图 + Grad-CAM 热力图 + 概率分布 + 详细分析 + 处理建议,单页 A4 报告)

2.4.2 鲁棒性设计

  • 移动端深度适配:从 375px 手机到 1024px 平板全断点覆盖

  • PWA 基础支持:manifest + Service Worker 离线缓存

  • 无障碍:键盘导航、焦点管理、prefers-reduced-motion@media print 打印样式

2.4.3 新增功能

  • 拍照检测:移动端可直接调用后置摄像头拍照检测,<input capture="environment"> + 拍照按钮,降低低质量照片比例

  • 图片压缩上传:上传前自动将图片压缩到最大边 1600px、JPEG quality=0.85,显著减少上传体积和推理时间,降低移动端超时概率

  • PDF 报告自定义文件名:导出时自动生成 FreshEye_新鲜度报告_${timestamp} 格式文件名,方便用户归档

  • 使用指南页(guide.html):拍照教程(正确/错误示例对比)、三步使用流程、FAQ 手风琴组件,降低新用户门槛

  • 鱼种百科页(fish.html):常见鱼种图鉴、鱼眼新鲜度特征、GB 2733-2015 国标解读、新鲜度变化时序,增强科普价值

  • 导航栏扩展:首页 / 指南 / 百科 / 关于 四页面导航,所有页面配色方案与深海科技风主题完全一致

  • 安全加固:后端文件类型校验、网络请求安全防护、超大图片限制、模型加载安全机制等多层防护

2.5 相比初赛 Demo 的升级

维度 初赛 Demo 复赛完整作品
架构 单文件 HTML 多页面架构
体验入口 ZIP 附件下载 GitHub Pages 在线访问
适配情况 多端多设备适配
可解释性 静态热力图 Grad-CAM 热力图 + 滑块对比交互
报告维度 一个页面堆叠所有信息 4-Tab 分类 + 折叠式卡片,结构清晰
处理建议 简单描述 5 大类完整卡片(储存/食用/处理/安全警告/最佳实践)
置信度交互 仅显示数字 三色仪表盘 + <75% 黄色警告 + <60% 红色弹窗 + 工作流路径徽标
历史可追溯 存储完整历史 + 收藏 + 相对时间显示
报告导出 PDF 报告(原图 + 热力图 + 建议,单页 A4 排版)
演示视频 1–5 分钟完整流程录屏
Session 数 5 200+ 轮次迭代,精选 27 个代表性 Session ID
技术细节展示 无独立页面展示 技术架构图 + FishFreshNetV1/V2 模型架构详解(EfficientNet-B0 + CBAM/ECA + Light CRA + Grad-CAM)+ 检测流程拓扑 + 性能对比表 + V2 消融研究 + 创作历程 + 社会价值
拍照检测 移动端后置摄像头直接拍照检测
图片压缩 原图上传(25MB上限) 自动压缩到最大边 1600px / JPEG 0.85
冷启动提示 /health 健康检查 + Toast 进度通知
使用指南 guide.html 拍照教程 + 三步流程 + FAQ
鱼种百科 fish.html 鱼种图鉴 + 国标解读 + 新鲜度时序
安全加固 基础 CORS 多层安全防护(文件校验、请求过滤、图片限制、加载安全)

3 产品演示视频

B站演示视频链接:https://b23.tv/BPiZ2wu


4 产品创作历程

4.1 灵感来源

记得是上周末吧(初赛的时候是上周末,现在应该是上个月了 :face_with_raised_eyebrow:),陪家人去菜市场买鱼,摊主拍着胸脯说"绝对新鲜",回家切开肚子却已经发臭。我盯着那条鱼的外观看了半天,啥也没看出来——最后只能承认,用肉眼看鱼的外观,根本看不出它新不新鲜。

那一刻我想:为什么不能用 AI 帮我看?

我查了查文献发现,鱼眼的角膜透明度、瞳孔形态和浑浊程度,是判断鱼类新鲜度最核心的视觉指标之一[6],但人眼根本分辨不出这么细微的差距。而水产品消费安全关系到每个人的餐桌健康,现有的检测方案——靠经验不靠谱,化学检测又贵又慢还破坏样品——中间缺一个零成本、非破坏式、又能解释清楚结果的 AI 工具。

4.2 想解决的问题

  • 信息不对称:买方在水产品新鲜度上天然处于弱势,摊贩说什么就是什么

  • 判断门槛高:"看鱼眼"需要经验积累,年轻人和普通人无法掌握

  • 结果不可信:现有 AI 工具只给结论不给理由,黑箱输出无法让人放心

  • 不可追溯:缺少可存档的客观依据,买卖纠纷时无据可查

4.3 关键问题与解决思路

4.3.1 问题一:小样本下如何达到可用准确率?

我设计了 FishFreshNetV1 架构——以 EfficientNet-B0[14]作为主干(负责从鱼眼图像中提取特征),加上 CBAM[11]注意力机制(让模型学会"看哪里")。在我的 MFED 数据集(4800+ 多阶段鱼眼样本)上达到 98.88% 准确率,仅用 4.216M 参数和 0.414G FLOPs——以 VGG16 约 3.1% 的参数量实现了具有竞争力的准确率。

4.3.2 问题二:黑盒模型如何让用户信任?

黑盒模型指的是现代神经网络模型,由于内部决策机制缺乏可视化,导致无法向用户提供细致的决策路径,被戏称为“黑盒”。

在 FreshEye 中,我引入了 Grad-CAM[13]生成类激活热力图,可视化模型关注区域(瞳孔、角膜边缘)。我在实验中观察到:正确分类的案例里,红色高亮区域精准聚焦于鱼眼瞳孔与角膜;而错误分类的案例中,高激活区偏移到了眼周亮鳞或镜面反光——背景反光会干扰模型焦点,这也是我后续优化的方向。

4.3.3 问题三:模型置信度低时怎么办?

设计置信度自适应检测流程——高置信度(≥80%)直出结果,中置信度(60-80%)提示"识别置信度中等,建议在光线充足环境重新拍摄",低置信度(<60%)弹窗提示"输入照片可能并非鱼眼"并提供"建议重新拍摄"按钮。前端同步设计了置信度自适应交互:仪表盘三色分区 + <75% 黄色警告 + <60% 红色弹窗提示"输入照片可能并非鱼眼"。

假设我上传了一张 TRAE宝,就会发现...

4.3.4 问题四:V1 到 V2 的学术升级

V1 完成后,我对其做了批判性反思,发现两个可改进点:CBAM 的空间注意力子模块在极小模型上引入了不成比例的参数开销;模型缺乏对"鱼眼是圆形"这一强几何特点的显式建模。基于这两点,我在 V2 中完成了两项技术升级:

  1. ECA 替代 CBAM:V2 用 ECA-Net[12]的一维卷积通道注意力替代 CBAM[11]的"全连接 + 卷积"双子模块。ECA 仅用一个自适应核大小的一维卷积让相邻通道直接交互,不引入任何压缩参数,在精度提升的同时实现"零额外参数注意力"。

  2. Light CRA 鱼眼专用区域注意力:这是我设计的原创模块,利用鱼眼近似圆形的几何特点,将特征图按瞳孔/角膜/眼眶三个同心环分区并分别施加注意力权重。原始 CRA 参数高达 13.846M,Light CRA 通过轻量分区加权设计压缩到仅 0.083M,却带来 +0.37% 准确率提升(98.88% → 99.25%)。环形数量消融实验证实 N=3 最优,正好对应鱼眼的三段结构。

4.4 为什么做这个方向?

  • 需求真实但没人满足:菜市场"看鱼眼判新鲜"这个需求长期存在,但至今没有低门槛的 AI 工具能填上

  • 技术链路自己走通:从模型训练(FishFreshNetV1/V2 + MFED 数据集)、后端部署(FastAPI + HF Spaces)、到检测流程编排(CNN 推理 + Grad-CAM + 置信度自适应交互)、前端交付(多页面 Web 应用),全链路都是我自己完成的

  • 思路上有突破:和"只给分类结果"的检测工具不同,FreshEye 把分类、可解释可视化、自适应建议、可留档报告这几步串成了一条完整链路,用置信度自适应分支(高/中/低三条路径)解决"模型不确定时怎么办"这个关键问题

4.5 重要的设计与技术决策

决策点 选项 A 选项 B 最终选择 理由
部署平台 火山引擎 / 阿里云 Hugging Face Spaces HF Spaces 免费且全球可达,已够用
前端形态 React / Vue SPA 纯 HTML/CSS/JS 纯原生 零依赖零构建,TRAE 开发代码可控性最强
文件结构 单 HTML 多页面 + 共享 CSS 多页面 评审浏览体验更清晰,技术细节独立成页
模型托管 浏览器内 WASM 推理 服务端推理 服务端 模型较大,移动端 WASM 性能不足
体验入口 仅 ZIP 下载 GitHub Pages + ZIP 双轨 在线即开即用,ZIP 作为兜底
置信度阈值 仅后端 0.8/0.5 前端再做 0.75/0.6 用户体验兜底 双层 后端技术兜底 + 前端体验兜底,双重保险

5 TRAE 实践过程

5.1 开发总览

整个项目在 200+ 轮次的 TRAE 开发迭代中完成,我从中精选了 27 个具有代表性的 Session ID 作为关键开发节点进行展示,每个节点都有明确的任务边界和验收标准,方便复盘和核验。这些节点分四个阶段:初赛 5 个 Session 完成前端 Demo,复赛 12 个 Session 分前端(6 个)和后端(6 个)两条线并行推进,V2 迭代 7 个 Session 分界面优化(4 个)和模型集成(3 个)两条线推进,最终打磨 3 个 Session 做动画逻辑优化、冗余代码删减与用户体验完善。除这 27 个关键节点外,开发过程中还有大量零散的 Bug 修复和小调整对话未一一列出。

5.1.1 初赛阶段

# Session 主题 核心产出
1 项目奠基 HTML 骨架 + 图片上传 UI(点击/拖拽/粘贴)+ 深海主题设计
2 视觉升级 深海动态背景 + 扫描线动画 + 骨架屏加载 + 结果面板布局
3 API 集成 对接 HF Spaces 后端 + 真实数据渲染 + 三级错误处理 + 离线降级
4 结果深化 四 Tab 报告 + 图像对比滑块 + localStorage 历史记录 + JSON/PNG 导出
5 打磨交付 移动端深度适配 + 离线模式 + 键盘导航 + 无障碍优化 + PWA 支持

5.1.2 复赛阶段 · 前端

# Session 主题 核心产出
6 多页面架构重构 抽离 style.css + 拆分 index.html / about.html + 导航跳转
7 移动端深度适配 + PWA 断点深化 + Service Worker 离线缓存 + 触摸优化 + Lighthouse 90+
8 检测流程融合 + 处理建议升级 检测流程拓扑图 + 建议区 3 卡→5 大类 + 性能对比表入 about
9 置信度自适应前端机制 <75% 黄色横幅 / <60% 红色弹窗 + 三色仪表盘 + 路径徽标
10 最终交付打磨 演示视频脚本对齐 + 性能验证 + 自检清单 + 404/favicon/SEO
11 小 Bug 修复 图片预加载优化 + 北京时间修复 + 图标统一 + 卡片动画 + 泡泡分布 + 引文编号

5.1.3 复赛阶段 · 后端

# Session 主题 核心产出
12 后端奠基 FastAPI 框架 + FishFreshNetV1 模型推理服务(加载 .pth + Grad-CAM 生成)+ HTTP 客户端 + 工具层
13 检测流程基础设施 FastAPI 检测流程(图片校验 + 模型路由 + CNN 推理 + Grad-CAM + 缓存)+ CORS 与安全加固
14 推理核心实现 上传→格式校验→模型路由→FishFreshNetV1/V2 推理→Grad-CAM 可视化(含双模型加载 + 预热 + 降级处理)
15 置信度自适应交互 三色仪表盘 + 黄色横幅 + 红色弹窗 + 重拍提示(前端三色分区兜底)
16 分析与收尾 规则化结构分析 + 5 大类建议 + PDF 报告导出 + 历史记录本地存档,完成检测流程闭环
17 HF Spaces 部署 app.py 部署版(/predict + /predict_with_gradcam + /health)+ Dockerfile + 冒烟测试

5.1.4 复赛阶段 · V2 迭代

V2 迭代阶段围绕两条线展开:界面优化(Session 18–21)负责把 V2 的架构、消融研究、Grad-CAM 环形统计等学术成果前端可视化,并强化移动端触摸与无障碍体验;模型集成(Session 22–24)负责把 FishFreshNetV2 接入后端推理服务,并实现 V1/V2 双模型切换。

# Session 主题 核心产出
18 Grad-CAM 滑块增强 移动端触摸优化 + 无障碍属性补全 + 44px 触摸热区 + 键盘方向键支持
19 历史记录卡片重设计 左滑露出收藏/删除按钮 + 相对时间显示 + 历史徽章视觉升级
20 Hero 区鱼眼交互增强 瞳孔鼠标跟随 + 加载缩放动画 + 置信度自适应瞳孔变色 + 降级处理
21 结果页骨架屏与加载体验优化 骨架屏分区 + 扫描动画 + 渐进式内容揭示
22 FishFreshNetV2 模型集成 后端加载 V2 权重(4.095M)+ Light CRA 前向 + ECA 推理 + Grad-CAM 适配
23 后端 API 升级与 HF Spaces 推送 V1/V2 双模型并存 + model_version 路由 + /health 端点 + Dockerfile 更新
24 前端模型选择器与置信度路由 V1/V2 下拉切换 + 后端按置信度自动选择 + 性能/精度权衡策略

5.1.5 最终打磨阶段

复赛收尾阶段做"看不见但能感觉到"的工程化打磨:动画曲线、层级关系、PDF 排版、代码冗余清理。这 3 个 Session 没有新增大功能,但解决了从"能用"到"好用"的最后一公里问题,确保评审老师在任意设备、任意路径下都能稳定体验。

# Session 主题 核心产出
25 动画逻辑优化与冗余代码删减 处理建议卡片展开/折叠动画平滑过渡 + z-index 层级修复 + 删除无用变量与重复样式块
26 用户体验完善与产品打磨 PDF 导出报告排版优化 + 详细报告卡片格式统一 + 下拉框 UI 美化 + 响应式断点调整
27 前端代码审查与最终优化 导航栏标签遮挡修复 + 离线模式标签逻辑修正 + 模型版本文本动态更新 + about.html 内容平衡与去敏感化

5.2 FreshEye 页面展示

电脑端 Web 主页面

电脑端上传图片页面

5.3 开发关键步骤截图

开发图片太多啦~我就不一一展示啦! :face_with_monocle:

5.4 关键任务对话的 Session ID

1. 项目奠基

269810411504442:11ebc746745ef89c4acd3cf7fdd96605_6a43b44a15a410957ffb9671.6a43b44b15a410957ffb9674.6a43b44a15a410957ffb9672:TRAE Work CN.0.1.25.no_sid.no_ppe.T(2026/6/30 20:19:23)

2. 视觉升级

269810411504442:bc41a7a0052217829f714f53a28cedc2_6a43b44a15a410957ffb9671.6a44631b9dc4ab471b8c3550.6a44631b9dc4ab471b8c354e:TRAE Work CN.0.1.25.no_sid.no_ppe.T(2026/7/1 08:45:15)

3. API 集成

269810411504442:42bc4f7978676e103ffdaf6e9e721a0f_6a43b44a15a410957ffb9671.6a446b1d9dc4ab471b8c3624.6a446b1d9dc4ab471b8c3622:TRAE Work CN.0.1.25.no_sid.no_ppe.T(2026/7/1 09:19:25)

4. 结果面板

269810411504442:d6b1d31a94961f38a8d79f64a6c5b3c0_6a43b44a15a410957ffb9671.6a446dd09dc4ab471b8c369b.6a446dd09dc4ab471b8c3699:TRAE Work CN.0.1.25.no_sid.no_ppe.T(2026/7/1 09:30:56)

5. 打磨交付

269810411504442:89b90a98be89aa90a0b7e638878eadfd_6a43b44a15a410957ffb9671.6a4470119dc4ab471b8c36fd.6a4470119dc4ab471b8c36fb:TRAE Work CN.0.1.25.no_sid.no_ppe.T(2026/7/1 09:40:33)

6. 多页面架构重构

269810411504442:5dd848603edaf6914029e916aa47e9cd_6a617e01d5a1d471e063aa8c.6a617e01d5a1d471e063aa8f.6a617e01d5a1d471e063aa8d:TRAE Work CN.0.1.39.no_sid.no_ppe.T(2026/7/23 10:35:45)

7. 移动端深度适配 + PWA

269810411504442:85854831d9f0a83c4bdbe08d3d59b3dc_6a617e01d5a1d471e063aa8c.6a61856cd5a1d471e063abcc.6a61856bd5a1d471e063abca:TRAE Work CN.0.1.39.no_sid.no_ppe.T(2026/7/23 11:07:24)

8. 检测流程融合 + 处理建议升级

269810411504442:2c7c6c18e45113fc91722d816a524104_6a617e01d5a1d471e063aa8c.6a618dacd5a1d471e063ac57.6a618dacd5a1d471e063ac55:TRAE Work CN.0.1.39.no_sid.no_ppe.T(2026/7/23 11:42:36)

9. 置信度自适应前端机制

269810411504442:2b76d3a354bf47a7e26b0630fcbedbea_6a617e01d5a1d471e063aa8c.6a618eebd5a1d471e063ac99.6a618eebd5a1d471e063ac97:TRAE Work CN.0.1.39.no_sid.no_ppe.T(2026/7/23 11:47:55)

10. 最终交付打磨

269810411504442:c8f88fc71733d3dfe38a6ba7ba73b32d_6a617e01d5a1d471e063aa8c.6a6190d1d5a1d471e063ad0e.6a6190d1d5a1d471e063ad0c:TRAE Work CN.0.1.39.no_sid.no_ppe.T(2026/7/23 11:56:01)

11. 小 Bug 修复

269810411504442:f5b560194336ec6a9e2b936143cc8359_6a618700ed585635e6cdbdc9.6a61d5ff21b049173767bede.6a61d5fed32937cece1fc9e9:Trae CN.T(2026/7/23 16:51:11)

12. 后端奠基

269810411504442:c9aa24b1df846c9112940dae99c977a1_6a617e01d5a1d471e063aa8c.6a6219890dd8d457db4dbcf2.6a6219890dd8d457db4dbcf0:TRAE Work CN.0.1.39.no_sid.no_ppe.T(2026/7/23 21:39:21)

13. 工作流基础设施

269810411504442:afb36541c8b9f8f3299c790f8ea2dd3b_6a617e01d5a1d471e063aa8c.6a621a4e0dd8d457db4dbd60.6a621a4d0dd8d457db4dbd5e:TRAE Work CN.0.1.39.no_sid.no_ppe.T(2026/7/23 21:42:38)

14. 前段节点实现

269810411504442:eddd28bd5852f14f87d1950743c4483a_6a617e01d5a1d471e063aa8c.6a621c2c0dd8d457db4dbdac.6a621c2c0dd8d457db4dbdaa:TRAE Work CN.0.1.39.no_sid.no_ppe.T(2026/7/23 21:50:36)

15. 置信度分支节点

269810411504442:13cde69e05aad36c9fc5cf7aa6e29120_6a617e01d5a1d471e063aa8c.6a621dde0dd8d457db4dbe10.6a621dde0dd8d457db4dbe0e:TRAE Work CN.0.1.39.no_sid.no_ppe.T(2026/7/23 21:57:50)

16. 分析与收尾节点

269810411504442:e593223f3df05c88c1ab3e8839944e56_6a617e01d5a1d471e063aa8c.6a621ec90dd8d457db4dbe64.6a621ec90dd8d457db4dbe62:TRAE Work CN.0.1.39.no_sid.no_ppe.T(2026/7/23 22:01:45)

17. HF Spaces 部署

269810411504442:9d56b26901e72ef3f40b4ffdd1905374_6a617e01d5a1d471e063aa8c.6a621ff20dd8d457db4dbeac.6a621ff20dd8d457db4dbeaa:TRAE Work CN.0.1.39.no_sid.no_ppe.T(2026/7/23 22:06:42)

18. Grad-CAM 滑块增强

269810411504442:7736d737a14f729e44a673d7cec139f8_6a617e01d5a1d471e063aa8c.6a633290d35bffde2d3ad74c.6a633290d35bffde2d3ad74a:TRAE Work CN.0.1.40.no_sid.no_ppe.T(2026/7/24 17:38:24)

19. 历史记录卡片重设计

269810411504442:47b7d0f06114dcdda90252560dd4cfd3_6a617e01d5a1d471e063aa8c.6a633323d35bffde2d3ad77f.6a633323d35bffde2d3ad77d:TRAE Work CN.0.1.40.no_sid.no_ppe.T(2026/7/24 17:40:51)

20. Hero 区鱼眼交互增强

269810411504442:d23ad5acea89f67444ebfe36b1e878fa_6a617e01d5a1d471e063aa8c.6a6333f5d35bffde2d3ad7c4.6a6333f5d35bffde2d3ad7c2:TRAE Work CN.0.1.40.no_sid.no_ppe.T(2026/7/24 17:44:21)

21. 结果页骨架屏与加载体验优化

269810411504442:514896f5f7e95c7f4bd3744c8c68f3ba_6a617e01d5a1d471e063aa8c.6a633519d35bffde2d3ad806.6a633519d35bffde2d3ad804:TRAE Work CN.0.1.40.no_sid.no_ppe.T(2026/7/24 17:49:13)

22. fishfreshnet_v2 模型集成

269810411504442:2623c07160196bbaf234732362d65142_6a617e01d5a1d471e063aa8c.6a633647d35bffde2d3ad851.6a633647d35bffde2d3ad84f:TRAE Work CN.0.1.40.no_sid.no_ppe.T(2026/7/24 17:54:15)

23. 后端 API 升级与 HF Spaces 推送

269810411504442:7132ae0349e7e1cf177053d5cf30badc_6a617e01d5a1d471e063aa8c.6a63389dd35bffde2d3ad898.6a63389dd35bffde2d3ad896:TRAE Work CN.0.1.40.no_sid.no_ppe.T(2026/7/24 18:04:13)

24. 前端模型选择器与置信度路由

269810411504442:076a1ba5d032ab4117c90430855f20f2_6a617e01d5a1d471e063aa8c.6a63438dd35bffde2d3ad9c6.6a63438dd35bffde2d3ad9c4:TRAE Work CN.0.1.40.no_sid.no_ppe.T(2026/7/24 18:50:53)

25. 动画逻辑优化与冗余代码删减

269810411504442:a1cf2253cfcb855b30d120d5bd208d89_6a617e01d5a1d471e063aa8c.6a642296a3346bd291538037.6a642296a3346bd291538035:TRAE Work CN.0.1.40.no_sid.no_ppe.T(2026/7/25 10:42:30)

26. 用户体验完善与产品打磨

269810411504442:fbcf7963a6abb14d4a3d0b3895a3cc11_6a617e01d5a1d471e063aa8c.6a6447bda3346bd2915384cf.6a6447bda3346bd2915384cd:TRAE Work CN.0.1.40.no_sid.no_ppe.T(2026/7/25 13:21:01)

27. 前端代码审查与最终优化

269810411504442:363f1355fb72244577bec40bcf64f698_6a617e01d5a1d471e063aa8c.6a6458dba3346bd2915386a8.6a6458dba3346bd2915386a6:TRAE Work CN.0.1.40.no_sid.no_ppe.T(2026/7/25 14:34:03)

5.5 TRAE 使用心得:3 条实践经验

用 TRAE 从零做完整项目的过程中,我总结了 3 条对新手非常实用的经验:

5.5.1 拆分对话,每轮只做一件事

一开始我恨不得一句话让 TRAE 把所有功能全做完,结果就是丢功能、出 bug。后来我学会了把需求拆成独立轮次:先搭骨架、再加动画、再接 API……每轮专注一个目标,TRAE 的输出质量明显提升,也方便定位问题。任务拆得越细,TRAE 宝越不容易出错。

5.5.2 修改前先让 TRAE 复述当前结构

Session 2 出过一次问题:加完动画后上传区域消失了。后来我养成了习惯——每次让 TRAE 改代码前,先让它读一下当前文件的关键结构并复述"我要保留哪些部分、只修改哪些部分"。这样大幅降低了"改 A 丢 B"的概率。复赛阶段拆成多文件后,这一步更加关键:每个 Session 开头我都会在提示词里写明「承接上下文」段落,明确上一轮的产出。

5.5.3 你懂多少,TRAE 就能帮你多少

我两年前开始对计算机感兴趣,学过 Java 和 Python,后来接触 LLMs 和 Agent。我发现:如果我对一个领域的基础概念没有了解,我连 prompt 都写不好——我只会说"帮我做个网站"“修复这个 bug”,但根本描述不清到底要什么。我能做出这个作品,很大程度上是因为我提前搞清楚了底层技术细节,以及每轮对话我要做什么。

我把这次参赛精选的 27 个关键 Session 都写成了结构化提示词:每个 Session 都有前置条件、任务目标、详细实现要求、最终验收标准。我认为,用好 TRAE 宝的关键是给出一个结构清晰、让模型能理解的 prompt。

5.6 TRAE 能力运用的独特思路:goal 与 skill 的组合用法

复赛阶段我深度用了 TRAE 的两个进阶能力——/goal 指令和 skill 系统,这两点是我觉得 TRAE 区别于普通 AI 对话工具的地方,也是我能在 200+ 轮迭代里把一个完整产品做出来的关键。

5.6.1 /goal 指令:把"长任务"变成"有记忆的推进"

/goal 的核心价值不是"让 AI 帮你做一件事",而是"让 TRAE 宝在多轮对话里持续推进一个目标,中间断了也能接着干"。这个特性对长项目特别重要。举个形象的例子:假设 TRAE 宝在跑马拉松,跑一段距离就让 TRAE 宝看看距离终点线还有多远,这样才能时刻激励 TRAE 宝,让其继续跑下去。

我用 /goal 的方式有点特别——不是一次 /goal 做完整个项目,而是把它当成"阶段任务推进器"。比如复赛 V2 迭代阶段,我开了三个并行 goal:

  • goal 1:FishFreshNetV2 模型架构同步到 about.html(学术内容 + 视觉协调)

  • goal 2:前端下拉框 UI 优化 + 离线标签逻辑修复 + 模型版本文本修正

  • goal 3:PDF 导出功能重构(从零设计排版)

每个 goal 内部我会拆成多个子任务,TRAE 会在每轮对话开头复述"当前目标 + 已完成进度 + 待办项",这样即使隔了一天再回来,上下文也不会丢。比单纯堆 prompt 的好处是:goal 自带进度追踪和完成审计——它会对照原始目标逐条验证,漏了哪一项会主动提醒补完,而不是你说"做完了"它就信了。

5.6.2 skill 系统:把重复任务固化成"一键调用"

TRAE 的 skill 系统让我能把重复出现的任务封装成可复用的"技能"。我在项目里实际用到的 skill 包括:

  • frontend-design:用于前端视觉优化(卡片动画、下拉框样式、骨架屏),它的设计哲学比我自己写的 prompt 更专业,避免了"AI 生成式审美"——那种一眼就能看出来是 AI 写的页面。

  • webapp-testing:用 Playwright 做浏览器端功能测试,比手动点一遍靠谱。我用它验证了 PDF 导出、滑块交互、历史记录滑动删除等关键流程。

  • TRAE-security-review:用于执行代码安全扫描任务,审查合并请求和代码差异,提供漏洞风险的及时反馈。

skill 的真正价值不是"省事",而是把最佳实践固化下来。比如 frontend-design skill 内置了响应式设计、无障碍、动画降级等规范,我不用每次都重复交代一些基本常识。

5.6.3 两点反思

说实话,TRAE 的 goal 和 skill 并不是万能的:

  • goal 在任务特别模糊时(比如"做一个好用的网站")效果一般,它更适合目标明确但步骤复杂的场景。

  • skill 的学习成本不低,新手一开始不知道该调哪个——我的建议是先从 frontend-designwebapp-testing 这种通用型 skill 用起,再慢慢接触领域专用 skill。

但总的来说,/goal + skill 的组合,让我这样一个准大一学生能以接近专业团队的效率完成全栈开发——这才是 TRAE 真正的"能力运用",不是"AI 帮我写了多少行代码",而是"AI 让我能稳定地驾驭一个复杂项目"。


6 技术方案分享

6.1 技术栈选型

技术选型 选型理由
AI 模型 FishFreshNetV1(EfficientNet-B0 + CBAM)+ FishFreshNetV2(EfficientNet-B0 + Light CRA + ECA) 我独立研究的轻量化架构,V1 达 98.88% 准确率(4.216M 参数),V2 达 99.29%(4.095M 参数),V2 相对 V1 提升 0.41 个百分点
可解释性 Grad-CAM 类激活映射 视觉化模型关注区域,把黑盒变白盒
工作流 检测流程 + 置信度自适应交互(TRAE 开发) CNN 推理 + Grad-CAM + 规则化建议,前端三色分区兜底
后端 FastAPI + PyTorch + HF Spaces(TRAE 开发) 免费托管 + 全球可达 + Docker 化部署
前端 纯 HTML/CSS/JS(TRAE 开发) 零依赖零构建,代码完全可控
部署 GitHub Pages(前端) + HF Spaces(后端) 双免费托管,无备案需求
数据集 MFED(4800 张,4 环境组合) 开源至 Mendeley Data

6.2 FishFreshNetV1 模型架构

FishFreshNetV1 是我独立设计的轻量化、可解释的鱼类新鲜度评估框架。整体架构基于 EfficientNet-B0 主干网络,并在最后一个特征提取层(1280 输入通道)之后集成了 CBAM(Convolutional Block Attention Module)注意力机制。

6.2.1 EfficientNet-B0 主干

EfficientNet 通过复合缩放方法(compound scaling method)有效平衡网络深度、宽度和图像分辨率,在保持高精度的同时显著减少参数量。基础 EfficientNet-B0 采用移动倒置瓶颈卷积(MBConv)模块,在维持高特征提取能力的同时显著降低计算负担。我在 FishFreshNetV1 中丢弃了原始 EfficientNet-B0 的分类头,替换为自定义分类块——由自适应平均池化层、Dropout 层和线性全连接层组成——以缓解模型训练过程中的过拟合,并映射到三个新鲜度类别。

6.2.2 CBAM 双维度注意力机制

在实际的鱼类新鲜度评估中,采集的图像往往包含大量无关信息(泡沫箱、光照变化、无关鱼鳞等)。为了让神经网络学会聚焦关键的鱼眼区域,我在 EfficientNet-B0 主干网络的最后一个特征提取层之后集成了 CBAM。CBAM 是一个轻量级模块,沿两个不同维度依次推送注意力图:

  • 通道注意力子模块:利用最大池化和平均池化的输出,并将其输入到一个共享的多层感知机(MLP)。这一过程帮助模型推断哪些特征是真正有意义和具有区分度的。

  • 空间注意力子模块:沿通道轴执行池化操作,并利用卷积层生成空间图。这一机制帮助引导神经网络聚焦于特定区域(如鱼的瞳孔和角膜),同时抑制背景环境。

通过将注意力图与输入特征图相乘来自适应地细化特征,FishFreshNetV1 在模型大小和识别精度之间达到了良好的平衡。

6.3 FishFreshNetV2 模型架构

FishFreshNetV2 是我在 V1 基础上完成的学术升级版本。V2 的核心目标是在保持轻量化的前提下进一步提升精度与可解释性,关键改动有两点:用 ECA 替代 CBAM 作为通道注意力,并新增 Light CRA(Light Circular Region Attention)鱼眼专用区域注意力。

6.3.1 V2 整体架构

V2 的前向流程在 V1 的"骨干 → 注意力 → 分类头"基础上,插入了一级 Light CRA 区域注意力,形成"骨干 → ECA 通道注意力 → Light CRA 环形区域注意力 → 分类头"的四段式结构。

6.3.2 ECA 技术创新点解析

V1 使用的 CBAM[11]同时引入通道注意力子模块(共享 MLP)和空间注意力子模块(卷积层),会带来额外的参数开销。V2 改用 ECA-Net[12]提出的高效通道注意力,核心思想是:用一维卷积替代全连接 MLP,让相邻通道直接交互,避免降维带来的信息损失。具体来说,对全局平均池化后的通道描述子施加一个自适应核大小的一维卷积,核大小根据通道数自动确定(通道越多、核越大),再经 Sigmoid 激活生成通道权重。ECA 不引入任何通道降维参数,仅一个一维卷积核——真正做到了"零额外参数的注意力"。

6.3.3 ECA vs CBAM 对比

维度 CBAM[11] ECA[12]
通道注意力实现 共享 MLP(含降维) 一维卷积 Conv1D_k
空间注意力 单独子模块(卷积层) 无(仅通道维度)
额外参数开销 有(MLP + 卷积层) 零(仅 k 个权重)
跨通道交互 全局(MLP 全连接) 局部(k 邻域)
设计取舍 精度略高但增参数 精度持平且零参数

V2 选择 ECA 的核心理由是:ECA 在不引入额外参数的前提下,通道调制效果与 CBAM 相当;而在 V2 上,Light CRA 已经承担了区域注意力的职责,ECA 仅需做轻量通道调制即可,两者分工互补。

6.3.4 Light CRA 技术创新点解析

Light CRA(Light Circular Region Attention)是 V2 的核心原创模块,专门为鱼眼图像设计。其设计动机是:鱼眼天然近似圆形,腐败过程从瞳孔中心向外扩散(角膜浑浊、瞳孔边界模糊),不同半径环携带的新鲜度信号强弱不同。原始 CRA 通过完整的环形坐标变换与多头注意力建模这种几何先验,但参数高达 13.846M;Light CRA 通过"掩码分区 + 共享卷积"将参数压缩到仅 0.083M。

6.3.5 Light CRA 的核心思路

Light CRA 的设计围绕"让模型学会分区域关注鱼眼"展开:首先根据特征图上各位置到中心的归一化距离,将其划分为 N=3 个同心环(中心对应瞳孔、中环对应角膜、外环对应眼眶/背景);然后对每个环区域分别聚合特征描述子,通过一个共享的轻量卷积生成各环的注意力权重;最终以残差方式将各环的加权特征融合回主干特征图。环形数量 N=3 通过消融实验确定,正好对应鱼眼的三段生理结构。

6.3.6 为什么 Light CRA 有效?

它把"鱼眼是圆形"这一强先验以几乎零成本注入网络——3 个环的注意力权重只有极少参数,但强迫模型显式地区分瞳孔(中心环)、角膜边缘(中环)、眼眶/背景(外环)三个语义区域。

6.3.7 Light CRA vs 原始 CRA 对比

变体 参数量 FLOPs MFED 准确率 F1
无 CRA 4.011M 0.414G 98.88% 98.88%
Light CRA(V2 采用) 4.095M 0.414G 99.25% 99.25%
原始 CRA 13.846M 0.660G 98.79% 98.79%

Light CRA 仅增加 0.083M 参数(相对无 CRA 版本 +2.1%)即带来 +0.37% 准确率提升;而原始 CRA 增加 9.835M 参数(+245%)反而使准确率下降 0.09%——过大的参数量在小数据集上容易过拟合。说明在鱼眼这个任务上,用对几何先验比堆参数管用得多。

6.3.8 V1 vs V2 性能对比表

下表汇总 V1 与 V2 在 MFED 数据集上的核心性能(5 次独立运行平均值):

模型 准确率 (%) F1 (%) 参数 (M) FLOPs (G) 模型大小 (MB) 延迟 (ms/img)
FishFreshNetV1(基线) 98.88 98.88 4.216 0.414 16.08 4.71
FishFreshNetV2 99.29 99.29 4.095 0.414 15.62 5.31

V2 相对 V1 的关键提升:准确率 +0.41 个百分点(98.88% → 99.29%,p = 0.034),参数量 -0.121M(4.216M → 4.095M),模型大小 -0.46MB——在精度显著提升的同时实现了参数量与模型体积的双下降。

6.3.9 V1/V2 双模型部署说明

FreshEye 后端同时驻留 FishFreshNetV1 与 FishFreshNetV2 两个模型,通过前端模型选择器 + 后端置信度路由实现按场景自动切换:

  • FishFreshNetV2(默认主模型):EfficientNet-B0 + ECA + Light CRA,4.095M 参数,99.29% 准确率。适用于服务器端推理、高精度要求的监管/采购场景。对应 Session 22 的后端集成。

  • FishFreshNetV1(对照基线):EfficientNet-B0 + CBAM,4.216M 参数,98.88% 准确率。作为 V2 的对照基线与备用模型,对应复赛后端 Session 12 的初始集成。

两个模型在 Session 23 中通过 model_version 参数路由,在 Session 24 中通过前端模型选择器让用户手动切换;置信度极低时前端弹窗提示用户重新拍摄。

6.4 MFED 数据集

为验证 FishFreshNetV1/V2 在真实条件下的识别精度,我独立构建了多阶段鱼眼数据集(Multistage Fish Eyes Dataset, MFED)。数据集包含 4800 张图像,来自两种常见淡水鱼:稻花鱼(Cyprinus carpio var. Fanli)和鲫鱼(Carassius auratus)。为增强模型的泛化能力并保持其在环境干扰下的精度,图像采集在四种不同环境下进行:

  • 白光 + 菜板背景

  • 白光 + A4 纸背景

  • 暖黄光 + 菜板背景

  • 暖黄光 + A4 纸背景

不同背景和光源旨在引入真实世界环境,防止模型依赖单一背景进行学习。数据采集过程持续六天,每天从五个不同拍摄角度拍摄鱼的左右眼。在四种环境下,每条鱼每天共拍摄 40 张图像。因此,MFED 共包含 4800 张不同新鲜度等级的鱼眼图像,其中高度新鲜、新鲜、不新鲜三个类别各 1600 张。

分类标准(基于 GB 2733-2015 国标[15])

标签 TVB-N 指标(mg/100g) 鱼眼感官特征
高度新鲜 < 20(远低于限值) 角膜几乎无浑浊,瞳孔清晰明亮,晶体透明,鱼眼饱满凸出
新鲜 ≤ 20(符合国标) 角膜轻微浑浊,瞳孔可见但略模糊,晶体开始泛白
不新鲜 > 20(超标) 角膜严重浑浊,瞳孔变形或消失,晶体混浊发白,鱼眼平坦下陷

6.5 性能对比

我在 MFED 和公开的 FFE(The Freshness of Fish Eyes)数据集[8]上,将 FishFreshNetV1/V2 与主流模型进行了全面对比。FFE 数据集包含 8 种不同鱼类的 4392 张图像,用于测试模型的泛化能力。所有模型均使用 ImageNet 预训练权重初始化,独立训练和测试 5 次取平均值。

模型 参数/M FLOPs/G MFED 准确率 MFED 精确率 MFED 召回率 MFED F1 FFE 准确率 FFE F1
VGG16 134.27 15.47 98.08% 98.03% 98.13% 98.07% 77.40% 76.52%
ResNet18 11.18 1.82 98.67% 98.66% 98.67% 98.66% 79.36% 78.66%
MobileNetV2 2.23 0.33 98.54% 98.54% 98.54% 98.53% 79.59% 78.65%
EfficientNet-B0 4.01 0.41 98.96% 99.00% 98.91% 98.95% 81.64% 80.90%
FishFreshNetV1(本作品基线) 4.22 0.41 98.88% 98.88% 98.88% 98.88% 81.78% 81.20%
FishFreshNetV2(本作品) 4.10 0.41 99.29% 99.29% 99.29% 99.29% 81.18% 80.41%

6.5.1 关键发现:FishFreshNetV2 相对 V1 提升 0.41 个百分点(98.88% → 99.29%,p = 0.034),参数量从 4.22M 降至 4.10M——在精度显著提升的同时实现了参数量下降。与重量级模型 VGG16 相比,FishFreshNetV2 仅用其约 3% 的参数量即达到更高准确率。

FishFreshNetV2 在 V1 基础上完成了 ECA 替代 CBAM 与新增 Light CRA 两项核心改动,Light CRA 通过"掩码分区 + 共享轻量卷积"仅增加 0.083M 参数即带来 +0.37% 准确率提升(98.88% → 99.25%),验证了鱼眼几何先验的有效性。

6.5.2 与相关工作对比

研究 方法 准确率
Yildiz 等[7](VGG19 + ANN) 深度学习特征选择 + 人工神经网络分类 77.3%
Prasetyo 等[8](DSC bottleneck) 改进 MobileNetV1 瓶颈扩展 63.21%
本作品(FishFreshNetV1) EfficientNet-B0 + CBAM 98.88%
本作品(FishFreshNetV2) EfficientNet-B0 + Light CRA + ECA 99.29%

6.6 Grad-CAM 可解释性

为更好地展示模型的决策过程,我采用了梯度加权类激活映射(Grad-CAM)来可视化 FishFreshNetV1/V2 学习到的特征。Grad-CAM 利用从特定目标类流向 EfficientNet-B0 主干网络最终卷积层的梯度信息,生成粗粒度定位图。通过对这些梯度应用全局平均池化,计算每个特征通道的重要性权重,从而生成热力图。

  • 正确分类案例:红色高亮区域精准聚焦于鱼眼的瞳孔和角膜。这表明模型正确识别了鱼眼浑浊度作为分类的主要标准——角膜透明度和瞳孔形态是新鲜度的核心生物指标。

  • 错误分类案例:高激活区域发生了偏移,集中在眼周明亮的鱼鳞或镜面反光上。这一现象表明,强烈的背景反射干扰了模型的焦点注意力,导致模型错误地将这些高反射区域解读为角膜特征。

这也指出了我后续优化的方向:未来将引入受控混淆因子实验(如训练时人为模糊眼部区域),以强制模型学习严格的生理特征,避免利用伪相关关系。

6.7 检测流程与置信度自适应交互

FreshEye 的后端基于 FastAPI 构建了鱼眼新鲜度检测流程,核心是 FishFreshNetV1/V2 CNN 推理 + Grad-CAM 可解释性 + 规则化结构分析。前端根据模型输出的置信度,自适应呈现不同的交互反馈——模型不确定时主动提示用户重拍,而不是硬给一个结果。

6.7.1 检测流程


① 图片上传(前端支持 JPG/PNG/WebP,最大 25MB)

↓

② 图片校验(格式签名校验 + 尺寸上限 4096×4096 + 解码安全防护)

├─ 校验失败 → 返回错误提示 → END

└─ 校验通过 ↓

③ 模型路由(用户可选 FishFreshNetV1 或 V2,默认 V2;无效版本返回 422)

↓

④ CNN 新鲜度分类(FishFreshNetV1/V2 推理,输出三分类 + 置信度,结果带 60s 缓存)

↓

⑤ Grad-CAM 可视化(梯度加权类激活映射,生成热力图;失败降级为空热力图)

↓

⑥ 规则化结构分析(基于分类等级与知识库模板生成鱼眼外观 / 清澈度 / 颜色 / 纹理 / 质量指标描述)

↓

⑦ 建议生成(按分类等级匹配储存 / 食用 / 处理 / 安全警告 / 最佳实践 五大类规则模板)

↓

⑧ 报告生成(结构化报告 + PDF 导出)

↓

⑨ 前端置信度自适应展示(仪表盘三色分区 + 置信度徽标 + 低置信度警告)

↓

END

6.7.2 置信度自适应交互机制

置信度是整个交互的核心。前端根据模型输出的置信度,采用 0.8 / 0.6 双层阈值(None / NaN 归为低):

  • ≥ 0.8 高置信度:模型对结果非常确定,正常展示结果 + "高置信度直出"徽标,无警告——这是效率最高的路径。

  • 0.6 – 0.8 中置信度:模型有一定把握但不够确定,仪表盘显示黄色 + “中置信度·多区域融合"徽标,顶部黄色横幅提示"识别置信度中等,建议在光线充足环境重新拍摄”。

  • < 0.6 低置信度:模型对结果非常不确定,仪表盘显示红色 + 红色弹窗提示"检测到输入照片可能并非鱼眼图像,请确认上传的是清晰的鱼眼特写照片",提供"建议重新拍摄"按钮与"仍要查看结果"次按钮。

这个机制的意义在于:模型不确定的时候,不是硬给一个结果,而是老实告诉用户"这次不确定,建议重拍",这是对用户负责。前端是用户体验兜底——确保用户在任何置信度下都能得到恰当的反馈。

6.7.3 前端置信度交互分区

前端仪表盘采用 0.8/0.6 三色分区,警告横幅采用 0.75/0.6 双层阈值(用户体验优先):

置信度区间 仪表盘颜色 前端交互
≥ 80% 绿色 正常展示结果 + "高置信度直出"徽标,无警告
75% – 80% 黄色 黄色仪表盘 + "中置信度·多区域融合"徽标,无横幅警告
60% – 75% 黄色 黄色仪表盘 + 顶部黄色横幅"识别置信度中等,建议在光线充足环境重新拍摄" + "中置信度·多区域融合"徽标
< 60% 红色 红色仪表盘 + 红色弹窗":warning: 检测到输入照片可能并非鱼眼图像,请确认上传的是清晰的鱼眼特写照片" + "建议重新拍摄"按钮 + "仍要查看结果"次按钮 + "低置信度·建议重拍"徽标

6.7.4 建议生成 5 大类结构

系统基于分类等级与知识库规则模板,生成差异化的专业建议,输出 5 大类完整 JSON 结构:

  1. 储存建议(storage):温度、方法、保质时间、实用技巧

  2. 食用建议(consumption):最佳食用时间、推荐烹饪方式、搭配建议、烹饪技巧

  3. 处理建议(handling):处理步骤、清洗技巧、切割方式、去腥技巧

  4. 安全警告(safety_warnings):风险等级、安全警告、需关注的异常迹象

  5. 最佳实践(best_practices):综合最佳实践建议

前端 about.html 的处理建议区对齐这一结构,从初赛的 3 张简卡升级为 5 大类完整卡片,每类可折叠展开详情。

6.8 实验设置

所有模型训练在 Linux 系统上完成,PyTorch 2.8.0,CUDA 12.8,配备 1 块 NVIDIA RTX 5090 显卡。输入图像尺寸统一为 224×224,训练参数:batch size 512,Adam 优化器,初始学习率 3×10⁻⁴,权重衰减(weight decay)10⁻⁴,训练 60 轮(epochs),损失函数为交叉熵损失并采用标签平滑(label smoothing = 0.05)。所有模型均使用 ImageNet 预训练权重初始化,独立训练和测试 5 次取平均值。

6.9 参考文献与学术依据

  1. Food and Agriculture Organization (FAO). (2022). The State of World Fisheries and Aquaculture 2022: Towards Blue Transformation. Rome, FAO. https://doi.org/10.4060/cc0461en

  2. Gram, L., & Huss, H. H. (1996). Microbiological spoilage of fish and fish products. International Journal of Food Microbiology, 33(1), 121-137. Redirecting

  3. Hassoun, A., & Karoui, R. (2017). Quality evaluation of fish and other seafood by traditional and nondestructive instrumental methods. Critical Reviews in Food Science and Nutrition, 57(11), 2528-2539. https://doi.org/10.1080/10408398.2015.1037945

  4. Nollet, L. M. L., & Toldrá, F. (Eds.). (2010). Handbook of Seafood and Seafood Products Analysis. CRC Press.

  5. Dowlati, M., de la Guardia, M., & Mohtasebi, S. S. (2012). Application of machine-vision techniques to fish-quality assessment. TrAC Trends in Analytical Chemistry, 40, 168-179. Redirecting

  6. Lalabadi, H. M., Sadeghi, M., & Mireei, S. A. (2020). Fish freshness categorization from eyes and gills color features using multi-class artificial neural network and support vector machines. Aquacultural Engineering, 90, 102076. Redirecting

  7. Yildiz, M. B., Yasin, E. T., & Koklu, M. (2024). Fisheye freshness detection using common deep learning algorithms and machine learning methods with a developed mobile application. European Food Research and Technology, 250(7), 1919-1932. Fisheye freshness detection using common deep learning algorithms and machine learning methods with a developed mobile application | European Food Research and Technology | Springer Nature Link

  8. Prasetyo, E., Purbaningtyas, R., Adityo, R. D., Suciati, N., & Fatichah, C. (2022). Combining MobileNetV1 and depthwise separable convolution bottleneck with expansion for classifying the freshness of fish eyes. Information Processing in Agriculture, 9(4), 485-496. Redirecting

  9. Kılıçarslan, S., Çiçekliyurt, M. M. H., & Kılıçarslan, S. (2024). Fish freshness detection through artificial intelligence approaches: A comprehensive study. Turkish Journal of Agriculture-Food Science and Technology, 12(2), 290-295.

  10. Hamidy, S. M., Kuvvetli, Y., Sakarya, Y., Özkütük, S. T., & Özögül, Y. (2025). Deep learning-based prediction of fish freshness and purchasability using multi-angle image data. Foods, 15(1), 68. https://doi.org/10.3390/foods15010068

  11. Woo, S., Park, J., Lee, J.-Y., & Kweon, I. S. (2018). CBAM: Convolutional block attention module. Proceedings of the European Conference on Computer Vision (ECCV), 3-19.

  12. Wang, Q., Wu, B., Zhu, P., Li, P., Zuo, W., & Hu, Q. (2020). ECA-Net: Efficient channel attention for deep convolutional neural networks. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 11534-11542. https://doi.org/10.1109/CVPR42600.2020.01155

  13. Selvaraju, R. R., Cogswell, M., Das, A., Vedantam, R., Parikh, D., & Batra, D. (2017). Grad-CAM: Visual explanations from deep networks via gradient-based localization. Proceedings of the IEEE International Conference on Computer Vision (ICCV), 618-626. https://doi.org/10.1109/ICCV.2017.74

  14. Tan, M., & Le, Q. V. (2019). EfficientNet: Rethinking model scaling for convolutional neural networks. Proceedings of the 36th International Conference on Machine Learning (ICML), PMLR 97, 6105-6114.

  15. 国家卫生和计划生育委员会 (2015). GB 2733-2015 食品安全国家标准 鲜、冻动物性水产品. 中国标准出版社.


7 社会价值分析(关于我选择社会服务赛道的一点小看法)

7.1 独特价值主张:为什么是 FreshEye

市面上做"AI + 食品"的项目不少,但把"鱼眼 + 轻量化 AI + 可解释性 + 置信度自适应交互"四件事拧到一起的,目前我没有搜到第二个。这四件事缺一不可:

  • 选鱼眼作为检测入口:鱼眼角膜透明度、瞳孔形态是国际公认的鱼类新鲜度核心视觉指标[6],比鱼身色泽、鱼鳃颜色更稳定,也比化学指标便宜得多。但人眼分辨不出细微差距,只有 AI 能放大这种差异。

  • 轻量化做到极致:V2 仅 4.095M 参数、0.414G FLOPs,CPU 就能跑,HF Spaces 免费档够用。所以任何一个县城农贸市场、任何一个海岛渔村,只要有一台能上网的手机,就能用上专业级的初步判别能力——不需要 GPU,不需要实验室。

  • 可解释性不是装饰:Grad-CAM 热力图让用户看到"模型到底在看鱼眼哪里"。消费者、采购员、监管员拿到结果时,能同时拿到一份"为什么这么判"的视觉证据,这才敢信、才敢用、才敢拿去当凭证。

  • 置信度自适应交互兜底:前端根据模型置信度三色分区,模型不确定时主动提示"建议重拍",实在没把握就老实告诉用户"这次不确定"。这解决了 AI 工具最怕的"硬给一个错误结果"问题。

这四点组合起来,FreshEye 才能真正从论文走到菜市场。落地,才是一个项目最重要的目标。

7.2 受众规模与量化影响

产业链体量:根据《2024 中国渔业统计年鉴》,2023 年全国水产品总产量 7116 万吨,其中养殖产量 5565 万吨,捕捞产量 1551 万吨。海水产品产值过千亿,淡水产品过千亿,整个水产品产业链从捕捞 / 养殖 → 批发 → 零售 → 餐饮 → 消费终端,直接影响千万级从业者与 3 亿+ 城乡消费者

目标人群分层

  • 第一圈层(直接使用者):海鲜市场摊主(百万级)+ 餐饮采购人员(百万级)+ 基层市场监管人员(十万级)

  • 第二圈层(间接受益):3 亿+ 水产品消费者,尤其是缺乏经验、容易被骗的年轻消费者与老年消费者

  • 第三圈层(特殊场景):边远地区渔民、海岛驻守人员、海关口岸初筛人员

食安风险量化:水产品是食物中毒高发品类之一,变质水产品引发的食安事件占食品类事件约 15%。假设 FreshEye 能在消费终端拦截其中哪怕 1% 的问题产品,按 7116 万吨年产量与 3 亿消费者基数估算,潜在的食安暴露减少也是百万次量级。比起事后追溯、事后赔偿,事前花 10 秒拍张照片,社会成本几乎为零。

7.3 社会效益:四条具体路径

填平经验壁垒:「看鱼眼判新鲜度」是几十年经验积累的隐性知识,普通人没法习得。FreshEye 把这项知识变成了工具,让一个第一次买鱼的高中生,也能拥有老师傅级别的判别力。这是 AI 普惠在水产品这个具体场景里落了地。

降低食安事故:一个低成本、随手可用的视觉检测工具,能在「最后一公里」拦截大量问题产品。比起事后追溯,事前识别的社会价值大得多——一次食安事故的赔偿和声誉损失,往往远超检测工具本身的价值。

服务边远地区与基层:县乡农贸市场、海岛渔村、内陆偏远地区,专业质检设备和人员严重不足。FreshEye 只需一部能拍照的手机和浏览器,就能把一线城市专业检测机构级别的初步判别能力下沉到任何有网络的地方(无网络时还能走离线兜底)。这对应「健康中国 2030」和「乡村振兴」两大战略方向。

促进市场公平:买卖双方信息不对称是水产品市场长期痛点,消费者处于天然弱势。FreshEye 让消费者拥有独立判别能力,从机制上压缩了"以次充好"的生存空间,倒逼商户提升品质。这是我用技术手段促进市场诚信的一点小尝试。

7.4 与现有方案的差异化对比

维度 传统感官评估 化学检测 便携式仪器 现有 AI 论文 FreshEye
单次成本 免费 200-500 元 设备 5000-20000 元 N/A 免费
耗时 即时 2-24h 5-30min N/A <10s
破坏样品 部分破坏
可解释性 否(凭感觉) 部分 多数无
不确定时兜底 置信度自适应分支
工程化落地 完整闭环(模型→后端→前端→工作流)
使用门槛 N/A
偏远地区可用 N/A

简单说:化学检测准但贵且破坏样品,便携仪器要培训和投入,现有 AI 论文基本停在论文阶段不落地。FreshEye 是目前唯一一个同时做到"零成本、非破坏、可解释、不确定时主动兜底、且真正能被普通用户用起来"的方案。

7.5 可复制性与可扩展性

技术栈轻量:模型推理可在 CPU 上完成(HF Spaces 免费档即可),前端零依赖零构建。整个系统可在任何一台 4 核 4G 的服务器上本地化部署,无需 GPU,无需备案。

场景可迁移:鱼眼是视觉新鲜度最强信号,但同类技术路径完全可迁移到肉类色泽检测、果蔬成熟度判别、海鲜品种识别、水产病害初筛,一套架构能覆盖多个民生场景。

部署可标准化:HF Spaces Dockerfile + GitHub Pages 静态托管,部署流程完全开源可复刻。任何农贸市场、连锁超市、餐饮供应链都可以在一天内自建一套 FreshEye 实例。

面向 B 端 / G 端可扩展:当前是 C 端单点工具,未来可对接海鲜批发市场的批次台账系统、餐饮连锁的采购核验 API、市场监管的执法记录仪 APP,逐步从工具走向平台。

7.6 可持续运营路径

社会服务赛道的作品,最容易死在"做完就没人用"上。一个工具如果不能自己养活自己,谈长期社会价值就是空的。所以我从一开始就没把 FreshEye 当一次性比赛作品设计,而是按"能跑下去"的标准来规划——公益属性保住下限,运营收益撑起上限。

7.6.1 受益人群与覆盖规模

按《2024 中国渔业统计年鉴》数据,我国 2023 年水产品总产量 7116 万吨,涉及渔业从业人员 1632 万人,叠加水产批发零售、餐饮采购、基层市场监管群体,直接相关人群超 5000 万。其中:

  • 普通消费者:我国年人均水产品消费量约 14 公斤,城镇常住人口约 9.2 亿,这是 C 端的基本盘。

  • 海鲜商户与餐饮采购:全国水产批发市场摊位约 20 万个,连锁餐饮门店超 60 万家,采购核验是高频刚需。

  • 基层监管:全国市场监管所约 4.5 万个,基层执法长期缺"快检"工具,化学检测又慢又贵。

FreshEye 要做的,就是用一张鱼眼照片把这个 5000 万人群都接上同一套客观判别标准。

7.6.2 公益与营收双线分层

层级 受众 模式 定位
C 端公益层 普通消费者、渔民、偏远地区 永久免费,无广告 保社会价值底座——让买鱼的人不再凭手感
B 端运营层 海鲜批发、餐饮连锁、超市 按月订阅,含批量检测、台账导出、供应商评级 用商户付费反哺 C 端免费
G 端合作层 市场监管、海关口岸 定制部署 + 年度服务 接入监管平台,把工具变成基础设施

分层的目的不是收钱,是让公益能持续。C 端免费意味着每一次分析都在帮模型积累真实场景数据,数据反哺模型精度,精度反过来又成了 B/G 端愿意付费的理由。这是一个自我造血的闭环——公益不是靠情怀撑着,而是靠数据飞轮转起来。

7.6.3 差异化优势

别人要复制 FreshEye,不是抄个前端就能做到的,壁垒在四个地方叠着:

  1. 数据:MFED 数据集 4800+ 标注样本 + 持续积累的真实场景长尾数据(光照、角度、鱼种变异)。数据集虽已开源,但真实场景数据只有持续运营才攒得出来,后来者至少要 6 个月。

  2. 模型:Light CRA 环形区域注意力是为鱼眼任务量身设计的原创模块,不是通用注意力能直接替代的。ECA + Light CRA 在 4.095M 参数下做到 99.29% 准确率,这个精度/参数比短期难超。

  3. 工程:置信度自适应交互 + 双模型路由 + Service Worker 离线兜底,调通容易调好难——每个阈值都是反复试验出来的,不是写代码能抄走的。

  4. 信任:Grad-CAM 可解释性 + 环形统计定量验证,让用户看得见"模型在看哪里"。食品安全领域监管方不敢用黑盒工具出报告,FreshEye 能给"为什么这么判"的证据。

四层叠起来,不是某一项技术领先,而是「数据 + 模型 + 工程 + 信任」的系统性优势——这也是社会服务赛道最看重的"可复制性但有门槛"。


8 写在最后

这个项目对我而言不只是一次比赛参赛作品。

在这两个月中,我用 200+ 轮 TRAE 迭代把一个 AI 产品从 0 做到上线——建数据集、训练模型,到搭后端、写前端,全自己来。过程中我最大的体会是:AI 不会取代懂技术的人,反而会放大懂技术的人的生产力。但前提是,你得能把一个真实问题拆解清楚,让 AI 稳定执行。

如果这个项目能让一个买鱼的大叔少被骗一次,能让一个边远渔村的孩子多吃一顿新鲜的海鱼,能让一个基层市场监管员少跑一趟检测站,那它就完成了我想让它完成的事。

MFED 数据集我会持续扩充,也欢迎社区贡献数据!谢谢评审老师看到这里 :folded_hands:


初赛晋级作品链接


FreshEye © 2026 · 祈雨柒 · TRAE AI 创造力大赛 · 社会服务赛道

3 个赞

看起来很有科研的味道,ECA和CBAM都是比较老的注意力机制了,可以看一些比较新的注意力机制。

另外我需要提醒的是,如果产品涉及的你的学术论文或者是科研项目的话,最好还是不要把你的技术细节公布出来,你只需要展示你的产品功能和效果就行,不然万一遇到同行直接抢发你的工作,你就得不偿失了。

2 个赞

感谢感谢!我最近确实在研究注意力机制,只不过我目前还只能看懂一些比较基础的注意力机制 :face_with_monocle:,我也还在学习中,谢谢你的建议!

2 个赞

文章写的不错,可惜应用太理想,没啥用 :rofl:

1 个赞

啥时候能体验?我去菜市场走一圈。

1 个赞

哈哈哈 尽力而为了 :rofl:

1 个赞

等我再改改 :distorted_face: :sob:

1 个赞

看起来好厉害呀,很期待

2 个赞

哈哈哈 谢谢你呀~
Suggestion

1 个赞

哥们,最好补个训练成绩,包括但不限于AUC、F1、loss、KL验证。

2 个赞

我有个大胆的想法,决赛现场来一场鱼汤测评。

3 个赞