最好用的caffe深度学习简单批处理数据集(windows+linux+Python)

简单的批处理方式,包含了windows系统下的bat文件,Linux系统下的sh文件以及最牛逼的Python脚本。在进行AI相关的研究时,不可避免的需要去进行处理数据集。有些数据集是现成的,有些数据集却是需要自己去定制的。以下是自己在学习的过程中总结出来的比较常见的几种方式去处理数据。因为做的是CV,所以设计的处理方式多是处理图片。
一、windows下的bat
1、统计每个文件夹的名称以及相应文件夹下的文件数量并导出为记事本txt文件。使用时需要将此bat放至需要统计的所有文件夹的同级目录下,双击执行即可。正常使用过程中主要起到统计的作用,以及保存的txt文件可以用excel打开,便于数据的处理。


@echo off

set n=%cd%

:aaa

if not "%n:\=%"=="%n%"set n=%n:*\=%& goto aaa

echo 文件夹名;文件数>"%n%.txt"

for /f "delims=" %%a in ('dir /ad/b') do (

  for/f %%s in ('dir /b /s /a-d "%%a" ^| find /v /c ""') do echo%%a;%%s>>"%n%.txt")

echo 完成...

pause

2、从N个文件夹中(N个文件夹下的文件命名一样)抽取某一命名的文件,保存到指定的路径下。这个过程主要是从一些整理好的数据集中去抽取自己所需的数据进行定制。(例如webface,megaface等)。记得修改路径。


@echo off

if exist renlian (rd /s /q renlian)

md renlian

dir /s /b 002.jpg > renlian.tmp

setlocal enabledelayedexpansion

set n=1

for /f "eol=| delims=|" %%i in(renlian.tmp) do (

xcopy "%%i" "D:\*\*-*\*-*\*\!n!.jpg"

set /a n=!n!+1

)

pause

二、Linux下的sh
1、将同级文件夹下的所有图片按照顺序累加重命名。sh文件与图片放至同级目录下。这段是为了将之前抽取好的数据统一进行重命名。


i=100001;

 forimg in `ls *.jpg`;

do mv $img `printf  %.6d $i`.jpg;

i=`expr $i + 1`;

done

2、这段是在上一步重命名结束之后,对分类好的train和val数据进行生成train.txt和val.txt的过程。在为下一步生成lmdb(caffe处理的数据格式)做准备。修改trainDATA和valDATA的路径(这两个就是存放train和val的位置)MY是生成好的train.txt和val.txt保存的位置。


#!/usr/bin/env sh

trainDATA=/home/*/project/Downs

valDATA=/home/*/project/Downs

MY=/home/*/project/Downs

echo "Create train.txt..."

rm -rf $MY/train.txt

find $trainDATA/train -name 100*.jpg | cut-d '/' -f6-7 | sed "s/$/ 0/">>$MY/train.txt

find $trainDATA/train -name 200*.jpg | cut-d '/' -f6-7 | sed "s/$/ 1/">>$MY/train.txt

echo "Create test.txt..."

rm -rf $MY/val.txt

find $valDATA/val -name 100*.jpg | cut -d'/' -f6-7 | sed "s/$/ 0/">>$MY/val.txt

find $valDATA/val -name 200*.jpg | cut -d'/' -f6-7 | sed "s/$/ 1/">>$MY/val.txt

echo "All done"

3、这段是在上一步中生成的train.txt和val.txt文件与train和val文件夹中的图片进行生成lmdb的步骤。MY是需要保存lmdb文件的位置,TRAIN_DATA_ROOT是train文件夹的路径,VAL_DATA_ROOT是val文件夹的路径。同时resize重新调整了图片的大小,是一步简单的图片预处理的操作。(常见的有2828,3232,224224,227227)


#!/usr/bin/env sh

MY=/home/*/project/Downs/

TRAIN_DATA_ROOT=/home/*/project/Downs/

VAL_DATA_ROOT=/home/*/project/Downs/

echo "Create train lmdb.."

rm -rf $MY/img_train_lmdb

/home/*/caffe/build/tools/convert_imageset\

--shuffle \

--resize_height=227 \

--resize_width=227 \

$TRAIN_DATA_ROOT \

$MY/train.txt \

$MY/img_train_lmdb

echo "Create test lmdb.."

rm -rf $MY/img_val_lmdb

/home/*/caffe/build/tools/convert_imageset\

--shuffle \

--resize_height=227 \

--resize_width=227 \

$VAL_DATA_ROOT \

$MY/val.txt \

$MY/img_val_lmdb

echo "All Done.."

4、这个步骤就是利用生成好的img_train_lmdb文件生成均值文件mean.binaryproto。EXAMPLE是img_train_lmdb的存放路径,DATA是生成后的mean.binaryproto存放路径,TOOLS是CAFFE的tools文件夹路径。


#!/usr/bin/env sh

EXAMPLE=/home/*/project/Downs

DATA=/home/*/project/Downs

TOOLS=/home/*/caffe/build/tools

$TOOLS/compute_image_mean$EXAMPLE/img_train_lmdb $DATA/mean.binaryproto

echo "Done."

5、赘述:训练网络时候的命令,封装成train.sh文件方便训练网络。


/home/*/caffe/build/tools/caffe train-solver /home/*/project/Downs/solver4.prototxt

三、life is short的Python
1、这个Python脚本需要安装caffe和numpy。Caffe的骨头是难啃的,装过的同学大家都知道,caffe安装教程另外抽空再写。修改两个路径,即可运行,将均值文件转换为numpy格式的均值文件。(有点顺口溜的感觉,hiahiahiahiahiahiahiahiahia)


import caffe

import numpy as np

prototxt = '/home/* /mean.binaryproto'

npy = '/home/*/ mean.npy'

blob = caffe.proto.caffe_pb2.BlobProto()

data = open(prototxt, 'rb' ).read()

blob.ParseFromString(data)

array =np.array(caffe.io.blobproto_to_array(blob))

mean_npy = array[0]

np.save(npy ,mean_npy)

2、下面这个有些东西的。需要安装face_recognition和PIL。face_recognition是GITHUB上面star颇高的人脸检测的项目,包含了人脸检测、人脸关键点标记等功能。安装过程有些小波澜,也跟caffe一样,抽空整理。下面的脚本基于官方演示代码修改,实现的就是批量完成某文件夹下所有图片的人脸框定位后重新生成新图片的过程。Range函数是可以优化的,评论区的大佬们可给出建议。


import os

from PIL import Image

import face_recognition

Image_Path="/home/*/project/Downs/images/"

Image_Path1="/home/*/project/Downs/images1/"

Image_List=os.listdir(Image_Path)

for i in range(0,4279,1):

    #Load the jpg file into a numpy array

   image = face_recognition.load_image_file("/home/*/project/Downs/images/"+Image_List[i])

    #Find all the faces in the image using the default HOG-based model.

    #This method is fairly accurate, but not as accurate as the CNN model and notGPU accelerated.

    #See also: find_faces_in_picture_cnn.py

   face_locations = face_recognition.face_locations(image)

   print("I found {} face(s) in this photograph.".format(len(face_locations)))

   for face_location in face_locations:

       # Print the location of each face in this image

       top, right, bottom, left = face_location

       print("A face is located at pixel location Top: {}, Left: {}, Bottom:{}, Right: {}".format(top, left, bottom, right))

       # You can access the actual face itself like this:

       face_image = image[top:bottom, left:right]

       pil_image = Image.fromarray(face_image)

       #pil_image.show()

       pil_image.save("/home/*/project/Downs/images1/"+Image_List[i])

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354