为猪脸识别而进行自己数据集的构建、训练「建议收藏」

为猪脸识别而进行自己数据集的构建、训练「建议收藏」在实际过程中走了弯路,特地进行说明记录,以备今后参考。思路是先构建VOC2007格式的猪脸数据集,在转换成tf格式,然后利用tf的objectdetectionapi进行训练。原因是把2种构建方式都熟悉一遍,并把所有流程过一遍。1、构架VOC2007格式的猪脸数据集前提:在某个目录下建立如下关系的子目录。                               

大家好,又见面了,我是你们的朋友全栈君。



在实际过程中走了弯路,特地进行说明记录,以备今后参考。

思路是先构建VOC2007格式的猪脸数据集,在转换成tf格式,然后利用tf的objectdetectionapi进行训练。原因是把2种构建方式都熟悉一遍,并把所有流程过一遍。

1、构架VOC2007格式的猪脸数据集

前提:在某个目录下建立如下关系的子目录。

                                    —— Annotations

                            —— ImageSets

                                              —— Main

                                   —— JPEGImages

 

第一步:准备自己需要的图片,最好是jpg格式。如若不是则需要转换成jpg格式。

因为很多图片都是从网上找的,格式、大小都不一样,为了后续训练需要最好统一下大小,并把格式统一转换成jpg格式。 

图片的数量,一般来说最好一千张以上。为了后续训练出好的效果,最好一万张以上。

 


第二步:图片的重命名,因为VOC2007格式必须为JPG格式,并且图片是统一的六位数字,从000001开始。那我们也需要将所有训练图片重命名为此。


         重命名后所有图片就可以拷贝到JPEGImages目录下。

 

第三步:进行目标物体的标注。推荐用labelImg,因为它可直接生成符合VOC2007格式的xml文件。

                   主要是体力活。

                   生成的所有xml文件就可以拷贝到Annotations目录下。

 

第四步:数据集的分割。

                   在实际训练过程中,需要四个文件,分别为test.txt是测试集,train.txt是训练集,val.txt是验证集,trainval.txt是训练和验证集。每个文件为对于图片的名字。在VOC2007中,trainval大概是整个数据集的50%test也大概是整个数据集的50%train大概是trainval50%val大概是trainval50%

                   参照python源码:split-datasets.py

                   生成的四个txt文件就可以拷贝到Main目录下。

 

第五步:如果上述各步骤中没有做拷贝的动作则在本步骤把相应的文件拷贝到对应的目录下。以符合VOC2007格式的要求。


                                   —— Annotations xml文件全部放到该文件夹里

                            —— ImageSets

                                            —— Main 其有四个txt文件,test.txt是测试集,train.txt是训练集,val.txt是验证集,trainval.txt是训练和验证集。Txt里的内容是即图片名字(无后缀)。

                                     —— JPEGImages 所有的训练图片放到该文件夹里


 

第六步:把上述目录及其文件都拷贝到pigfaces/VOC2007/下。


第七步:转换成tf的record格式的数据集文件

      运行如下命令:cd 到xxx\object_detection目录下。python create_pascal_tf_record.py –data_dir=xxxx\object_detection\pigfaces –year=VOC2007 –set=train –output_path=data\pig_train.record

第八步:进行训练。

       运行如下命令:cd 到xxx\objectdetection\object_detection目录下。python train.py –train_dir=data –pipeline_config_path=models\faster_rcnn_resnet101_voc07.config


上述的6,7,8可参考我的github代码,网址是https://github.com/renwoxing2016/Objectdetectionapi/



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151884.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • phpstorm2021永久激活码-激活码分享

    (phpstorm2021永久激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html9ZHRNTE33T-eyJsaWN…

  • 验证码识别(Tess4J初体验)

    验证码识别(Tess4J初体验)遇到一道机试题当时就懵逼了0.0查了好多资料,大体知道了基本的步骤:1.预处理2.灰度化3.二值化4.去噪5.分割6.识别还好题目要求不严格,可以使用开源程序。机智的我还真找到一个:Tesseract下面开始正文:Tess4J官方描述:AJavaJNAwrapperforTesseractOCRAPI.1.先去官网下载:http://

  • Linux查看redis版本(查看mongodb版本)

    快半年没有在Linux中使用redis了,命令有些生疏了,网上很多博文也不对,不知道博主是否直接复制的来的。以下为重新整理资料,便于忘记时候复习首先进入cd/usr/local目录不用说了我把redis安装到了redis文件夹中了,在bin目录下找到redis-server使用./redis-server–version查看版本信息[red@RedFaceloc…

  • 如何解决Linux 系统下 ifconfig 命令无网络接口 ens33[通俗易懂]

    如何解决Linux 系统下 ifconfig 命令无网络接口 ens33

  • 多线程(一):创建线程和线程的常用方法

    多线程(一):创建线程和线程的常用方法一:为什么要学多线程应付面试:多线程几乎是面试中必问的题,所以掌握一定的基础知识是必须的。了解并发编程:实际工作中很少写多线程的代码,这部分代码一般都被人封装起来了,在业务中使用多线程的机会也不是很多(看具体项目),但是作为一个高级程序员如果不会多线程是说不过去的。二:进程与线程进程进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统…

  • Java中executeUpdate和executeQuery的区别

    Java中executeUpdate和executeQuery的区别executeQueryexecuteQuery()方法是在PreparedStatement对象中执行SQL查询,并返回该查询生成的ResultSet对象,executeUpdate该方法是在PreparedStatement对象中执行SQL语句,该语句必须是一个SQL数据操作语言,例如INSERT,UPDATE,DELETE等语句,或者是没有返回内容的SQL语句….

    2022年10月20日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号