欢度中秋节!从零开始实现一个月饼检测器(一)

简介: 欢度中秋节!从零开始实现一个月饼检测器

image.png

大家好,马上要到中秋节了,今天给大家分享一个非常适合新手的Ai小项目—月饼🥮检测器,跟着我的博文,我会带你一步一步的从零开始实现属于自己的月饼🥮检测器

第一步:准备一些月饼图片


image.png

我这里让朋友帮忙爬取了600张,清洗筛选后最终得到了304张

第二步:标注数据


由于Labelimg和Labelme安装起来比较麻烦,所以这次我选择使用make sense:https://www.makesense.ai

这是一款在线标注数据集的工具,用起来非常的方便

进入网页后点击Get Started开始使用


dfb7271d1f8c47d5b499479fe368996d.png

首先点击Drop images然后Ctrl+A选中整个数据集里面的图片

image.png

随后添加标签信息,因为我这里只检测月饼一类,所以只添加一个标签 Moon Cake

image.png

随后就进入了漫长的标注环节,这里大家一定要认真标注,不然对最终模型的影响还是很大的

8fb9ebeefea845ad9e81ce68f66c2a0d.png

image.png

大约3个小时以后就标注完毕了。。。。

我们点击Action->Export Annotation 导出yolo格式的标签文件

f4d3165360fd468486afddfbfee2f632.png

导出之后的标签文件就是这个样子的

image.png

第三步:划分数据集


导出后按一定比例划分训练集和验证集,我这里训练集选择了273张图片,验证集选择了31张图片

按照以下格式放置:

image.png

数据集准备好之后就可以着手训练模型啦

第四步:训练模型


我们这次选择yolov5模型作为基线训练


首先去yolov5的官方项目里下载代码:https://github.com/ultralytics/yolov5


也可以使用我个人基于yolov5官方项目改进的项目Yolov5_Magic:https://github.com/WangQvQ/Yolov5_Magic


我这里选择我个人改进的yolov5项目


首先在data的文件夹里新建一个MoonCake.yaml,我们要在这个MoonCake.yaml文件里放上我们数据集的路径和类别信息

image.png

MoonCake.yaml我们按照如下的格式书写,因为没有划分测试集,所以这里我们可以不写test的路径

新手我推荐直接写绝对路径,这样可以减少一些错误

image.png

接下来我们在项目里找到train.py ,在--data这里放上我们刚刚写好的MoonCake.yaml的路径


因为数据集比较少,所以我这里选择了轻量化的主干网络shufflenetv2,如果你选择的是我的代码,那么你会在models里发现一个写好的配置文件yolov5_ShuffleNetv2.yaml,如果你不选择我的代码,那么你使用默认的yolov5s就可以了;

image.png

所以在这里放上yolov5_ShuffleNetv2的路径,当然用默认的也是可以的

image.png

随后我们就可以开始训练模型啦

各个参数更加详细的解释可以看我的其它博文:手把手带你调参Yolo v5 (v6.1)(二)


参数简要说明:

–weights:初始化的权重文件的路径地址

–cfg:模型yaml文件的路径地址

–data:数据yaml文件的路径地址

–hyp:超参数文件路径地址

–epochs:训练轮次

–batch-size:喂入批次文件的多少

–img-size:输入图片尺寸

–rect:是否采用矩形训练,默认False

–resume:接着打断训练上次的结果接着训练

–nosave:不保存模型,默认False

–notest:不进行test,默认False

–noautoanchor:不自动调整anchor,默认False

–evolve:是否进行超参数进化,默认False

–bucket:谷歌云盘bucket,一般不会用到

–cache-images:是否提前缓存图片到内存,以加快训练速度,默认False

–image-weights:使用加权图像选择进行训练

–device:训练的设备,cpu;0(表示一个gpu设备cuda:0);0,1,2,3(多个gpu设备)

–multi-scale:是否进行多尺度训练,默认False

–single-cls:数据集是否只有一个类别,默认False

–adam:是否使用adam优化器

–sync-bn:是否使用跨卡同步BN,在DDP模式使用

–local_rank:DDP参数,请勿修改

–workers:最大工作核心数

–project:训练模型的保存位置

–name:模型保存的目录名称

–exist-ok:模型目录是否存在,不存在就创建


我们可以在终端里键入:python train.py --epoch 100

当出现这样的画面的时候就说明开始训练啦,我们只要耐心的等待结果就可以了

image.png

我的设备是3060显卡,100轮12分钟就训练好了,最终准确率达到了86.5%,召回率达到了78.7%,效果还是很不错的,最终的模型数据就保存在红框中的路径里,记住这里,一会儿会用得到

image.png

接下来我们就可以找一些图片测试一下我们的模型实际的检测效果了

相关文章
确定问卷调查样本量
确定问卷调查样本量
996 1
|
BI
Qt 报表实现(二)----QtXlsx
Qt 报表实现(二)----QtXlsx
724 2
|
9月前
|
编解码 Linux Android开发
安卓手机投屏电脑端教程,手机投屏教程,可以手机和电脑互传文件。电脑管理手机文件和APP等操作
QtScrcpy是一款基于Scrcpy开发的跨平台安卓投屏工具,支持Windows、macOS、Linux系统。无需在手机安装应用,通过USB或Wi-Fi连接即可实现高清低延迟投屏,支持文件互传、屏幕录制、截图、多设备管理等功能,操作简便,适合开发者与普通用户使用。
1141 47
|
JSON API 数据格式
深入研究:1688商品评论API详解
本文介绍如何通过第三方数据服务平台获取1688商品评论数据。由于1688官方未提供通用评论API,商家和研究人员可借助第三方接口分析消费者反馈、优化产品与服务。使用时需注册账号获取API Key,并通过必要参数(如商品ID、页码等)调用接口,返回JSON格式的评论数据。文中提供了Python示例代码,利用`requests`库发送请求,帮助用户快速上手,注意根据实际平台调整API地址和参数。
549 12
|
人工智能 IDE 测试技术
Browser-Use在UI自动化测试中的应用
Browser-Use是一款浏览器自动化工具,具备视觉与HTML解析、多标签管理、操作记录与复现、自定义操作、自我纠正及并行执行等功能,助力AI智能体高效完成网页任务。
1558 0
|
SQL 人工智能 自然语言处理
重磅解读 | 基于ChatGPT的开源全能 SQL Translator 4.3k star 背后的爆款神器!
SQL Translator 是一款基于 AI 的开源工具,支持自然语言与 SQL 双向转换,帮助开发者和非技术人员高效生成和理解 SQL 语句。具备语法高亮、深色模式、Schema 感知、本地部署等功能,适合数据分析、教学、业务文档编写等场景。项目已获 4.3k Stars,完全免费,使用 MIT 协议,支持商业应用。
492 0
|
存储 运维 BI
云HIS综合管理系统源码,门诊预约挂号、收费结算、排班、医护协同、药房、药库、电子病历等功能模块
_HIS系统摘要:_ HIS是医院信息管理系统,涵盖门诊、住院、药房、药库管理等,支持财务、病人及物资信息处理。门诊医生工作站具备友好的交互,与多系统接口集成。功能包括医生就诊、查询、住院预约、数据设置及用户管理。云HIS采用SaaS模式,适合基层医疗机构,提供综合管理和业务支持,确保运营监管并易于扩展。系统展示包括业务首页、综合管理系统、费用统计和出院结算界面。
777 8
云HIS综合管理系统源码,门诊预约挂号、收费结算、排班、医护协同、药房、药库、电子病历等功能模块
|
XML 安全 Java
Spring AOP—深入动态代理 万字详解(通俗易懂)
Spring 第四节 AOP——动态代理 万字详解!
667 24
|
机器学习/深度学习 边缘计算 缓存
有哪些方法可以降低 LLM 的计算成本?
【8月更文挑战第13天】
751 5
|
存储 算法 Java
java制作海报六:Graphics2D的RenderingHints方法参数详解,包括解决文字不清晰,抗锯齿问题
这篇文章是关于如何在Java中使用Graphics2D的RenderingHints方法来提高海报制作的图像质量和文字清晰度,包括抗锯齿和解决文字不清晰问题的技术详解。
873 0
java制作海报六:Graphics2D的RenderingHints方法参数详解,包括解决文字不清晰,抗锯齿问题

热门文章

最新文章