google官方efficientdet网络训练自己数据集步骤以及问题解决

2023-12-15 10:59

本文主要是介绍google官方efficientdet网络训练自己数据集步骤以及问题解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

google官方efficientdet网络训练自己数据集步骤以及问题解决

1、谷歌官方代码网址,github上有各种版本的,建议使用官方的不会出现什么问题。

https://github.com/google/automl/tree/master/efficientdet

本人采坑记录,一开始使用github上pytorch版本star比较高的用来训练测试,发现精度还不错,但是infer的速度始终无法达到参考指标,后来一查确实有一些人也遇到这样的问题也都没有解决,经过1天的努力,最后决定跳坑,最终证明还是官方的香!

2、先上图,一睹为快,然后再详细介绍。

测试集上的指标:

3、推测的速度(从图像读入到model中到处理之后得到结果的时间):

在这里插入图片描述
接下来进入正题:

1、数据集准备

这里建议自己的数据集转换成Pascal VOC的格式,因为我试过coco的转换存在一些问题,一会儿详细说一下。

这里推荐一个详细的参考教程:
数据集准备教程

下面内容作为上面博文未提到的补充

1、采坑记录:当我按照这个教程制定自己的数据集跑网络的时候出现了如下的问题:
在这里插入图片描述
我用coco的又转换了一遍发现还是这个问题,最终通过调试找到了问题的原因:
将图片转换成tfrecord的形式,要求图片一定是JPEG格式的图片,因为我的数据集里面虽然文件后缀都是.jpg但是其中有很多格式的,比如BMP,RGBA等等,所以到一定要将图片都转换为JPEG格式的。
将转换文件里面113行代码:

  if image.format != 'JPEG':raise ValueError('Image format not JPEG')

转换改写成如下:将格式统一进行转换之后用image.save将图片以.jpg格式以同名的形式保存到另一个文件夹,之后再将两个文件夹图片融合,代替重复图片。

  if image.format != 'JPEG':# raise ValueError('Image format not JPEG')if image.mode == "P":image = image.convert('RGB')if image.mode =="RGBA":image=image.convert('RGB')image.save('/home/user/Downloads/'+full_path)print("image:",full_path,"format:",image.format)

之后再运行就没有问题了,这也是为什么建议用Pascal VOC的格式进行转换,防止浪费不必要的时间。

2、获得infer一张图片需要的时间:

python model_inspect.py --runmode=bm \--model_name=efficientdet-d0   --ckpt_path=tmp/efficientdet-d0-finetune \--hparams=my_config.yaml  \--input_image=testdata/image.jpg --output_image_dir=/tmp/

ckpt_path为保存训练checkpoint的文件夹名
input_image可以指定一张图片,当需要预测多张图片的时候可以改成testdata/*.jpg
结果如开头的图片所示。

3、可视化图片的检测结果:

python model_inspect.py --runmode=infer \--model_name=efficientdet-d0   --ckpt_path=tmp/efficientdet-d0-finetune \--hparams=my_config.yaml  \--input_image=testdata/image.jpg --output_image_dir=/tmp/ --line_thickness=2

从训练到测试过程介绍完毕!

这篇关于google官方efficientdet网络训练自己数据集步骤以及问题解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/496201

相关文章

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

pandas数据的合并concat()和merge()方式

《pandas数据的合并concat()和merge()方式》Pandas中concat沿轴合并数据框(行或列),merge基于键连接(内/外/左/右),concat用于纵向或横向拼接,merge用于... 目录concat() 轴向连接合并(1) join='outer',axis=0(2)join='o

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

解决RocketMQ的幂等性问题

《解决RocketMQ的幂等性问题》重复消费因调用链路长、消息发送超时或消费者故障导致,通过生产者消息查询、Redis缓存及消费者唯一主键可以确保幂等性,避免重复处理,本文主要介绍了解决RocketM... 目录造成重复消费的原因解决方法生产者端消费者端代码实现造成重复消费的原因当系统的调用链路比较长的时

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of