240823 TIL #474 AI Tech #14 3주차 주간 학습 정리

김춘복·2024년 8월 23일
0

TIL : Today I Learned

목록 보기
475/571

Today I Learned

오늘은 과제들 마무리를 하고 심화과제를 살펴봤다.


주간학습정리

일일 학습 정리로 매일 복습, 과제, 피어세션, 회고 정리했고 아래 링크 달았습니다.


과제

이미지 전처리

  • Torchvision, KerasCV, Albumentation등의 라이브러리를 사용할 수 있다.

  • albumentations : 이미지 변환 기능을 제공.

변환 함수설명
HorizontalFlip수평 뒤집기
VerticalFlip수직 뒤집기
Rotate주어진 각도만큼 회전
RandomBrightnessContrast밝기와 대비를 랜덤하게 변경
HueSaturationValue색조, 채도, 명도를 랜덤하게 변경
ShiftScaleRotate이동, 확대, 축소, 회전
Perspective원근 효과 적용
GaussianNoise가우시안 노이즈 적용
Blur이미지 흐리게
  • Torchvision으로 이미지 변환
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
from PIL import Image 


fig, ax = plt.subplots(2, 2, figsize=(9, 9)) 

transform1 = transforms.ColorJitter(brightness=5) # 밝기조정
transform2 = transforms.ColorJitter(contrast=5)# 대비도조정
transform3 = transforms.ColorJitter(saturation=3)# 채도조정
transform4 = transforms.ColorJitter(hue=0.3)# 색상조정

aug_img1 = transform1(test_image)
aug_img2 = transform2(test_image)
aug_img3 = transform3(test_image)
aug_img4 = transform4(test_image)

ax[0, 0].imshow(aug_img1)
ax[0, 1].imshow(aug_img2)
ax[1, 0].imshow(aug_img3)
ax[1, 1].imshow(aug_img4)
  • albumentations으로 이미지 전처리.
import albumentations

def transform(transform_method): # 함수 정의
    fig, ax = plt.subplots(1,2,figsize=(12,9)) # 1행 2열 서브플롯 생성
    transform1 = albumentations.HorizontalFlip(p=1) # 수평 뒤집기 변환. p=1은 항상 적용된다는 뜻
    ax[0].imshow(test_image) # 0번째 서브플롯에 이미지 원본 표시
    ax[1].imshow(transform_method(image=test_image_np)['image']) # 1번째 서브플롯에 변환된 이미지 표시
    ax[0].axis('off') # 축 좌표를 꺼서 이미지만 보이게
    ax[1].axis('off')

    plt.show() # 이미지 표시

텍스트 전처리

  • 한국어는 KoNLPy, Py-Hanspell, PyKoSpacing, SOYNLP 등의 라이브러리로 형태소 분석, 띄어쓰기, 맞춤법 교정, 신조어 처리 등이 가능하다.

  • import re : 정규표현식 라이브러리.

기능설명사용 예시
re.match()문자열의 시작에서 패턴 검색re.match(r'abc', 'abcdef')
re.search()문자열에서 패턴을 검색re.search(r'abc', '123abc456')
re.findall()문자열에서 패턴과 일치하는 모든 부분을 리스트로 반환re.findall(r'\d+', 'abc123def456')
re.sub()패턴과 일치하는 부분을 다른 문자열로 치환re.sub(r'abc', 'xyz', 'abc123abc')
re.split()패턴에 맞춰 문자열을 분할re.split(r',', 'a,b,c,d')
re.compile()패턴을 미리 컴파일하여 성능을 향상pattern = re.compile(r'\d+')
  • re를 이용해서 불용어 처리하는 함수
import re

def clean_str(text):
    pattern = '([a-zA-Z0-9_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)' # E-mail
    text = re.sub(pattern=pattern, repl='', string=text)

    pattern = '(http|ftp|https)://(?:[-\w.]|(?:%[\da-fA-F]{2}))+' # URL
    text = re.sub(pattern=pattern, repl='', string=text)

    pattern = '[ㄱ-ㅎㅏ-ㅣ]+' # 한글 자모음만
    text = re.sub(pattern=pattern, repl='', string=text)

    text = re.sub('[-=+,#/\?:^$.@*\"※~&%ㆍ!』\\‘|\(\)\[\]\<\>`\'…》]','', string=text) # 특수기호
    text = re.sub('\n', '.', string=text)

    return text

피어세션

  • 스페셜 피어세션에서 다른 RecSys 분들을 만나 각자 팀에서 어떻게 하는지 여쭤봤다. 백준 그룹을 써서 코테를 진행한다는 조를 참고 삼아서 우리조도 진행하면 좋을 것 같다.

  • 팀 회고를 진행했다. 자세한 내용은 RecSys-06조 3주차 팀회고

  • 결국 EDA, 데이터 시각화는 누군가를 설득하기 위함이다. 설득할 수 있는 근거가 필요하다.

  • 시뮬레이션, 시연은 현장에서 하면 절대 안된다. 무조건 미리 시연해서 녹화해서 트는게 훨씬 낫다. 당일에 가서 하면 zoom 메모리때문에 실패하는 케이스가 많다!!


마스터클래스

  • EDA 과정에서 HeatMap을 쓰면 색은 사실 구분이 잘 안된다. 숫자가 어필하기 좋다. 30개중에 20개가 살아남았다. 이런 방식으로. 숫자로 어필해라!!

  • EDA에서 회색-오렌지색 같은 색들보다 좀 더 서로 대비되는 색들을 써야 밀도 그래프에선 잘 보인다. 그래디언트 색으로 표현할땐 비슷한 blue색 단색보다 채도도 바뀌면서 청록같은 파랑, 노랑같은 파랑 이렇게 좀 바뀌는게 좋다.

  • Top-down, Bottom-up 방식 둘 다 유용하다. 미리 가설을 세우고 접근하는 방법도, 데이터를 통해서 인사이트를 얻는 방법 둘 다 유용하다.


회고

  • 심화 과제를 진행해보니 EDA 과정이 다각도로 생각해야되는 부분이 많아서 생각보다 어려웠지만 만드는 과정이 재밌었다. 내가 관심가는 데이터를 가지고 한번 EDA를 진행해보면 재밌을 것 같다.

  • 이번 주는 난이도가 저번주에 비해 오히려 쉬워서 집중이 잘 안되고 정리가 좀 어려운 느낌이었다. 다음 주 부터는 좀 다잡고 열심히 진도나가보자!!

profile
Backend Dev / Data Engineer

0개의 댓글