Bladeren bron

Add use_transparent_png option

nagadomi 9 jaren geleden
bovenliggende
commit
145b47dbf5
2 gewijzigde bestanden met toevoegingen van 30 en 15 verwijderingen
  1. 28 15
      convert_data.lua
  2. 2 0
      lib/settings.lua

+ 28 - 15
convert_data.lua

@@ -32,28 +32,41 @@ local function load_images(list)
    local MARGIN = 32
    local lines = utils.split(file.read(list), "\n")
    local x = {}
+   local skip_notice = false
    for i = 1, #lines do
       local line = lines[i]
       local im, meta = image_loader.load_byte(line)
+      local skip = false
       if meta and meta.alpha then
-	 im = alpha_util.fill(im, meta.alpha, torch.random(0, 1))
-      end
-      if settings.max_training_image_size > 0 then
-	 im = crop_if_large(im, settings.max_training_image_size)
-      end
-      im = iproc.crop_mod4(im)
-      local scale = 1.0
-      if settings.random_half_rate > 0.0 then
-	 scale = 2.0
-      end
-      if im then
-	 if im:size(2) > (settings.crop_size * scale + MARGIN) and im:size(3) > (settings.crop_size * scale + MARGIN) then
-	    table.insert(x, compression.compress(im))
+	 if settings.use_transparent_png then
+	    im = alpha_util.fill(im, meta.alpha, torch.random(0, 1))
 	 else
-	    io.stderr:write(string.format("\n%s: skip: image is too small (%d > size).\n", line, settings.crop_size * scale + MARGIN))
+	    skip = true
+	 end
+      end
+      if skip then
+	 if not skip_notice then
+	    io.stderr:write("skip transparent png (settings.use_transparent_png=0)\n")
+	    skip_notice = true
 	 end
       else
-	 io.stderr:write(string.format("\n%s: skip: load error.\n", line))
+	 if settings.max_training_image_size > 0 then
+	    im = crop_if_large(im, settings.max_training_image_size)
+	 end
+	 im = iproc.crop_mod4(im)
+	 local scale = 1.0
+	 if settings.random_half_rate > 0.0 then
+	    scale = 2.0
+	 end
+	 if im then
+	    if im:size(2) > (settings.crop_size * scale + MARGIN) and im:size(3) > (settings.crop_size * scale + MARGIN) then
+	       table.insert(x, compression.compress(im))
+	    else
+	       io.stderr:write(string.format("\n%s: skip: image is too small (%d > size).\n", line, settings.crop_size * scale + MARGIN))
+	    end
+	 else
+	    io.stderr:write(string.format("\n%s: skip: load error.\n", line))
+	 end
       end
       xlua.progress(i, #lines)
       if i % 10 == 0 then

+ 2 - 0
lib/settings.lua

@@ -53,6 +53,7 @@ cmd:option("-downsampling_filters", "Box,Lanczos,Sinc", '(comma separated)downsa
 cmd:option("-gamma_correction", 0, 'Resizing with colorspace correction(sRGB:gamma 2.2) in scale training (0|1)')
 cmd:option("-upsampling_filter", "Box", 'upsampling filter for 2x scale training (dev)')
 cmd:option("-max_training_image_size", -1, 'if training image is larger than N, image will be crop randomly when data converting')
+cmd:option("-use_transparent_png", 0, 'use transparent png (0|1)')
 
 local function to_bool(settings, name)
    if settings[name] == 1 then
@@ -69,6 +70,7 @@ end
 to_bool(settings, "plot")
 to_bool(settings, "save_history")
 to_bool(settings, "gamma_correction")
+to_bool(settings, "use_transparent_png")
 
 if settings.plot then
    require 'gnuplot'