caffe制作hdf5数据源格式

把所要进行回归的Caffe图像在/home/pcb/caffe/examples/Caffe_DataMaker_hdh5文件夹的image文件夹中,然后有一个hdf5.txt,文档中的第一列为图像的名称,后面的是图像5个特征的位置(这里的5个特征只是举个栗子,或许有别的吧,只是这个txt怎么生成还不知道,如果图像多的话肯定要写程序的,后面会继续更新的!),具体如下图所示:

这里写图片描述

然后生成hdf5的python的程序如下所示:


# -*- coding: utf-8 -*-
'''
hdf5数据源
'''
import math
import numpy as np
import random
import re
import os
import h5py
import cv2

#图片路径
root_path = ‘/home/pcb/caffe/examples/Caffe_DataMaker_hdh5/image’
with open(’/home/pcb/caffe/examples/Caffe_DataMaker_hdh5/hdf5.txt’,‘r’) as f:
lins = f.readlines()

num = len(lins) #数据长度

random.shuffle(lins) #把数据洗牌
imgAccu = 0
#图片输入
# #制作Data,造一个2242243图片个数的矩阵
imgs = np.zeros([num , 3 , 224 ,224])
# 制作label,造一个10(每个图像的标签数)×图片个数的矩阵
labels = np.zeros([num , 10])
for i in range(num):
line = lins[i]
#使用正则表达式把串给分割开来,取第一个图片的名字 \s就是一个回车或者空格
segment = re.split(’\s+’,line)
#找到图片
image = cv2.imread(os.path.join(root_path , segment[0]))
#把图片进行缩小 把图片缩小到224 输入的大小就是224x224的
image = cv2.resize(image , (224,224))
#普通图片输入是h w c 而caffe要求是c h w,所以要转回来
image = image.transpose(2 , 0 , 1)
#转类型,float32
#把数据都存在imge里面
imgs[i , : , : , :] = image.astype(np.float32)
#因为图片缩小了,所以要吧label也要缩小
for j in range(10):
labels[i , j] = float(segment[j + 1])224/256

#每个hdf5文件里存放的个数,一般每个.h5里面放8000个
#这里就3个,每个.h5里面放一个
batchSize = 1
#取多少次
batchNum = int(math.ceil(1.0 * num/batchSize))

#减去均值操作,目的是以0为中心化
#在初始阶段减去均值后,最后预测的时候要加上
imgsMean = np.mean(imgs , axis = 0)
labelsMean = np.mean(labels , axis = 0)
labels = (labels - labelsMean)/10

#移除之前存在的文件
if os.path.exists(‘trainlist.txt’):
os.remove(‘trainlist.txt’)
if os.path.exists(‘testlist.txt’):
os.remove(‘testlist.txt’)

comp_kwargs = {‘compression’: ‘gzip’, ‘compression_opts’: 1}
for i in range(batchNum):
start = i * batchSize
end = min((i+1)*batchSize , num)
#前面的几个bacthsize做为一个训练数据
if i < batchNum - 1:
fileName = ‘/home/pcb/caffe/examples/Caffe_DataMaker_hdh5/h5/train{0}.h5’.format(i)
#后面的一个作为测试集
else:
fileName = ‘/home/pcb/caffe/examples/Caffe_DataMaker_hdh5/h5/test{0}.h5’.format(i - batchNum + 1)

<span class="hljs-comment">#往h5文件里面添加进数据</span>
<span class="hljs-keyword">with</span> h5py.File(fileName , <span class="hljs-string">'w'</span>) <span class="hljs-keyword">as</span> f:
    f.create_dataset(<span class="hljs-string">'data'</span> , data=np.array((imgs[start : end] - imgsMean)/<span class="hljs-number">255.0</span>).astype(np.float32) , **comp_kwargs)
    f.create_dataset(<span class="hljs-string">'label'</span> , data=np.array(labels[start : end]).astype(np.float32) , **comp_kwargs)
    <span class="hljs-keyword">pass</span>

<span class="hljs-keyword">if</span> i &lt; batchNum - <span class="hljs-number">1</span>:
    <span class="hljs-keyword">with</span> open(<span class="hljs-string">'/home/pcb/caffe/examples/Caffe_DataMaker_hdh5/h5/trainlist.txt'</span> , <span class="hljs-string">'a'</span>) <span class="hljs-keyword">as</span> f:
        f.write((<span class="hljs-string">"/home/pcb/caffe/examples/Caffe_DataMaker_hdh5/h5/train{0}.h5"</span>).format(i) + <span class="hljs-string">'\n'</span>)
<span class="hljs-keyword">else</span>:
    <span class="hljs-keyword">with</span> open(<span class="hljs-string">'/home/pcb/caffe/examples/Caffe_DataMaker_hdh5/h5/testlist.txt'</span> , <span class="hljs-string">'a'</span>) <span class="hljs-keyword">as</span> f:
        f.write((<span class="hljs-string">"/home/pcb/caffe/examples/Caffe_DataMaker_hdh5/h5/test{0}.h5"</span>).format(i - batchNum + <span class="hljs-number">1</span>) + <span class="hljs-string">'\n'</span>)<div class="hljs-button {2}" data-title="复制"></div></code><ul class="pre-numbering"><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li><li style="color: rgb(153, 153, 153);">14</li><li style="color: rgb(153, 153, 153);">15</li><li style="color: rgb(153, 153, 153);">16</li><li style="color: rgb(153, 153, 153);">17</li><li style="color: rgb(153, 153, 153);">18</li><li style="color: rgb(153, 153, 153);">19</li><li style="color: rgb(153, 153, 153);">20</li><li style="color: rgb(153, 153, 153);">21</li><li style="color: rgb(153, 153, 153);">22</li><li style="color: rgb(153, 153, 153);">23</li><li style="color: rgb(153, 153, 153);">24</li><li style="color: rgb(153, 153, 153);">25</li><li style="color: rgb(153, 153, 153);">26</li><li style="color: rgb(153, 153, 153);">27</li><li style="color: rgb(153, 153, 153);">28</li><li style="color: rgb(153, 153, 153);">29</li><li style="color: rgb(153, 153, 153);">30</li><li style="color: rgb(153, 153, 153);">31</li><li style="color: rgb(153, 153, 153);">32</li><li style="color: rgb(153, 153, 153);">33</li><li style="color: rgb(153, 153, 153);">34</li><li style="color: rgb(153, 153, 153);">35</li><li style="color: rgb(153, 153, 153);">36</li><li style="color: rgb(153, 153, 153);">37</li><li style="color: rgb(153, 153, 153);">38</li><li style="color: rgb(153, 153, 153);">39</li><li style="color: rgb(153, 153, 153);">40</li><li style="color: rgb(153, 153, 153);">41</li><li style="color: rgb(153, 153, 153);">42</li><li style="color: rgb(153, 153, 153);">43</li><li style="color: rgb(153, 153, 153);">44</li><li style="color: rgb(153, 153, 153);">45</li><li style="color: rgb(153, 153, 153);">46</li><li style="color: rgb(153, 153, 153);">47</li><li style="color: rgb(153, 153, 153);">48</li><li style="color: rgb(153, 153, 153);">49</li><li style="color: rgb(153, 153, 153);">50</li><li style="color: rgb(153, 153, 153);">51</li><li style="color: rgb(153, 153, 153);">52</li><li style="color: rgb(153, 153, 153);">53</li><li style="color: rgb(153, 153, 153);">54</li><li style="color: rgb(153, 153, 153);">55</li><li style="color: rgb(153, 153, 153);">56</li><li style="color: rgb(153, 153, 153);">57</li><li style="color: rgb(153, 153, 153);">58</li><li style="color: rgb(153, 153, 153);">59</li><li style="color: rgb(153, 153, 153);">60</li><li style="color: rgb(153, 153, 153);">61</li><li style="color: rgb(153, 153, 153);">62</li><li style="color: rgb(153, 153, 153);">63</li><li style="color: rgb(153, 153, 153);">64</li><li style="color: rgb(153, 153, 153);">65</li><li style="color: rgb(153, 153, 153);">66</li><li style="color: rgb(153, 153, 153);">67</li><li style="color: rgb(153, 153, 153);">68</li><li style="color: rgb(153, 153, 153);">69</li><li style="color: rgb(153, 153, 153);">70</li><li style="color: rgb(153, 153, 153);">71</li><li style="color: rgb(153, 153, 153);">72</li><li style="color: rgb(153, 153, 153);">73</li><li style="color: rgb(153, 153, 153);">74</li><li style="color: rgb(153, 153, 153);">75</li><li style="color: rgb(153, 153, 153);">76</li><li style="color: rgb(153, 153, 153);">77</li><li style="color: rgb(153, 153, 153);">78</li><li style="color: rgb(153, 153, 153);">79</li><li style="color: rgb(153, 153, 153);">80</li><li style="color: rgb(153, 153, 153);">81</li><li style="color: rgb(153, 153, 153);">82</li><li style="color: rgb(153, 153, 153);">83</li><li style="color: rgb(153, 153, 153);">84</li><li style="color: rgb(153, 153, 153);">85</li><li style="color: rgb(153, 153, 153);">86</li><li style="color: rgb(153, 153, 153);">87</li></ul><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li><li style="color: rgb(153, 153, 153);">14</li><li style="color: rgb(153, 153, 153);">15</li><li style="color: rgb(153, 153, 153);">16</li><li style="color: rgb(153, 153, 153);">17</li><li style="color: rgb(153, 153, 153);">18</li><li style="color: rgb(153, 153, 153);">19</li><li style="color: rgb(153, 153, 153);">20</li><li style="color: rgb(153, 153, 153);">21</li><li style="color: rgb(153, 153, 153);">22</li><li style="color: rgb(153, 153, 153);">23</li><li style="color: rgb(153, 153, 153);">24</li><li style="color: rgb(153, 153, 153);">25</li><li style="color: rgb(153, 153, 153);">26</li><li style="color: rgb(153, 153, 153);">27</li><li style="color: rgb(153, 153, 153);">28</li><li style="color: rgb(153, 153, 153);">29</li><li style="color: rgb(153, 153, 153);">30</li><li style="color: rgb(153, 153, 153);">31</li><li style="color: rgb(153, 153, 153);">32</li><li style="color: rgb(153, 153, 153);">33</li><li style="color: rgb(153, 153, 153);">34</li><li style="color: rgb(153, 153, 153);">35</li><li style="color: rgb(153, 153, 153);">36</li><li style="color: rgb(153, 153, 153);">37</li><li style="color: rgb(153, 153, 153);">38</li><li style="color: rgb(153, 153, 153);">39</li><li style="color: rgb(153, 153, 153);">40</li><li style="color: rgb(153, 153, 153);">41</li><li style="color: rgb(153, 153, 153);">42</li><li style="color: rgb(153, 153, 153);">43</li><li style="color: rgb(153, 153, 153);">44</li><li style="color: rgb(153, 153, 153);">45</li><li style="color: rgb(153, 153, 153);">46</li><li style="color: rgb(153, 153, 153);">47</li><li style="color: rgb(153, 153, 153);">48</li><li style="color: rgb(153, 153, 153);">49</li><li style="color: rgb(153, 153, 153);">50</li><li style="color: rgb(153, 153, 153);">51</li><li style="color: rgb(153, 153, 153);">52</li><li style="color: rgb(153, 153, 153);">53</li><li style="color: rgb(153, 153, 153);">54</li><li style="color: rgb(153, 153, 153);">55</li><li style="color: rgb(153, 153, 153);">56</li><li style="color: rgb(153, 153, 153);">57</li><li style="color: rgb(153, 153, 153);">58</li><li style="color: rgb(153, 153, 153);">59</li><li style="color: rgb(153, 153, 153);">60</li><li style="color: rgb(153, 153, 153);">61</li><li style="color: rgb(153, 153, 153);">62</li><li style="color: rgb(153, 153, 153);">63</li><li style="color: rgb(153, 153, 153);">64</li><li style="color: rgb(153, 153, 153);">65</li><li style="color: rgb(153, 153, 153);">66</li><li style="color: rgb(153, 153, 153);">67</li><li style="color: rgb(153, 153, 153);">68</li><li style="color: rgb(153, 153, 153);">69</li><li style="color: rgb(153, 153, 153);">70</li><li style="color: rgb(153, 153, 153);">71</li><li style="color: rgb(153, 153, 153);">72</li><li style="color: rgb(153, 153, 153);">73</li><li style="color: rgb(153, 153, 153);">74</li><li style="color: rgb(153, 153, 153);">75</li><li style="color: rgb(153, 153, 153);">76</li><li style="color: rgb(153, 153, 153);">77</li><li style="color: rgb(153, 153, 153);">78</li><li style="color: rgb(153, 153, 153);">79</li><li style="color: rgb(153, 153, 153);">80</li><li style="color: rgb(153, 153, 153);">81</li><li style="color: rgb(153, 153, 153);">82</li><li style="color: rgb(153, 153, 153);">83</li><li style="color: rgb(153, 153, 153);">84</li><li style="color: rgb(153, 153, 153);">85</li><li style="color: rgb(153, 153, 153);">86</li><li style="color: rgb(153, 153, 153);">87</li></ul></pre>

这样就会在Caffe_DataMaker_hdh5文件夹下h5生成以下几个文件:
这里写图片描述
trainlist.txt里面为train0.h5和train1.h5的路径,如下图所示:
这里写图片描述
testlist.txt里面为test0.h的路径,如下图所示:
这里写图片描述
然后把所要使用的hdf5数据层的source路径设为trainlist所在的路径即可。

                                </div>
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e9f16cbbc2.css" rel="stylesheet">
                </div>
</article>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值