convert_data.lua 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. require './lib/portable'
  2. require 'image'
  3. local settings = require './lib/settings'
  4. local image_loader = require './lib/image_loader'
  5. local function count_lines(file)
  6. local fp = io.open(file, "r")
  7. local count = 0
  8. for line in fp:lines() do
  9. count = count + 1
  10. end
  11. fp:close()
  12. return count
  13. end
  14. local function crop_4x(x)
  15. local w = x:size(3) % 4
  16. local h = x:size(2) % 4
  17. return image.crop(x, 0, 0, x:size(3) - w, x:size(2) - h)
  18. end
  19. local function load_images(list)
  20. local MARGIN = 32
  21. local count = count_lines(list)
  22. local fp = io.open(list, "r")
  23. local x = {}
  24. local c = 0
  25. for line in fp:lines() do
  26. local im = crop_4x(image_loader.load_byte(line))
  27. if im then
  28. if im:size(2) > (settings.crop_size * 2 + MARGIN) and im:size(3) > (settings.crop_size * 2 + MARGIN) then
  29. table.insert(x, im)
  30. end
  31. else
  32. print("error:" .. line)
  33. end
  34. c = c + 1
  35. xlua.progress(c, count)
  36. if c % 10 == 0 then
  37. collectgarbage()
  38. end
  39. end
  40. return x
  41. end
  42. print(settings)
  43. local x = load_images(settings.image_list)
  44. torch.save(settings.images, x)