- 데이터 준비하기
학습에 쓸 데이터들을 준비 해 보았다.
사이즈는 50*150 jpeg 파일이고 y좌표 75이상에는 상의가 위치, 75이하로는 하의가 위치하도록 데이터를 표준화하였다.
일단 데이터 준비는 노가다고...
해당 데이터에 맞게 픽셀값도 바꾸어주었다.
1
2
3
4
5
6
7
8
|
r_list[0], g_list[0], b_list[0] = rgb_im.getpixel((15, 17))
r_list[1], g_list[1], b_list[1] = rgb_im.getpixel((35, 17))
r_list[2], g_list[2], b_list[2] = rgb_im.getpixel((15, 30))
r_list[3], g_list[3], b_list[3] = rgb_im.getpixel((35, 30))
r_list[4], g_list[4], b_list[4] = rgb_im.getpixel((15, 45))
r_list[5], g_list[5], b_list[5] = rgb_im.getpixel((35, 45))
r_list[6], g_list[6], b_list[6] = rgb_im.getpixel((15, 60))
r_list[7], g_list[7], b_list[7] = rgb_im.getpixel((35, 60))
|
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=(50, 150), #픽셀값
class_mode='categorical', #분류 방식에 대해 지정한다고 하는데 잘 모르겠음
shuffle=True #데이터 순서를 랜덤하게 가져온다.
)
img, label = next(train_generator)
r=g=b = 0
for i in range(4):
im = Image.open(img[i])
rgb_im = im.convert('RGB')
r,g,b = rgb_im.getpixel((15, 17))
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이 빌 수가 있지? 하고
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 값을 추출하는 법!
'파이썬 > 공개SW 프로젝트' 카테고리의 다른 글
[공개SW - 메이킹 로그_15] 자 다시 해보자.. (0) | 2021.08.30 |
---|---|
[공개SW - 메이킹 로그_14] 도움! (0) | 2021.08.29 |
[공개SW - 메이킹 로그_12] 텐서플로우 예제 마무리 + 파이썬 픽셀 좌표 (0) | 2021.08.25 |
[공개SW - 메이킹 로그_11] RGB의 대표값 만들기 + 텐서플로우 예제(이미지분류) (0) | 2021.08.22 |
[공개SW - 메이킹 로그_10] 다중 선형 회귀 분석 예제 (0) | 2021.08.21 |