convert_data.lua 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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 count = count_lines(list)
  21. local fp = io.open(list, "r")
  22. local x = {}
  23. local c = 0
  24. for line in fp:lines() do
  25. local im = crop_4x(image_loader.load_byte(line))
  26. if im then
  27. if im:size(2) >= settings.crop_size * 2 and im:size(3) >= settings.crop_size * 2 then
  28. table.insert(x, im)
  29. end
  30. else
  31. print("error:" .. line)
  32. end
  33. c = c + 1
  34. xlua.progress(c, count)
  35. if c % 10 == 0 then
  36. collectgarbage()
  37. end
  38. end
  39. return x
  40. end
  41. print(settings)
  42. local x = load_images(settings.image_list)
  43. torch.save(settings.images, x)