[python] data_prepare

Viewer

copydownloadembedprintName: data_prepare
  1. import numpy as np
  2. import pandas as pd
  3. from PIL import Image
  4. from tqdm import tqdm
  5. import os
  6.  
  7.  
  8. # chuyen doi chuoi thanh so
  9. def atoi(s):
  10.     n = 0
  11.     for i in s:
  12.         n = n * 10 + ord(i) - ord("0")
  13.     return n
  14.  
  15.  
  16. # tao cac thu muc
  17. outer_names = ['test', 'train']
  18. inner_names = ['angry', 'disgusted', 'fearful', 'happy', 'sad', 'surprised', 'neutral']
  19. os.makedirs('data', exist_ok=True)
  20. for outer_name in outer_names:
  21.     os.makedirs(os.path.join('data', outer_name), exist_ok=True)
  22.     for inner_name in inner_names:
  23.         os.makedirs(os.path.join('data', outer_name, inner_name), exist_ok=True)
  24.  
  25. #dem du lieu trong dataset
  26. angry = 0
  27. disgusted = 0
  28. fearful = 0
  29. happy = 0
  30. sad = 0
  31. surprised = 0
  32. neutral = 0
  33. angry_test = 0
  34. disgusted_test = 0
  35. fearful_test = 0
  36. happy_test = 0
  37. sad_test = 0
  38. surprised_test = 0
  39. neutral_test = 0
  40.  
  41. # chuyen doi du lieu thanh data frame
  42. df = pd.read_csv('./fer2013.csv')
  43. mat = np.zeros((48, 48), dtype=np.uint8)
  44. print("Saving images...")
  45.  
  46. # doc tung dong cua file
  47. for i in tqdm(range(len(df))):
  48.     txt = df['pixels'][i]
  49.     words = txt.split()
  50.  
  51.     # kich co anh la 48x48
  52.     for j in range(2304):
  53.         xind = j // 48
  54.         yind = j % 48
  55.         mat[xind][yind] = atoi(words[j])
  56.  
  57.     img = Image.fromarray(mat)
  58.  
  59.     # bo du lieu de train
  60.     if i < 28709:
  61.         if df['emotion'][i] == 0:
  62.             img.save('./data/train/angry/im' + str(angry) + '.png')
  63.             angry += 1
  64.         elif df['emotion'][i] == 1:
  65.             img.save('./data/train/disgusted/im' + str(disgusted) + '.png')
  66.             disgusted += 1
  67.         elif df['emotion'][i] == 2:
  68.             img.save('./data/train/fearful/im' + str(fearful) + '.png')
  69.             fearful += 1
  70.         elif df['emotion'][i] == 3:
  71.             img.save('./data/train/happy/im' + str(happy) + '.png')
  72.             happy += 1
  73.         elif df['emotion'][i] == 4:
  74.             img.save('./data/train/sad/im' + str(sad) + '.png')
  75.             sad += 1
  76.         elif df['emotion'][i] == 5:
  77.             img.save('./data/train/surprised/im' + str(surprised) + '.png')
  78.             surprised += 1
  79.         elif df['emotion'][i] == 6:
  80.             img.save('./data/train/neutral/im' + str(neutral) + '.png')
  81.             neutral += 1
  82.  
  83.     # bo du lieu de test
  84.     else:
  85.         if df['emotion'][i] == 0:
  86.             img.save('./data/test/angry/im' + str(angry_test) + '.png')
  87.             angry_test += 1
  88.         elif df['emotion'][i] == 1:
  89.             img.save('./data/test/disgusted/im' + str(disgusted_test) + '.png')
  90.             disgusted_test += 1
  91.         elif df['emotion'][i] == 2:
  92.             img.save('./data/test/fearful/im' + str(fearful_test) + '.png')
  93.             fearful_test += 1
  94.         elif df['emotion'][i] == 3:
  95.             img.save('./data/test/happy/im' + str(happy_test) + '.png')
  96.             happy_test += 1
  97.         elif df['emotion'][i] == 4:
  98.             img.save('./data/test/sad/im' + str(sad_test) + '.png')
  99.             sad_test += 1
  100.         elif df['emotion'][i] == 5:
  101.             img.save('./data/test/surprised/im' + str(surprised_test) + '.png')
  102.             surprised_test += 1
  103.         elif df['emotion'][i] == 6:
  104.             img.save('./data/test/neutral/im' + str(neutral_test) + '.png')
  105.             neutral_test += 1
  106.  
  107. print("Done!")
  108.  

Editor

You can edit this paste and save as new:


File Description
  • data_prepare
  • Paste Code
  • 11 Dec-2023
  • 3.27 Kb
You can Share it: