r बैच आर का उपयोग करके समानांतर छवियों का आकार बदलती है



image parallel-processing (1)

मैं आर का उपयोग करके हजारों छवियों के बैच रिसाइज (यानी, फ़ाइल आकार को कम करने) की कोशिश कर रहा हूं। मैंने इसे नीचे दिए गए कोड का उपयोग करते हुए इसे प्राप्त करने में कामयाब किया है, लेकिन इसे उम्र (विशेषकर जब आकार बदलते> 50,000) क्या कोई रास्ता है कि यह काम कई कोर पर चलाया जा सकता है? मैं समानांतर कंप्यूटिंग पर पूर्ण नौसिखिया हूं, इसलिए किसी भी सहायता की बहुत सराहना की जाएगी। अग्रिम में धन्यवाद!

library(imager)    

pages <- list.files(path = '...insert directory path...',
                full.names = TRUE)


for(x in 1:length(pages)) {

file <- load.image(pages[x])

resized <- imresize(file,
                  scale = 0.390625)

save.image(resized,
         file = gsub("JPG", "jpg", paste(pages[x])))

}

गुप्त हथियार जीएनयू समानांतर हैहोमब्रे के साथ इसे स्थापित करें:

brew install parallel

अब, एक आउटपुट डायरेक्टरी बनाएं ताकि आपके इनपुट छवियों को mogrify न आ सकें और समानांतर में mogrify कमांडों का एक समूह mogrify :

mkdir results
parallel -X mogrify -resize 39% -path results ::: *.jpg

जब तक आप इसे लटका नहीं लेते हैं, कृपया एक बैकअप बनाएं !!!

बेंचमार्क

मैंने 400x400 के 1,000 जेपीईजी को यादृच्छिक शोर से भरा और उन्हें क्रमिक रूप से परिवर्तित कर दिया

time for i in *.jpg; do convert $i -resize 39% results/$i; done

real    0m19.086s
user    0m18.615s
sys     0m3.445s

और फिर समानांतर में:

time parallel -X mogrify -resize 39% -path results ::: *.jpg

real    0m3.351s
user    0m23.021s
sys     0m0.706s




parallel-processing