Caffe修炼之路(5)——自行制作图片分类数据

2024-02-10 08:30

本文主要是介绍Caffe修炼之路(5)——自行制作图片分类数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Caffe修炼之路(5)——自行制作图片分类数据

  • (一)前 言
  • (二)准备一些图片
  • (三)生成图片文件列表
  • (四)数据转换

在这里插入图片描述

(一)前 言

由于Caffe的输入数据是以lmdb或者leveldb格式的文件,因此我们需要将数据库中的图片转换成caffe能允许的输入格式数据集,这个时候就发现MNIST数据集的怀抱真温暖:
在这里插入图片描述

(二)准备一些图片

在caffe-master/data目录下建立新建dogvscat文件夹存放猫狗的图片,如下所示:
在这里插入图片描述
注意图片文件的命名要有明显差异!

(三)生成图片文件列表

在进行转换之前,我们首先要生一个图片列表,其中包含图片文件名和标签,创建一个sh脚本文件,命名为create_trainfilelist.sh写入:

# /usr/bin/env sh
DATA=/home/caffe/caffe-master/data/dogvscat
echo "Create train.txt..."
rm -rf $DATA/train.txt
find $DATA -name ca*.jpg | cut -d '/' -f7 | sed "s/$/ 0/">>$DATA/train.txt
find $DATA -name do*.jpg | cut -d '/' -f7 | sed "s/$/ 1/">>$DATA/tmp.txt
cat $DATA/tmp.txt>>$DATA/train.txt
rm -rf $DATA/tmp.txt
echo "Done.."

运行上述文件:

bash create_trainfilelist.sh

生成文件内容如下:

cat1.jpeg 0
cat3.jpeg 0
cat2.jpeg 0
dog2.jpeg 1
dog3.jpeg 1
dog1.jpeg 1

(四)数据转换

caffe-master/build/tools/文件夹下,有一个convert_imageset.cpp文件,这个文件的作用就是用于将图片文件转换成Caffe框架中能直接使用的db文件,使用格式为:

 convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME

参数如下:

  • FLAGS: 图片参数组
  • ROOTFOLDER: 原始数据集的绝对路径
  • LISTFILE: 图片的文件名列表,一般为txt文件,一行一张图片的信息,下面会给出如何生成filelist的方法。
  • DB_NAME: 生成的db文件的存放目录

执行下列命令:

build/tools/convert_imageset --gray=false /home/caffe/caffe-master/data/dogvscat/ /home/caffe/caffe-master/data/dogvscat/train.txt /home/caffe/caffe-master/data/dogvscat/train_lmdb --resize_width=224 --resize_height=224

输出:

I0703 17:10:10.721115  7492 convert_imageset.cpp:89] A total of 6 images.
I0703 17:10:10.721850  7492 db_lmdb.cpp:35] Opened lmdb /home/caffe/caffe-master/data/dogvscat/train_lmdb
I0703 17:10:10.816833  7492 convert_imageset.cpp:153] Processed 6 files.

查看生成目录,成功生成lmdb文件:
在这里插入图片描述

这篇关于Caffe修炼之路(5)——自行制作图片分类数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

浅析如何保证MySQL与Redis数据一致性

《浅析如何保证MySQL与Redis数据一致性》在互联网应用中,MySQL作为持久化存储引擎,Redis作为高性能缓存层,两者的组合能有效提升系统性能,下面我们来看看如何保证两者的数据一致性吧... 目录一、数据不一致性的根源1.1 典型不一致场景1.2 关键矛盾点二、一致性保障策略2.1 基础策略:更新数