在caffe ImageNet例子中有对图片进行resize的部分,文中使用的是linux shell脚本命令:linux
for name
in /path/to/imagenet/val/*.JPEG;
do
convert -resize
256x256\!
$name $name
done
但该命令在运行后光标就一直处于等待状态,直到全部的图片所有运行结束。这种状况在图片数量比较大时就很恼人(对于ILSVRC2012数据集中的100多万张图片来讲,这种状态可能会持续好几天),你不知道程序的运行情况,不知道处理了多少图片,不知道程序大概何时能结束。shell
所以,本文采用matlab语言中的并行机制来实现图片尺寸的批量resize。
代码以下:bash
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
clear;clc;close all;
tic;
CoreNum=
6;
if matlabpool(
'size')<=
0
matlabpool(
'open',
'local',CoreNum);
else
disp(
'Already initialized');
end
imagePath =
'rastaPlpSpec/train/';
imageFiles = dir(imagePath);
numFiles =
length(imageFiles);
parfor i=
3:numFiles
j =
i-
2;
disp(
j);
imageFile = strcat(imagePath,imageFiles(
i).name);
A = imread(imageFile);
B = imresize(A,
[256 256]);
imwrite(B,imageFile);
end
matlabpool close
toc;
在该代码中,由于个人cpu有6个核,因此设置CoreNum=6。
若是我有两个物理cpu,每一个有6个核,那么我这里是否能够设置CoreNum=12呢,这样效率会不会成倍提高?因为对matlab的并行处理了解很少,这里就留个疑问,等我知道后再补充,有知道的欢迎交流。ui
—————————————————————————————————————————————
在linux中关于cpu的相关信息都在文件/proc/cpuinfo中,用户能够直接查看该文件或使用下面的命令显示须要的信息:
1. 显示物理cpu个数spa
cat /proc/cpuinfo |
grep 'physical id' |
sort | uni
q | wc -l
- 显示每一个物理cpu的核数
cat /proc/cpuinfo |
grep 'cpu cores' | uniq
- 显示逻辑cpu的个数
cat /proc/cpuinfo | grep
'processor' | wc
-l
其中:
总核数 = 物理CPU个数 X 每颗物理CPU的核数
.net
总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数线程
转自:http://blog.csdn.net/yingyujianmo/article/details/46520253code