matlab 图片 并行,图片尺寸批量resize的matlab并行代码
在caffe ImageNet例子中有對圖片進行resize的部分,文中使用的是linux shell腳本命令:
for name in /path/to/imagenet/val/*.JPEG; do
convert -resize 256x256\! $name $name
done
但該命令在運行后光標就一直處于等待狀態(tài),直到所有的圖片全部運行結(jié)束。這種情況在圖片數(shù)量比較大時就很惱人(對于ILSVRC2012數(shù)據(jù)集中的100多萬張圖片來說,這種狀態(tài)可能會持續(xù)好幾天),你不知道程序的運行狀況,不知道處理了多少圖片,不知道程序大概什么時候能結(jié)束。
因此,本文采用matlab語言中的并行機制來實現(xiàn)圖片尺寸的批量resize。
代碼如下:
clear;clc;close all;
tic; % 用于計算程序運行時間,和toc搭配使用
CoreNum=6; % cpu核的數(shù)量
% 下面代碼塊為并行處理檢測與開啟程序,需要在執(zhí)行結(jié)束后予以關閉
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 % 從3開始,因為前兩個是當前路徑‘.’和上一級路徑‘..’
j = i-2;
disp(j);
imageFile = strcat(imagePath,imageFiles(i).name);
A = imread(imageFile);
B = imresize(A,[256 256]); % resize為256x256
imwrite(B,imageFile); % 覆蓋原始圖片,若需要另存為,則修改此處的imageFile為新的存儲路徑
end
matlabpool close % 關閉并行
toc; % 顯示運行時間
在該代碼中,因為我的cpu有6個核,所以設置CoreNum=6。
如果我有兩個物理cpu,每個有6個核,那么我這里是否可以設置CoreNum=12呢,這樣效率會不會成倍提升?由于對matlab的并行處理了解不多,這里就留個疑問,等我知道后再補充,有知道的歡迎交流。
—————————————————————————————————————————————
在linux中關于cpu的相關信息都在文件/proc/cpuinfo中,用戶可以直接查看該文件或使用下面的命令顯示需要的信息:
1. 顯示物理cpu個數(shù)
cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l
顯示每個物理cpu的核數(shù)
cat /proc/cpuinfo | grep 'cpu cores' | uniq
顯示邏輯cpu的個數(shù)
cat /proc/cpuinfo | grep 'processor' | wc -l
其中: 總核數(shù) = 物理CPU個數(shù) X 每顆物理CPU的核數(shù) 總邏輯CPU數(shù) = 物理CPU個數(shù) X 每顆物理CPU的核數(shù) X 超線程數(shù)
總結(jié)
以上是生活随笔為你收集整理的matlab 图片 并行,图片尺寸批量resize的matlab并行代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安超云生态|携手中电福富 打造党政协同一
- 下一篇: mingw32-make.exe缺少的方