博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。
一、研究目的
本研究旨在构建一套基于Python编程语言与YOLO‑V11目标检测框架的蝴蝶品种识别系统,以期实现对多种蝴蝶物种的高效、准确分类,并为生态监测与生物多样性评估提供技术支持。当前国内外在昆虫图像识别领域已取得一定进展,但多数研究仍停留在传统卷积神经网络(CNN)或浅层特征提取方法上,导致在复杂背景、光照变化以及部分品种相似度高的场景下识别精度不足。与此同时,现有公开数据集普遍缺乏对蝴蝶多样性特征的细粒度标注,使得模型泛化能力受到限制。为填补上述空白,本研究将采用YOLO‑V11的轻量化结构,结合Python生态系统中成熟的数据预处理与增强工具,对收集自自然保护区、科研机构及公众贡献的高分辨率蝴蝶图像进行统一标注与划分。通过对模型进行多阶段训练与调优,力求在保持实时推理速度的前提下,将识别准确率提升至95%以上。研究还将探讨模型在不同光照、遮挡以及季节性变化条件下的鲁棒性,并对比传统CNN与YOLO‑V11在同一数据集上的表现差异。最终,本系统预期能够实现自动化、可持续的蝴蝶监测,为生态学研究提供可靠的数据支撑,并为相关领域的物种识别技术推广奠定基础。
二、研究意义
本研究的意义主要体现在生态学监测、物种保护与人工智能技术应用三大方面。首先,蝴蝶作为环境敏感指标,其种群变化能够直观反映生态系统健康状况;然而,传统人工识别方法耗时耗力且易受主观因素影响,导致数据采集周期长、覆盖面窄。通过构建基于Python与YOLO‑V11的自动化识别系统,可实现对海量蝴蝶图像的快速、精准分类,从而大幅提升监测频率与空间分辨率,为生态学家提供更为可靠的种群动态信息。其次,随着全球气候变化与人类活动导致物种分布范围不断重塑,及时掌握各品种的分布情况已成为制定保护策略的前提。该系统能够在不同光照、背景复杂度及季节性变化条件下保持高识别准确率,为区域性保护区管理者提供实时决策支持,并可与GIS平台结合,实现空间可视化与趋势预测。再次,本研究利用YOLO‑V11轻量化网络架构,兼顾模型精度与推理速度,可在资源受限的移动终端或嵌入式设备上部署,使得现场科研人员或志愿者能够随时采集并即时分析蝴蝶图像,极大降低技术门槛,促进公众参与科学研究。最后,该系统的开放性与可扩展性为后续多物种识别任务提供了范例,可通过迁移学习与数据共享机制,推广至其他昆虫或小型动物的监测领域,从而推动生物多样性保护工作的整体技术升级。综上所述,本研究不仅在理论上丰富了基于深度学习的细粒度分类方法,也在实践中为生态监测与物种保护提供了可操作、可持续的技术方案。
三、国内外研究现状
国内外在昆虫图像识别领域的研究始于对传统手工特征提取方法的探索,随后随着深度学习技术的兴起,卷积神经网络(CNN)成为主流研究方向。早期工作多采用SIFT、HOG等局部特征与支持向量机(SVM)相结合的方法,在蝴蝶种类识别上取得了有限的成功,但受限于特征表达能力不足,准确率难以突破80%。随着AlexNet、VGG、ResNet等深层网络的提出,研究者开始利用迁移学习对预训练模型进行微调,以适应昆虫图像的细粒度分类任务。国内学者在此基础上进一步引入注意力机制和多尺度特征融合,显著提升了对相似种类的区分能力,并在公开数据集ButterflyNet上实现了90%以上的Top‑1准确率。与此同时,国外研究者聚焦于大规模数据集构建与标注工作,iNaturalist、Biodiversity Image Database等平台为深度学习模型提供了海量高质量样本,为细粒度识别奠定了基础。
近年来,目标检测框架的快速发展为实时昆虫识别提供了新的技术路径。YOLO系列模型从YOLOv1到YOLOv8不断改进网络结构与训练策略,显著提升了检测速度与精度。国内团队在此基础上针对蝴蝶图像的特定需求,提出了轻量化的YOLO‑V5s改进版本,并通过数据增强技术(随机裁剪、颜色抖动、混合图像)解决了样本不均衡问题。实验结果表明,该模型在ButterflyNet测试集上实现了mAP达到0.88,推理速度超过30FPS,满足现场监测与移动端部署需求。国外研究者则将YOLO与Transformer相结合,提出YOLO‑ViT等混合模型,在细粒度识别任务中取得了更高的分辨率和鲁棒性。除此之外,一些工作尝试将多任务学习框架应用于蝴蝶种类与生命周期阶段的联合预测,进一步提升了模型对复杂场景的适应能力。
在数据资源方面,国内外仍面临样本稀缺与标注成本高昂的问题。为此,研究者提出了基于生成对抗网络(GAN)的数据扩增方法,以合成多样化的蝴蝶图像补充训练集;同时,Few‑Shot Learning技术被用于解决罕见种类的识别挑战。国外实验表明,在仅提供10张样本的前提下,基于Meta‑Learning的Prototypical Networks可实现超过70%的识别准确率。国内学者则结合领域自适应技术,将模型从实验室数据迁移到野外真实环境,实现了跨域泛化性能的显著提升。尽管如此,当前研究仍缺乏统一、公开的高质量蝴蝶图像数据库,导致不同实验结果难以直接比较;此外,模型可解释性与推理透明度亦是未来研究的重要方向。
总体而言,国内外在蝴蝶品种识别领域已取得显著进展,主要研究方向集中于深度卷积网络、目标检测框架以及数据增强与迁移学习技术。通过引入轻量化模型、注意力机制、多任务学习以及生成式数据扩增,研究者在准确率与实时性之间实现了良好平衡。然而,样本稀缺、跨域适应与模型可解释性等问题仍亟待解决,为后续研究提供了丰富的挑战与机遇。
四、预期达到目标及解决的关键问题
本研究的预期目标主要集中在构建一套高效、准确且可部署的蝴蝶品种识别系统。首先,系统应实现对常见与稀有蝴蝶种类的实时检测与分类,目标准确率需达到95%以上,并在标准数据集上取得mAP不低于0.90;其次,模型推理速度需满足移动端部署要求,帧率不低于30FPS,以支持现场监测与快速响应;再次,系统应具备良好的可扩展性,能够通过迁移学习轻松适配不同生态环境与图像采集条件。通过上述目标的实现,可为生态学研究提供高质量的种群监测数据,为生物多样性保护与环境评估提供技术支持。
在实现上述目标的过程中,系统将采用Python编程语言与YOLO‑V11目标检测框架,结合数据增强、轻量化网络设计以及多尺度特征融合技术,以提升模型对小目标、复杂背景及光照变化的鲁棒性。同时,将引入细粒度分类模块,对检测框内的图像进行高精度识别,并通过多任务学习实现种类与生命周期阶段的联合预测,从而进一步提升系统的实用价值。系统还将集成模型可解释性工具,提供特征可视化与决策依据,满足科研人员对结果透明度的需求。
然而,在实现过程中仍面临若干关键问题。首先,蝴蝶图像数据稀缺且标注成本高昂,导致训练集规模有限,易出现过拟合与泛化不足;其次,跨域适应是主要挑战之一,实验室采集的高质量图像与野外真实环境中的光照、遮挡差异显著,模型在迁移时精度下降;再次,小目标检测与类别不平衡问题突出,稀有种类样本不足导致识别率低;最后,模型解释性与部署成本也是重要考量,需要在保持高精度的同时控制模型参数量与计算资源。针对这些关键问题,本研究将通过生成式数据扩增、领域自适应技术、少样本学习以及模型剪枝等方法进行系统性解决,以确保最终系统在理论与实践中的可靠性与可持续性。
五、研究内容
本研究围绕基于Python与YOLO‑V11的蝴蝶品种识别系统展开,整体研究内容可分为数据准备、模型设计与训练、性能优化与评估以及系统集成与部署四大模块。首先,在数据准备阶段,将收集来自自然保护区、科研机构及公众贡献的高分辨率蝴蝶图像,并对其进行统一预处理,包括尺寸归一化、色彩空间转换与噪声去除;随后,利用专业标注工具对图像中的蝴蝶目标进行精确框选与品种标签,构建包含多种常见与稀有品种的细粒度数据集,并对数据进行划分为训练集、验证集与测试集。为解决样本不均衡问题,将采用基于生成对抗网络(GAN)的合成图像技术,生成多样化的蝴蝶图像以增强稀有品种的样本量,同时引入混合数据增强策略(随机裁剪、颜色抖动、尺度变换)进一步提升模型鲁棒性。
在模型设计与训练模块中,核心技术采用YOLO‑V11目标检测框架,其轻量化特征提取网络与高效的预测头结构能够兼顾精度与速度。为适应蝴蝶小目标检测的特殊需求,将对YOLO‑V11的骨干网络进行多尺度特征融合改进,并在预测层引入注意力机制,以突出关键纹理特征;此外,加入细粒度分类分支,对检测框内图像进行品种级别的识别,采用多任务学习策略共享特征表示,从而实现目标检测与分类的协同优化。训练阶段将采用迁移学习方法,先在大规模通用图像数据集上预训练模型,再在蝴蝶数据集上微调;同时利用自适应学习率与梯度裁剪技术防止梯度爆炸,确保模型收敛稳定。
性能优化与评估模块聚焦于提升模型的推理效率与泛化能力。针对移动端部署需求,将对训练好的模型进行参数剪枝与量化操作,减少模型大小并降低算力消耗;同时引入知识蒸馏技术,将大模型的预测知识迁移至轻量化学生模型,以保持高精度。评估方面,将采用平均精度均值(mAP)、Top‑1/Top‑5准确率、召回率与F1分数等多维指标,对比传统CNN、YOLO‑V5以及YOLO‑V11改进版本在蝴蝶数据集上的表现;并通过交叉验证与跨域测试评估模型的泛化能力。为提升结果解释性,将集成Grad‑CAM等可视化工具,展示模型关注的关键区域,为科研人员提供决策依据。
系统集成与部署模块则将上述训练好的模型嵌入Python环境,构建完整的图像采集、预处理、目标检测与分类推理流水线;通过Flask或FastAPI框架实现RESTful接口,支持云端与边缘设备的统一调用;同时开发移动端应用(Android/iOS)利用TensorFlow Lite或ONNX Runtime进行模型推理,满足现场快速监测需求。系统将提供可视化仪表盘,实时展示检测结果、品种分布与统计信息,并支持数据回传与持续学习机制,以实现模型在线更新与性能提升。通过上述四大模块的协同工作,本研究将实现一套高效、准确且易于部署的蝴蝶品种识别系统,为生态监测与生物多样性保护提供坚实技术支撑。
六、需求分析
用户需求方面,本研究面向生态学家、自然保护区管理者、昆虫学研究者以及热衷于自然观察的公众志愿者。首先,用户期望系统能够在现场快速获取蝴蝶图像并实现即时识别,以便及时掌握种群动态与分布信息;其次,鉴于蝴蝶种类繁多且相似度高,用户对识别准确率提出严苛要求,通常要求整体精度不低于95%,误检率保持在1%以内;再次,由于现场环境光照、背景复杂度及设备性能差异,用户需要系统具备良好的鲁棒性与适应性,并能够在资源受限的移动终端或嵌入式设备上稳定运行;此外,用户对系统的易用性与可维护性也有明确需求,期望通过简洁直观的图形界面或移动应用完成图像上传、结果查看与反馈提交;最后,为降低使用门槛,用户希望系统支持离线模式,并提供必要的技术文档与培训资料,以便在缺乏网络环境的偏远地区也能顺利部署。
功能需求方面,系统需实现完整的数据采集、处理、模型推理与结果呈现四大功能模块。数据采集模块应支持多种图像输入方式,包括摄像头实时流、手机拍照或批量文件上传,并对图像进行自动裁剪与尺寸归一化;预处理模块需实现色彩空间转换、去噪、光照补偿与数据增强(随机裁剪、旋转、颜色抖动等),以提升模型泛化能力;目标检测与分类模块采用YOLO‑V11轻量化网络,包含多尺度特征融合与注意力机制,能够在单帧图像中同时完成目标定位与品种识别,并通过多任务学习共享特征以降低计算成本;后处理模块需对检测结果进行置信度阈值筛选、非极大抑制以及类别概率归一化,并提供可视化标注框与识别标签;系统还应具备模型训练与微调功能,支持迁移学习、少样本学习与领域自适应,并通过交叉验证自动评估模型性能;部署接口模块需提供RESTful API与SDK,支持云端服务调用与边缘设备离线推理,并通过TensorFlow Lite或ONNX Runtime实现模型压缩与加速;最后,系统必须具备安全与隐私保护措施,包括数据加密传输、访问权限控制以及日志审计,以满足科研数据管理规范。
七、可行性分析
经济可行性方面,本研究所需的主要成本包括数据采集与标注、计算资源以及后期维护与升级。数据采集可以利用已有的自然保护区监测设备与公众贡献的手机拍照,降低硬件投入;标注工作则可通过众包平台或志愿者团队完成,采用半自动化工具减少人工成本。计算资源方面,YOLO‑V11轻量化模型可在中等配置的GPU服务器或云端实例上训练,单次训练成本预计在数千元人民币左右;推理阶段则可部署至移动端或边缘设备,进一步降低运营费用。相较于传统人工监测方法,本系统能够显著提升检测频率与覆盖范围,长期来看将为生态保护区节省人力与时间成本,并为科研机构提供高质量的数据支持,从而具备良好的经济回报潜力。
社会可行性方面,该系统能够满足生态学家、自然保护区管理者以及公众志愿者对实时、精准蝴蝶监测的需求。通过移动端应用与在线平台,公众可以参与数据采集与反馈,促进科普教育与社区参与,提升社会对生物多样性保护的认知与支持。系统采用开源技术栈,易于本地化部署,可在偏远地区实现离线使用,避免网络不稳定导致的监测中断。与此同时,需要关注数据隐私与安全问题,尤其是涉及人类拍摄地点的位置信息,应通过加密传输与访问控制保障用户隐私。若能得到政府环保部门与科研机构的认可,将进一步提升系统在社会层面的接受度与推广力度。
技术可行性方面,Python生态系统提供了丰富的深度学习框架(如PyTorch、TensorFlow)与图像处理库(OpenCV、Pillow),使得YOLO‑V11模型的实现与调优变得相对简便。YOLO‑V11已在公开数据集上表现出优秀的实时检测性能,其轻量化结构适合在GPU或CPU上高效推理,满足现场部署需求。数据方面,国内外已有ButterflyNet、iNaturalist等蝴蝶图像数据库,可为模型预训练与评估提供充足样本;若数据不足,可通过生成对抗网络进行合成扩增,解决稀有种类样本不足的问题。算法层面,多尺度特征融合与注意力机制已在细粒度识别任务中得到验证,可进一步提升模型对小目标与相似纹理的辨识能力。集成层面,系统可通过RESTful API或SDK实现与现有生态监测平台的无缝对接,支持云端与边缘端双重部署。综上所述,从技术实现、资源可获取性以及算法成熟度来看,本研究具备充分的技术可行性。
八、功能分析
系统功能模块可划分为六大核心部分,分别为数据采集与预处理、模型推理、后处理与结果展示、数据管理与模型维护、接口与部署以及用户交互界面。每一模块在整体架构中承担特定职责,并通过标准化接口实现无缝协作。
数据采集与预处理模块负责收集原始图像并进行统一格式化。该模块支持多种输入方式,包括现场摄像头实时流、移动设备拍照以及批量文件上传;在接收图像后,系统自动执行尺寸归一化、色彩空间转换(如RGB转YUV)与噪声抑制,并根据光照条件进行自适应亮度补偿;随后采用数据增强技术(随机裁剪、旋转、颜色抖动、尺度变换)生成多样化训练样本,以提升模型对复杂背景与光照变化的鲁棒性。预处理完成后,图像被封装为标准张量供后续推理使用。
模型推理模块是系统的核心,基于YOLO‑V11轻量化目标检测框架实现。该模块首先利用多尺度特征融合网络提取图像特征,并通过注意力机制聚焦关键纹理信息;随后在预测头中并行完成目标定位与品种分类任务,输出包含边界框坐标、置信度以及类别概率的检测结果。为兼顾速度与精度,模型采用混合精度训练与推理,并支持GPU或CPU双通道运行。推理结果以结构化JSON格式返回给后处理模块。
后处理与结果展示模块负责对原始检测输出进行筛选与可视化。该模块首先根据置信度阈值过滤低概率框,并通过非极大抑制消除重叠;随后对每个检测框内的图像进行细粒度分类概率归一化,生成最终品种标签;最后将检测结果与原图叠加生成可视化图像,并在用户界面中展示边界框、类别与置信度信息。该模块亦支持批量处理与实时推理两种模式,以满足不同使用场景。
数据管理与模型维护模块负责存储与更新系统所需的数据资源。该模块维护训练集、验证集与测试集的版本化数据库,并记录每一次模型训练的超参数、评估指标与日志;通过持续学习机制,系统可根据新采集的数据自动触发微调或增量学习,保证模型在环境变化中的适应性;此外,该模块提供模型压缩与量化工具,以生成轻量化部署包供移动端使用。
接口与部署模块提供统一的服务访问层。通过RESTful API,外部系统可提交图像并获取推理结果;同时提供SDK(Python、JavaScript)供内部应用调用;在云端部署时,模块支持负载均衡与弹性伸缩;在边缘设备上,则通过TensorFlow Lite或ONNX Runtime执行模型推理,并通过本地缓存实现离线运行。该模块亦负责安全认证、访问控制与日志审计,确保数据传输与服务调用的合规性。
用户交互界面模块面向终端用户,提供直观友好的图形界面或移动应用。界面支持摄像头实时预览、照片上传、结果查看与历史记录查询;在结果页面,用户可查看检测框、品种标签与置信度,并可对误检或漏检进行人工标注反馈;系统将反馈数据回传至数据管理模块,用于后续模型改进。界面亦提供设置选项(如阈值调节、语言切换)与帮助文档,降低使用门槛并提升用户体验。
九、数据库设计
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
---|---|---|---|---|---
users.id | 用户编号 | 36 | CHAR | PK | UUID主键,唯一标识用户
users.username | 用户名 | 50 | VARCHAR(50) | | 登录名,唯一约束
users.email | 邮箱地址 | 100 | VARCHAR(100) | | 用于通知与密码重置
users.password_hash | 密码哈希值 | 255 | VARCHAR(255) | | 存储加密后的密码
users.role | 用户角色 | 20 | VARCHAR(20) | | 如admin、researcher、volunteer
users.created_at | 创建时间 | 19 | DATETIME(6) | | 自动生成
images.id | 图像编号 | 36 | CHAR | PK | UUID主键,唯一标识图像
images.user_id | 上传者编号 | 36 | CHAR(36) | FK (users.id) | 外键关联用户表
images.file_path | 文件存储路径 | 255 | VARCHAR(255) | | 本地或云端存储位置
images.original_name | 原始文件名 | 255 | VARCHAR(255) | | 上传时的文件名
images.width | 图像宽度(像素) | 10 | INT UNSIGNED | |
images.height | 图像高度(像素) | 10 | INT UNSIGNED | |
images.upload_time | 上传时间 | 19 | DATETIME(6) | |
annotations.id | 注释编号 | 36 | CHAR(36) | PK |
annotations.image_id| 图像编号|36|CHAR(36)|FK(images.id)|关联图像表
annotations.bbox_x| 边界框左上角X坐标|10|INT UNSIGNED||
annotations.bbox_y| 边界框左上角Y坐标|10|INT UNSIGNED||
annotations.bbox_width| 边界框宽度|10|INT UNSIGNED||
annotations.bbox_height| 边界框高度 |10 | INT UNSIGNED | |
annotations.species | 标注物种名称 | 50 | VARCHAR(50) | |
annotations.created_at| 创建时间 | 19 | DATETIME(6) | |
detection_results.id| 检测结果编号|36|CHAR(36)|PK||
detection_results.image_id| 图像编号|36|CHAR(36)|FK(images.id)|关联图像表
detection_results.model_version_id| 模型版本编号 |36 | CHAR(36) | FK (model_versions.id) | 关联模型版本表
detection_results.bbox_x| 边界框左上角X坐标|10|INT UNSIGNED||
detection_results.bbox_y| 边界框左上角Y坐标|10|INT UNSIGNED||
detection_results.bbox_width| 边界框宽度 |10 | INT UNSIGNED | |
detection_results.bbox_height | 边界框高度 |10 | INT UNSIGNED | |
detection_results.species| 识别物种名称|50|VARCHAR(50)||
detection_results.confidence| 置信度分数|5|DECIMAL(4,3)||
detection_results.created_at| 创建时间 |19 | DATETIME(6) | |
models.id | 模型编号 |36 | CHAR(36) | PK | UUID主键,唯一标识模型
models.name | 模型名称 |50 | VARCHAR(50) | |
models.description| 模型描述|255|VARCHAR(255)| |
models.created_at| 创建时间|19|DATETIME(6)| |
model_versions.id | 版本编号 |36 | CHAR(36) | PK |
model_versions.model_id | 模型编号 |36 | CHAR(36) | FK(models.id) |
model_versions.version_tag | 版本标签(如v1.0)|20|VARCHAR(20)| |
model_versions.train_data_id| 训练数据集编号|36|CHAR(36)|FK(train_datasets.id)|
model_versions.metrics | 评估指标(JSON)|5000|TEXT||
model_versions.created_at | 创建时间 |19 | DATETIME(6) | |
train_datasets.id | 数据集编号 |36 | CHAR(36) | PK |
train_datasets.name| 数据集名称|50|VARCHAR(50)| |
train_datasets.description| 数据集描述|255|VARCHAR(255)| |
train_datasets.created_at| 创建时间|19|DATETIME(6)| |
feedbacks.id | 反馈编号 |36 | CHAR(36) | PK |
feedbacks.user_id | 用户编号 |36 | CHAR(36) | FK(users.id) |
feedbacks.image_id | 图像编号 |36 | CHAR(36) | FK(images.id) |
feedbacks.detection_result_id| 检测结果编号|36|CHAR(36)|FK(detection_results.id)|
feedbacks.correct_species| 正确物种名称|50|VARCHAR(50)| |
feedbacks.is_correct | 是否正确(1/0) |1 | TINYINT(1) | |
feedbacks.comment | 备注说明 |500 | TEXT | |
feedbacks.created_at| 创建时间|19|DATETIME(6)| |
以上表结构遵循第三范式,避免冗余并通过外键维护数据完整性。
十、建表语句
CREATE DATABASE IF NOT EXISTS butterfly_recognition CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE butterfly_recognition;
-- 用户表
CREATE TABLE IF NOT EXISTS users (
id CHAR(36) NOT NULL COMMENT '用户编号',
username VARCHAR(50) NOT NULL COMMENT '用户名',
email VARCHAR(100) NOT NULL COMMENT '邮箱地址',
password_hash VARCHAR(255) NOT NULL COMMENT '密码哈希值',
role VARCHAR(20) NOT NULL DEFAULT 'volunteer' COMMENT '用户角色',
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '创建时间',
PRIMARY KEY (id),
UNIQUE KEY uq_users_username (username),
UNIQUE KEY uq_users_email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';
-- 图像表
CREATE TABLE IF NOT EXISTS images (
id CHAR(36) NOT NULL COMMENT '图像编号',
user_id CHAR(36) NOT NULL COMMENT '上传者编号',
file_path VARCHAR(255) NOT NULL COMMENT '文件存储路径',
original_name VARCHAR(255) NOT NULL COMMENT '原始文件名',
width INT UNSIGNED NOT NULL COMMENT '图像宽度(像素)',
height INT UNSIGNED NOT NULL COMMENT '图像高度(像素)',
upload_time DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '上传时间',
PRIMARY KEY (id),
KEY idx_images_user_id (user_id),
CONSTRAINT fk_images_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='图像信息表';
-- 注释表
CREATE TABLE IF NOT EXISTS annotations (
id CHAR(36) NOT NULL COMMENT '注释编号',
image_id CHAR(36) NOT NULL COMMENT '图像编号',
bbox_x INT UNSIGNED NOT NULL COMMENT '边界框左上角X坐标',
bbox_y INT UNSIGNED NOT NULL COMMENT '边界框左上角Y坐标',
bbox_width INT UNSIGNED NOT NULL COMMENT '边界框宽度',
bbox_height INT UNSIGNED NOT NULL COMMENT '边界框高度',
species VARCHAR(50) NOT NULL COMMENT '标注物种名称',
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '创建时间',
PRIMARY KEY (id),
KEY idx_annotations_image_id (image_id),
CONSTRAINT fk_annotations_image_id FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='图像注释表';
-- 检测结果表
CREATE TABLE IF NOT EXISTS detection_results (
id CHAR(36) NOT NULL COMMENT '检测结果编号',
image_id CHAR(36) NOT NULL COMMENT '图像编号',
model_version_id CHAR(36) NOT NULL COMMENT '模型版本编号',
bbox_x INT UNSIGNED NOT NULL COMMENT '边界框左上角X坐标',
bbox_y INT UNSIGNED NOT NULL COMMENT '边界框左上角Y坐标',
bbox_width INT UNSIGNED NOT NULL COMMENT '边界框宽度',
bbox_height INT UNSIGNED NOT NULL COMMENT '边界框高度',
species VARCHAR(50) NOT NULL COMMENT '识别物种名称',
confidence DECIMAL(4,3) NOT NULL COMMENT '置信度分数',
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '创建时间',
PRIMARY KEY (id),
KEY idx_detection_results_image_id (image_id),
KEY idx_detection_results_model_version_id (model_version_id),
CONSTRAINT fk_detection_results_image_id FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_detection_results_model_version_id FOREIGN KEY (model_version_id) REFERENCES model_versions(id) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='检测结果表';
-- 模型表
CREATE TABLE IF NOT EXISTS models (
id CHAR(36) NOT NULL COMMENT '模型编号',
name VARCHAR(50) NOT NULL COMMENT '模型名称',
description VARCHAR(255) DEFAULT NULL COMMENT '模型描述',
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '创建时间',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='模型信息表';
-- 模型版本表
CREATE TABLE IF NOT EXISTS model_versions (
id CHAR(36) NOT NULL COMMENT '版本编号',
model_id CHAR(36) NOT NULL COMMENT '模型编号',
version_tag VARCHAR(20) NOT NULL COMMENT '版本标签(如v1.0)',
train_data_id CHAR(36) DEFAULT NULL COMMENT '训练数据集编号',
metrics TEXT DEFAULT NULL COMMENT '评估指标(JSON)',
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '创建时间',
PRIMARY KEY (id),
KEY idx_model_versions_model_id (model_id),
KEY idx_model_versions_train_data_id (train_data_id),
CONSTRAINT fk_model_versions_model_id FOREIGN KEY (model_id) REFERENCES models(id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_model_versions_train_data_id FOREIGN KEY (train_data_id) REFERENCES train_datasets(id) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='模型版本信息表';
-- 训练数据集表
CREATE TABLE IF NOT EXISTS train_datasets (
id CHAR(36) NOT NULL COMMENT '数据集编号',
name VARCHAR(50) NOT NULL COMMENT '数据集名称',
description VARCHAR(255) DEFAULT NULL COMMENT '数据集描述',
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '创建时间',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='训练数据集表';
-- 反馈表
CREATE TABLE IF NOT EXISTS feedbacks (
id CHAR(36) NOT NULL COMMENT '反馈编号',
user_id CHAR(36) NOT NULL COMMENT '用户编号',
image_id CHAR(36) NOT NULL COMMENT '图像编号',
detection_result_id CHAR(36) DEFAULT NULL COMMENT '检测结果编号',
correct_species VARCHAR(50) DEFAULT NULL COMMENT '正确物种名称',
is_correct TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否正确(1/0)',
comment TEXT DEFAULT NULL COMMENT '备注说明',
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '创建时间',
PRIMARY KEY (id),
KEY idx_feedbacks_user_id (user_id),
KEY idx_feedbacks_image_id (image_id),
KEY idx_feedbacks_detection_result_id (detection_result_id),
CONSTRAINT fk_feedbacks_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_feedbacks_image_id FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_feedbacks_detection_result_id FOREIGN KEY (detection_result_id) REFERENCES detection_results(id) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户反馈表';
下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看下方👇🏻获取联系方式👇🏻