zoukankan      html  css  js  c++  java
  • 图片尺寸批量resize的matlab并行代码

    在caffe ImageNet例子中有对图片进行resize的部分,文中使用的是linux shell脚本命令:

    for name in /path/to/imagenet/val/*.JPEG; do
        convert -resize 256x256! $name $name
    done
    • 1
    • 2
    • 3

    但该命令在运行后光标就一直处于等待状态,直到所有的图片全部运行结束。这种情况在图片数量比较大时就很恼人(对于ILSVRC2012数据集中的100多万张图片来说,这种状态可能会持续好几天),你不知道程序的运行状况,不知道处理了多少图片,不知道程序大概什么时候能结束。

    因此,本文采用matlab语言中的并行机制来实现图片尺寸的批量resize。 
    代码如下:

    clear;clc;close all;
    tic;            % 用于计算程序运行时间,和toc搭配使用
    CoreNum=6;      % cpu核的数量
    % 下面代码块为并行处理检测与开启程序,需要在执行结束后予以关闭
    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;                % 显示运行时间
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在该代码中,因为我的cpu有6个核,所以设置CoreNum=6。 
    如果我有两个物理cpu,每个有6个核,那么我这里是否可以设置CoreNum=12呢,这样效率会不会成倍提升?由于对matlab的并行处理了解不多,这里就留个疑问,等我知道后再补充,有知道的欢迎交流。

    ————————————————————————————————————————————— 
    在linux中关于cpu的相关信息都在文件/proc/cpuinfo中,用户可以直接查看该文件或使用下面的命令显示需要的信息: 
    1. 显示物理cpu个数

    cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l
    • 1
    1. 显示每个物理cpu的核数
    cat /proc/cpuinfo | grep 'cpu cores' | uniq
    • 1
    1. 显示逻辑cpu的个数
    cat /proc/cpuinfo | grep 'processor' | wc -l
    • 1

    其中: 
    总核数 = 物理CPU个数 X 每颗物理CPU的核数 

    总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

    转自:http://blog.csdn.net/yingyujianmo/article/details/46520253

  • 相关阅读:
    2016改变与突破的一年
    web安全测试&渗透测试之sql注入~~
    后台服务端接口验证项目实例~~
    Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)
    web自动化框架之四测试报告的搭建
    web自动化框架之三获取数据库值与界面值比较~~
    Web自动化框架搭建之二基于数据驱动应用简单实例~~
    web自动化框架之一介绍与环境搭建(Selenium+Eclipse+Python)
    事件响应
    威胁分析
  • 原文地址:https://www.cnblogs.com/alan666/p/8311810.html
Copyright © 2011-2022 走看看