멋쟁이 사자처럼 AI 스쿨 TIL-46

김영민·2022년 12월 7일
0
post-thumbnail

QnA

  1. 스트라이드(몇 칸씩 이동하는지)를 크게 설정하면?
    => 용량이 줄어들고 학습 속도는 빠릅니다. 하지만 자세히 학습하지 못 하기 때문에 언더피팅이 될 수 있다.

  2. 이미지 증강을 할 때 주의해야 할 사항이 있다면?

=> 증강해도 레이블이 바뀌지 않는 애들만 증강해야 한다 6, 9 같은 애들

  • 증강할 때 train 에만 해줍니다. test에는 해주지 않습니다. 왜냐하면 현실세계 문제를 푼다고 가정했을 때 현실세계 이미지가 들어왔을 때 증강해주지는 않고 들어온 이미지로 판단하기 때문에 train에만 사용합니다.
  • 6을 180도 돌리면 완전히 다른 의미인 9가 되기 때문에 이런 숫자 이미지는 돌리지 않습니다. 색상이 중요한 역할을 하는 이미지일 경우에 색상 반전 혹은 변경을 하면 안 됩니다.
  1. 이미지 증강을 하면 안 되는 현실 상황?
    => 1) 크롭이나 확대 => 노이즈를 확대하거나 크롭하면 더 문제가 될 수 있겠죠!
    2) 회전, 반전 => 6을 180도 돌리면 완전히 다른 의미인 9가 되기 때문에 이런 숫자 이미지는 돌리지 않습니다.
    3) 색상 변경 => 만약 장미꽃이라면 다양한 색상이 있기 때문에 색상을 변경해도 상관이 없지만, 신호등이라면 안전과 직결되기 때문에 변경하면 안 됩니다.
    3) 데이터셋 => 증강할 때 train 에만 해줍니다. test에는 해주지 않습니다. 왜냐하면 현실세계 문제를 푼다고 가정했을 때 현실세계 이미지가 들어왔을 때 증강해주지는 않고 들어온 이미지로 판단하기 때문에 train에만 사용합니다.
    4) 결론 => 증강을 할 때는 현실세계 문제와 연관해서 고민해 봐야 합니다.

  2. CNN 모델을 학습시키는데 내 컴퓨터로 돌렸더니 메모리 오류가 났어요!
    일단 성능(정확도가 낮게 나와도 오류 없이 돌리고 싶을 때)과 관계 없이 돌리고 싶어요! 어떻게 해결하면 좋을까요?
    => 이미지 사이즈를 줄인다.
    => 레이어를 줄인다. 필터수를 줄인다.
    => 배치(한번에 다 불러오지 않고 나눠서 불러오게) 사이즈를 줄인다.

  3. append 와 extend 의 차이?
    => append 는 통째로 넣고 extend 는 풀어서 넣습니다.
    사탕을 다른 봉지에 담을 때
    봉지째 담는다 => append
    낱개로 풀어서 담을 때 => extend

딥러닝

tf.keras

Module: tf.keras.applications
Keras Applications are premade architectures with pre-trained weights.
=> 미리 유명한 모델 아키텍처로 학습을 해서 찾아놓은 가중치를 사용합니다.
=> 간단하게 보면 유명한 모델 아키텍처를 가져다 사용하는 것입니다.

include_top

whether to include the 3 fully-connected layers at the top of the network.
상단에 완전연결 레이어를 추가할 것인지 여부로 False 로 설정해 주었습니다.

  • include_top = True인 경우

  • include_top = False인 경우

실습내용정리

1) 1004 파일을 열고 사본을 생성해 주세요!
2) 런타임 > 런타임 유형 변경 > GPU 나 TPU 로 하드웨어 가속기 설정
3) 캐글에서 파일 다운로드 받기
Weather dataset Kaggle
4) 다운로드 파일 압축을 풀어서 구글 드라이브에 data 폴더에 업로드 하기
5) 구글 드라이브에 업로드한 파일 마운트 하기
6) 파일 경로 읽어오기, 해당 경로의 폴더 별 파일 시각화 하기
7) 파일 사이즈를 변경하는 함수를 만들고 적용하기
8) train, valid, test 변수에 이미지 여러장을 array 만들어서 넣어주는 방법 알아보기

데이터 나누기

  • 이미지 파일을 array 로 만드는 과정은 어렵기 보다는 복잡합니다.
  • 복잡한 문제들이 대체적으로 어렵게 느껴져요.
  • 현업을 할 때도 업무가 복잡합니다. 과정을 이해하는게 중요합니다.
  • 작은 단위로 나눠 보는 것을 추천합니다.

0) 목표 train, valid, test set 에 대한 X, y값 만들기!
1) label 별로 각 폴더의 파일의 목록을 읽어옵니다.
2) 이미지와 label 리스트를 만들어서 넣어줄 예정이에요.
3) test는 폴더가 따로 있어요. 이미지를 불러올 때 test 여부를 체크해서 train, test 를 먼저 만듭니다.
4) train 으로 train, valid 를 나누어 줍니다.

이미지 파일을 array로 만드는 과정

이미지 파일을 array 로 만드는 과정은 어렵기 보다는 복잡합니다.

  • 복잡한 문제들이 대체적으로 어렵게 느껴져요.
  • 현업을 할 때도 업무가 복잡합니다. 과정을 이해하는게 중요합니다.
  • 작은 단위로 나눠 보는 것을 추천합니다.

0) 목표 train, valid, test set 에 대한 X, y값 만들기!
1) label 별로 각 폴더의 파일의 목록을 읽어옵니다.
2) 이미지와 label 리스트를 만들어서 넣어줄 예정이에요.
3) test는 폴더가 따로 있어요. 이미지를 불러올 때 test 여부를 체크해서 train, test 를 먼저 만듭니다.
4) np.array 형태로 변환해 주었습니다.
5) train 으로 train, valid 를 나누어 줍니다.
6) train, valid, test 를 만들어 줍니다.

RGB

RGB 형태의 컬러 디스플레이 방법은 가산혼합 => 다 합치면 흰색이 됩니다.
CMYK 형태의 인쇄 방법은 감산혼합 => 다 합치면 검은색이 됩니다.
RGB는 0~255 로 3개의 R, G, B 빨초파로 표현합니다.
포토샵에서 보면 RGB 컬러값을 지정하는 메뉴도 있습니다.

더 정확한 답을 해드리자면, 현대의 대부분 모니터의 최대 지원 색 심도는 24비트입니다. (물론 더 많이 지원하는 모니터 들도 많이 나왔습니다)

즉 각 픽섹은 2^24(~16.7M)의 색상을 표시할 수 있게 되어있고

24비트 값을 각각 R G B 세개의 색상으로 나누자면 24비트 / 3이므로

각 채널의 폭은 8비트를 가지게 되게 되었습니다.

채널당 8비트라는것을 고려할때 0 ~ 255 (256개)의 숫자 값만 인코딩 할 수 있게 되는 것이 이치에 맞습니다.

profile
배운걸 다 흡수하는 제로민

0개의 댓글