22.11.16(수) Today I Learned

정형빈·2022년 11월 17일
0

TIL

목록 보기
50/71

11/16 오늘의 시간표

09:00 ~ 10:00 [원격] 딥러닝을 통한 이미지처리 구현
10:00 ~ 11:00 [원격] 딥러닝을 통한 이미지처리 구현
11:00 ~ 12:00 [원격] 딥러닝을 통한 이미지처리 구현
12:00 ~ 13:00 [원격] 딥러닝을 통한 이미지처리 구현
13:00 ~ 14:00 점심식사
14:00 ~ 15:00 [원격] 딥러닝을 통한 이미지처리 구현
15:00 ~ 16:00 [원격] 딥러닝을 통한 이미지처리 구현
16:00 ~ 17:00 [원격] 딥러닝을 통한 이미지처리 구현
17:00 ~ 18:00 [원격] 딥러닝을 통한 이미지처리 구현
18:00 ~ 19:00 저녁식사
19:00 ~ 20:00 [원격] 딥러닝을 통한 이미지처리 구현
20:00 ~ 21:00 [원격] 딥러닝을 통한 이미지처리 구현

오늘부터는 딥러닝 원격 강의 기간이다. 딥러닝 강의는 필요한 사람에따라 다른 강의에 조금 더 집중을 해도 된다고 하셨지만 나는 팀 내 딥러닝 담당자로 신청했기 때문에 딥러닝쪽 강의를 우선적으로 들어야 한다.

딥러닝을 통한 이미지처리 구현 원격강의

WEEK1

필수프로그램 설치

이번 강의에서 사용할 프로그램들을 미리 설치하는 단계이다. 이번에는 새롭게 아나콘다라는 가상환경을 구축하여 거기에 필요한 패키지들을 설치하고 작업을 실시하게 된다.
원래라면 금방 끝내고 바로 강의 영상을 따라가겠지만 처음부터 난관에 부딪혔다.

가상환경과 vs코드의 연동을 확인하던 중 패키지 버전확인을 하니 저런식으로 오류가 발생했다. 자세한 내용은 잘 모르지만 대충 numpy 패키지의 버전이 잘못된 것 같아서 삭제하고 재설치를 해보았다. 이번엔 numpy 설치과정에서 오류가 생겼는데

ERROR : pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.

라는 메세지와 함께 설치가 제대로 되지 않는 것 같았다. 해당 오류를 구글링을 통해 찾아보니 설치하려고 하는 패키지에서 요구하는 패키지의 버전과 내 가상환경에 설치되어 있는 패키지의 버전이 달라서 일어나는 오류라고 한다. 그래서 오류코드에서 표기되는 패키지들을 모두 수동으로 pip install -U (패키지명)으로 업데이트 해주니 해결되었다.

딥러닝이란?

딥러닝과 알고리즘에 대한 이론적인 강의였다.
예전에 머신러닝 원격 강의 기간때 정리해 둔 내용과 거의 일치 하므로 이를 참고하면 좋을 것이다.
10.12 딥러닝 관련 정리 TIL

딥러닝을 위한 파이썬 기초

  • 딥러닝 강의를 들으면서 사용하게 될 패키지들의 버전을 확인하는 시간이었다. opencv와 dlib, tensorflow 등의 버전을 확인했다.

이미지 처리

  • opencv로 이미지파일을 열어서 확인하는 강의였다. 코드 자체는 굉장히 쉽지만 코드의 원리 같은건 너무 어려우니 그냥 이런 기능을하는 코드구나 정도만 생각해 두면 좋을 것 같다. 지난 프로젝트들에서 여러번 다루어본 패키지이기 때문에 익숙하기도 해서 쉽게 들을 수 있는 강의였다.
    opencv 주요 함수 정리 블로그 링크
    해당 링크를 확인해보면 opencv에서 사용되는 기본 함수들에 대한 설명이 잘 되어있어 도움이 되었다.

이미지 처리 기초

  • 이미지 파일에 좌표를 찍어 사각형, 원 등의 도형을 그리는 법, 이미지를 자르는 법, 이미지의 크기를 변경하는 법, 이미지의 컬러 시스템을 변경하는 법 등이 있었다.
import cv2

img = cv2.imread(r'week1\01.jpg')

print(img)
print(img.shape)

cv2.rectangle(img, pt1=(259,89), pt2=(380,348), color =(255, 0, 0), thickness=2) # 사각형 그리기
cv2.circle(img, center=(320, 220), radius=100, color=(0, 0, 255), thickness=3) # 원 그리기

cropped_img = img[89:348, 259:380] # 이미지 자르기

img_resized = cv2.resize(img, (512, 256)) # 이미지 사이즈 조절

img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 이미지 컬러 시스템 변경

cv2.imshow('rgb', img_rgb) 
cv2.imshow('resized', img_resized)
cv2.imshow('crop', cropped_img)
cv2.imshow('result', img)
cv2.waitKey(0)

이미지 처리 심화

  • 배경 위에 다른 이미지 합성하기
import cv2

img = cv2.imread('01.jpg')
# 배경의 투명도를 유지한 채 로드하기 위해서 cv2.IMREAD_UNCHANGED를 꼭! 붙여준다.
overlay_img = cv2.imread('dices.png', cv2.IMREAD_UNCHANGED)

overlay_img = cv2.resize(overlay_img, dsize=(150, 150)) # 사이즈 조절

overlay_alpha = overlay_img[:, :, 3:] / 255.0 
background_alpha = 1.0 - overlay_alpha # 이미지 끼워맞추기

x1 = 100
y1 = 100
x2 = x1 + 150
y2 = y1 + 150

img[y1:y2, x1:x2] = overlay_alpha * overlay_img[:, :, :3] + background_alpha * img[y1:y2, x1:x2] # 오버레이 이미지의 위치, 크기 설정

cv2.imshow('result', img)
cv2.waitKey(0)

동영상 처리

  • 동영상 파일 출력하기
import cv2

cap = cv2.VideoCapture('04.mp4') # 동영상 파일 불러오기

while True: # 영상파일을 반복재생하기 위한 while문 작성
	ret, img = cap.read() # 영상파일에서 한 개의 프레임 읽어오기

	if ret == False: # 프레임이 멈추거나 에러가 발생하면 종료
		break

	cv2.imshow('result', img) # 윈도우에서 출력
	
	if cv2.waitKey(1) == ord('q'):
		break

동영상 처리 심화

  • 이미지와 마찬가지로 도형 출력, 컬러 시스템 변경, 영상 크기 변환, 영상 자르기 등
import cv2

cap = cv2.VideoCapture('04.mp4')

while True:
    ret, img = cap.read()
 
    if ret == False:
        break
    
    cv2.rectangle(img, pt1=(721, 183), pt2=(878, 465), color=(255, 0, 0), thickness=2)

    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    img = cv2.resize(img, dsize=(640, 360))

    img = img[100:200, 150:250]

    cv2.imshow('result', img)

    if cv2.waitKey(1) == ord('q'):
        break

1주차 숙제

  • 이 영상을 방금 만든 동영상 플레이어로 출력해봅시다. 아래 조건을 만족하면서요.
    1. 왼쪽 위 (x=721, y=183) 에서 오른쪽 아래 (x=878, y=465) 까지 영상을 자릅니다. (또는 원하는 범위를 찾아서 잘라봅시다)
    2. 영상을 그레이스케일로 변환합니다.
    3. 가공된 영상을 출력합니다.
import cv2

cap = cv2.VideoCapture('03.mp4')

while True:
    ret, img = cap.read()

    if not ret:
        break

    cropped_img = img[183:465, 721:878]
    cropped_img = cv2.cvtColor(cropped_img, cv2.COLOR_BGR2GRAY)

    cv2.imshow('cropped_img', cropped_img)
    cv2.imshow('result', img)
    if cv2.waitKey(1) == ord('q'):
        break

오늘 하루를 마치며

오늘부터 새롭게 시작된 딥러닝 강의 1주차를 진행한 하루였다. 매번 원격강의마다 느끼는 거지만 첫 주차는 프로그램 및 패키지 설명과 이론이 중점이 되기 때문에 비교적 쉬운 편이었다. 딥러닝에 관해서는 저번에 해봤던 경험이 남아있기도 하고 해서 비교적 강의를 따라가기 수월했던 것 같다. 하지만 팀에서 딥러닝 담당자로 맡은 역할을 하려면 강의 뿐만아니라 내일 특강도 집중해서 들어서 해당 부분에서 강점을 가지는 개발자가 되도록 노력하겠다.

profile
스파르타 내일배움캠프 3기 수강생 정형빈

0개의 댓글