1. 程式人生 > >使用python進行Caffe資料來源lmdb的製作

使用python進行Caffe資料來源lmdb的製作

我們把需要做的資料放在Caffe_DataMaker 資料夾中,並且將資料按比例分為測試集資料夾train和訓練集資料夾val;在測試集資料夾中按照類別放在相應的資料夾中,資料夾命名為0,1,…..(從0開始命名),在測試集資料夾中進行同樣的操作,使用的python程式碼為:

# -*- coding: utf-8 -*-
"""
使用python製作用於caffe分類的lmdb資料來源
"""
import os
import io
def caffe_input_txt_maker(data_folder,outfile_name, phase = 'train'):
    # 計數檔案個數
file_cnt = 0 class_cnt = 0 with io.open(outfile_name, 'wb+') as fobj: for folder_name in os.listdir(data_folder): label = folder_name.split('__')[0] folder_path = os.path.join(data_folder, folder_name) class_cnt += 1 for file_name in os.listdir(folder_path): file_cnt += 1
# 將資料夾名稱也新增入內 if phase == 'train' : file_path = folder_name + '/' + file_name if phase == 'test' : file_path = file_name fobj.writelines( file_path +" "+str(label)+'\n') file_dir, base_name = os.path.split(outfile_name) file_name, ext = os.path.splitext(base_name) #new_outfile_name = file_dir + '/' + file_name + '_%d_%d' % (class_cnt, file_cnt) + ext
#if os.path.exists(new_outfile_name): os.remove(new_outfile_name) #os.rename(outfile_name, new_outfile_name) print ('Done') if __name__ == "__main__": caffe_input_txt_maker(data_folder = '/home/pcb/caffe/examples/Caffe_DataMaker/train', outfile_name = "/home/pcb/caffe/examples/Caffe_DataMaker/train.txt", phase = 'train') caffe_input_txt_maker(data_folder = '/home/pcb/caffe/examples/Caffe_DataMaker/val', outfile_name = "/home/pcb/caffe/examples/Caffe_DataMaker/val.txt", phase = 'test')

data_folder是存放訓練集的資料夾,outfile_name是輸出的train.txt,其內容如下:
這裡寫圖片描述
val.txt的內容如下:
這裡寫圖片描述
注意:待生成val.txt後,訓練集val資料夾下的圖片全部從類別資料夾中移動到val資料夾下,因為val.txt中圖片路徑前面沒有子目錄。
接下來就要寫create_imagenet.sh裡面的東西了,如下所示:

#!/usr/bin/env sh
# Create the imagenet lmdb inputs
# N.B. set the path to the imagenet train + val data dirs
set -e

EXAMPLE=/home/pcb/caffe/examples/Caffe_DataMaker  #放置相應的資料夾
DATA=/home/pcb/caffe/examples/Caffe_DataMaker     #放置相應的資料夾
TOOLS=/home/pcb/caffe/build/tools

TRAIN_DATA_ROOT=/home/pcb/caffe/examples/Caffe_DataMaker/train/  #存放用於訓練的資料
VAL_DATA_ROOT=/home/pcb/caffe/examples/Caffe_DataMaker/val/      #存放用於測試的資料


# Set RESIZE=true to resize the images to 256x256. Leave as false if images have
# already been resized using another tool.
RESIZE=false
if $RESIZE; then
  RESIZE_HEIGHT=256
  RESIZE_WIDTH=256
else
  RESIZE_HEIGHT=0
  RESIZE_WIDTH=0
fi

if [ ! -d "$TRAIN_DATA_ROOT" ]; then
  echo "Error: TRAIN_DATA_ROOT is not a path to a directory: $TRAIN_DATA_ROOT"
  echo "Set the TRAIN_DATA_ROOT variable in create_imagenet.sh to the path" \
       "where the ImageNet training data is stored."
  exit 1
fi

if [ ! -d "$VAL_DATA_ROOT" ]; then
  echo "Error: VAL_DATA_ROOT is not a path to a directory: $VAL_DATA_ROOT"
  echo "Set the VAL_DATA_ROOT variable in create_imagenet.sh to the path" \
       "where the ImageNet validation data is stored."
  exit 1
fi

echo "Creating train lmdb..."

GLOG_logtostderr=1 $TOOLS/convert_imageset \
    --resize_height=$RESIZE_HEIGHT \
    --resize_width=$RESIZE_WIDTH \
    --shuffle \
    $TRAIN_DATA_ROOT \
    $DATA/train.txt \
    $EXAMPLE/train_lmdb

echo "Creating val lmdb..."

GLOG_logtostderr=1 $TOOLS/convert_imageset \
    --resize_height=$RESIZE_HEIGHT \
    --resize_width=$RESIZE_WIDTH \
    --shuffle \
    $VAL_DATA_ROOT \
    $DATA/val.txt \
    $EXAMPLE/val_lmdb

echo "Done."裡寫程式碼片

寫完之後在終端的目錄調整到Caffe_DataMaker下,使用命令sh create_imagenet.sh就會在Caffe_DataMaker資料夾下生成train_lmdb和val_lmdb,這樣就大功告成了!

相關推薦

使用python進行Caffe資料來源lmdb製作

我們把需要做的資料放在Caffe_DataMaker 資料夾中,並且將資料按比例分為測試集資料夾train和訓練集資料夾val;在測試集資料夾中按照類別放在相應的資料夾中,資料夾命名為0,1,…..(從0開始命名),在測試集資料夾中進行同樣的操作,使用的pyth

python 進行caffe 資料視覺化的 “No to_python (by-value)” 問題解決

使用python 進行caffe 資料視覺化的時候可能會遇到下面的錯誤: No to_python (by-value) converter found for C++ type: boost::sh

Python 應用caffe模型進行分類(caffe介面)

遍歷一個檔案下的所有圖片,進行單張預測,並複製到相應的資料夾 import caffe #import lmdb import numpy as np import cv2 from caffe.proto import caffe_pb2 import os import sys caff

將圖片轉換成caffelmdb形式並進行實驗

最近做實驗需要用到caffe,做一下總結以備以後操作參考 實驗是使用自己從網上爬的資料集來替換caffe中demo中的資料集 首先介紹一下資料的格式 Caffe生成的資料分為2種格式:Lmdb和Leveldb 它們都是鍵/值對(Key/Value Pai

Caffe學習筆記(二):使用Python生成caffe所需的lmdb檔案和txt列表清單檔案

轉載請註明作者和出處: http://blog.csdn.net/c406495762 Python版本:Python2.7 執行平臺:Ubuntu14.04 最後修改時間:2017.4.20     在上個筆記中,已經學會了如何使用Caffe利用作者

caffe中使用python進行影象預測

在剛接觸caffe時,我們一般使用.bat 或者.sh命令來檢視訓練好的模型或者預測新的圖片,很多時候會顯得不方便,之前我們配置了MATLAB和python介面,因此,可以使用python來進行相關操作。 #coding=utf-8 import caff

Python進行網頁抓取

google 神奇 顯示 rss 遍歷 ecb data- 可用 appdata 引言   從網頁中提取信息的需求日益劇增,其重要性也越來越明顯。每隔幾周,我自己就想要到網頁上提取一些信息。比如上周我們考慮建立一個有關各種數據科學在線課程的歡迎程度和意見的索引。我們不僅需要

利用python進行數據分析——histogram

python hist()DataFrame.hist(data, column=None, by=None, grid=True, xlabelsize=None, xrot=None, ylabelsize=None, yrot=None,ax=None, sharex=False, sharey=Fal

Python進行數據分析之一:相關Package的安裝

ans 防止 log matplot 行數據 解釋 原型 簡單 下載 一、為什麽要使用Python進行數據分析? python擁有一個巨大的活躍的科學計算社區,擁有不斷改良的庫,能夠輕松的集成C,C++,Fortran代碼(Cython項目),可以同時用於研究和原型的構建以

PYTHON學習(三)之利用python進行數據分析(1)---準備工作

-- 下載 rip 安裝包 png 要求 eight code 電腦   學習一門語言就是不斷實踐,python是目前用於數據分析最流行的語言,我最近買了本書《利用python進行數據分析》(Wes McKinney著),還去圖書館借了本《Python數據分析基礎教程--N

【學習】Python進行數據提取的方法總結【轉載】

多個 pandas flow cells nump 特定 blue 和數 index 鏈接:http://www.jb51.net/article/90946.htm 數據提取是分析師日常工作中經常遇到的需求。如某個用戶的貸款金額,某個月或季度的利息總收入,某個特定時間段的

使用Python進行AES加密和解密

Coding color www tor 修改 1年 add 思想 href 摘錄於:http://blog.csdn.net/nurke/article/details/77267081 另外參考:http://www.cnblogs.com/kaituorensheng

使用python進行數據的采集

自己 lan 進行 之前 小米 博客 href span 簡單 搞了十多年的程序,最近轉行做網站,經過一番的調查研究,最終選擇了美女圖片站http://www.gg4493.cn.。 這就帶來了一個問題,必須要到網站各大美女站點進行圖片采集,之前都是采用java進行數據采

小記 用python進行排序

排序Linux 中可以使用 sort 進行排序,python中也一樣,那麽怎樣實現把一個數字的 list 從小到大排序,然後寫入文件,然後從文件中讀取出來文件內容,然後反序,再追加到文件的下一行中呢?思路如下:1、取一個列表內容2、對列表內容使用 sort 進行排序,並打印出結果3、打開一個文件,將正序排列後

python中文分詞,使用結巴分詞對python進行分詞

php 分詞 在采集美女站時,需要對關鍵詞進行分詞,最終采用的是python的結巴分詞方法.中文分詞是中文文本處理的一個基礎性工作,結巴分詞利用進行中文分詞。其基本實現原理有三點:基於Trie樹結構實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖(DAG)采用了動態規劃查找最大概率

Selenium+Python進行web自動化測試(Demo+API)

mod amp cep path chrome all 配置使用 nas img Selenium官方網站 http://selenium-python.readthedocs.io/ 配置使用環境 下載相應的瀏覽器驅動, Firefox 是默認的 本文以 chrome 為

python進行des加密解密,而且可以與JAVA進行互相加密解密

odi times pla dea details names ideal cati encrypt import binasciifrom pyDes import des, CBC, PAD_PKCS5import uuidimport time# pip instal

利用Python進行圖片發送與接收的兩種方法---包含客戶端和服務器端代碼

list() tmp span 客戶端 time() failed pri ucc out 第一種方法 opencv、requests、flask 此方法比較耗費時間 600毫秒左右 客戶端代碼 #coding:utf-8 import cv2 import json i

Configure Tomcat 7 to run Python CGI scripts in windows(Win7系統配置tomcat服務器,使用python進行cgi編程)

it is ram -i cto director 進行 comment XML env Pre-installation requirements1. Java2. Pythonsteps1. Download latest version of Tomcat (Tomc

python進行簡單的畫圖操作

line 51cto imp spin osi style data gen ott 我用python的matplotlib模塊進行簡單的畫圖操作,作為入門參考,下面直接上代碼:#coding:utf-8 import numpy as np import matplotl