공부하기싫어
article thumbnail
  • 데이터 준비하기

학습에 쓸 데이터들을 준비 해 보았다.

사이즈는 50*150 jpeg 파일이고 y좌표 75이상에는 상의가 위치, 75이하로는 하의가 위치하도록 데이터를 표준화하였다.

이렇게 30장을하고 친구도 30장을해서 총 60장으로 학습시켜볼 예정이다.

일단 데이터 준비는 노가다고...

해당 데이터에 맞게 픽셀값도 바꾸어주었다.

1
2
3
4
5
6
7
8
r_list[0], g_list[0], b_list[0= rgb_im.getpixel((1517))
r_list[1], g_list[1], b_list[1= rgb_im.getpixel((3517))
r_list[2], g_list[2], b_list[2= rgb_im.getpixel((1530))
r_list[3], g_list[3], b_list[3= rgb_im.getpixel((3530))
r_list[4], g_list[4], b_list[4= rgb_im.getpixel((1545))
r_list[5], g_list[5], b_list[5= rgb_im.getpixel((3545))
r_list[6], g_list[6], b_list[6= rgb_im.getpixel((1560))
r_list[7], g_list[7], b_list[7= rgb_im.getpixel((3560))
cs

y좌표 17, 30, 45, 60 에 두줄로 해서 총 8개의 픽셀값에서 rgb를 불러올 예정이다.

 

  • 데이터셋 만들기

https://www.youtube.com/watch?v=QnN0tj-af3g 

 

Jongkuk Lim 님 유튜브에서 데이터 셋 만드는 과정을 배울 수 있었다.

batch_size 가 뭔지 몰라서 찾아보았는데

https://losskatsu.github.io/machine-learning/epoch-batch/#2-batch-size%EC%9D%98-%EC%9D%98%EB%AF%B8

 

[딥러닝] 배치 사이즈(batch size) vs 에포크(epoch) vs 반복(iteration)의 차이

배치 사이즈(batch size) vs 에포크(epoch) vs 반복(iteration)의 차이

losskatsu.github.io

batch size 는 하나의 소그룹에 속하는 데이터 수를 의미한다.
데이터를 작게 나누는 이유는 트레이닝 데이터를 통째로 신경망에 넣으면 비효율적인 리소스사용으로 학습 시간이 오래 걸리기 때문이다. 라고 한다.

대충 내가 썻던 코드와 짬뽕해가면서 간단하게 배치파일중 한 픽셀 좌표값만 불러올 수 있게만 코딩해보았는데...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import tensorflow as tf
from keras_preprocessing.image import ImageDataGenerator
import numpy as np
from PIL import Image
 
import matplotlib.pyplot as plt
 
Training_data_dir = "D:\CODES\data"
 
batch_size = 4
 
 
#Augmentation은 기존 이미지에 랜덤으로 변화를 주어서 
#적은사진이라도 여러 장 학습한것 처럼 하기 위한 기능이다.
training_data_Augmentation = ImageDataGenerator()
"""
training_data_Augmentation = ImageDataGenerator(
    rescale=1./255, #값범위를 0~1로 만들어 준다.
    rotation_range=0, #40도 각도 안에서 랜덤으로 회전
    width_shift_range=0, #좌우로 움직이는 정도
    height_shift_range=0, #상하로 움직이는 정도
    shear_range=0, #반전하는 정도
    zoom_range=0, #확대하는 정도
    brightness_range=(0,0), #랜덤하게 밝이 조정 앞에가 어두운정도, 뒤에가 밝은정도
    horizontal_flip=False, #좌우반전
    fill_mode='nearest', #이미지 변형에 따라 생기는 공백을 메우는 방식   
)
"""
 
#flow_from_directory 로 경로를 찾아가서 알아서
#딥러닝에 사용될 수 있는 형태로 변경해주는 작업
train_generator = training_data_Augmentation.flow_from_directory(
    Training_data_dir,
    batch_size=batch_size, #batch size 설정
    target_size=(50150), #픽셀값
    class_mode='categorical'#분류 방식에 대해 지정한다고 하는데 잘 모르겠음 
    shuffle=True #데이터 순서를 랜덤하게 가져온다.
)
 
img, label = next(train_generator)
r=g== 0
 
for i in range(4):
    im = Image.open(img[i])
    rgb_im = im.convert('RGB')
    r,g,b = rgb_im.getpixel((1517))
    print('R:'+ str(r) + ' G:' + str(g) + ' B:' + str(b))
cs

자 처음에는 

IndexError: index 0 is out of bounds for axis 0 with size 0

오류가 뜨는데... 어떻게 인덱스 0이 빌 수가 있지? 하고

https://stackoverflow.com/questions/41492288/what-does-index-0-is-out-of-bounds-for-axis-0-with-size-0-mean

 

What does 'index 0 is out of bounds for axis 0 with size 0' mean?

I am new to both python and numpy. I ran a code that I wrote and I am getting this message: 'index 0 is out of bounds for axis 0 with size 0' Without the context, I just want to figure out what this

stackoverflow.com

찾아보았는데 아무래도

class_mode 가 categorical 이여서 그런가?

그래서 해당 경로 안에 폴더를 하나 더 만들어서 해보았는데...

 

...

슥 보니까 아무래도 im=Image.open() 안에 원래 파일 이름이 들어갔는데 img[i] 의 배열이 들어가서 그런가보다... label[i] 로 해봐도 똑같은 오류가 나온다... 이걸 어찌해야할까...

 

image_name = img[i]

im = Image.open(image_name)

 

ㅋㅋ 혹시나 해봤다.

지식인에 물어봐야지... 구글링 한 10분정도 해봐도

찾아지지가 않네...

 

배열안에 속해있는 이미지에 있는 픽셀에서 rgb 값을 추출하는 법!