OpenCV 는 이미지 처리에 도움

 

yolov5 설치시 이미 같이 설치됨 원래같으면 설치 해야함

이미지 불러오기

이미지 띄우기 - 2가지 방법

  • matplotlib 사용

  • 이미지가 파란 이유 ? matplotlib 에선 이미지를 BGR로 이미지를 읽지만 불러올때는 RGB로 가져왔기 때문
  • img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
    • 이미지를 변환해줌

  • 흑백 변환시

 

  • 이렇게 opencv 로 이미지를 띄우면 번거롭다는 의견
  • 이미지의 0,0은 와측 상단이다

img = cv2.imread('cat.1502.jpg')
# 사각형 그리기
# 50, 70
# 250, 300
# 이미지, 좌상단좌표, 우하단좌표, 색상, 선크기
cv2.rectangle(img, (65,85), (245,280), (0,0,255), 3)
cv2.imshow('cat',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

이미지에 글자 넣기

 

 

 

 

영상 띄우기

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 특성추출부와 분류부가 있는데 
  • 특성추출부만 사용할 것이다
    • 잘만들어진 특징을 잘 추출하는 모델의 특징 추출부만 가져옴
  • 분류부를 사용하지 않는 이유
    • 추출된 특징으로 사자와 호랑이를 

 

 

 

 

1등이 구글넷

2등이 VGG넷인데

2등 모델을 사용할 것이다

가벼워서

 

 

 

 

 

 

다른사람이 만든 모델의 특징추출부 가져오기

 

 

 

 

conv_base.summary() - 층 확인하기

 

 

 

 

 

 

우리가 할 수 있는건 Classification 은 할 수 있고, 

 

이제 할 건 Object Detection 이당

 

 

  • Yolo 모델 사용 (객체 탐지 모델)

 

위치 탐지

범위

거리파악 가능

 

  • 제일 어려운게 데이터 준비

 

 

우리가 앞으로 해야할 순서

  1. roboflow > 이미지 라벨링 사이트 > 1시간 30분
  2. 코랩에서 YOLO 학습하기 > 2시간
  3. jupyter notebook 에서 학습한 모델 사용해서 객체 인식하기(OpenCv) > 2시간

 

이미지라벨링 할 수 있는 사이트

  • 가입하기

 

 

 

 

 

 

 

두개 입력하고 create 

 

 

 

 

 

고양이 0~99 까지 총 100장 드래그 앤 드랍

강아지도 100장 옮기기

총 200장이 됨

 

save and Continue 클릭

 

오른쪽 하단 Assign Images 클릭

'

Start Annotating 클릭

200당 해주기

뒤로가기

 

 

 

 

 

 

 

 

 

 

 

 

 

 

완료 화면

 

 

이화면이 나옴

터미널로 이동해서

코드 복사

 

 

 

새노트 생성

 

 

 

 

 

 

 

 

이미지의 위치를 나타내는 정보

0~1까지의 숫자

 

  1. 0 : 첫번째는 클래스
  2.  0.41171875 0.28125 0.55625 0.47109375 : 객체위치

가로 600 세로 450

 

 

데이터에 대한 설명

클래스 몇개인지

클래스 이름은 무엇인지

 

mv 명령어

  • 여러가지 매개변수를 받을 수 있다
  • 맨 마지막 /content/dataset 인 곳에 앞에 파일을 다 집어넣는다

 

  • yolo를 학습시키기 위해 train.py 파일 실행시킬것임
  • data.yaml 에 있는 데이터셋 정보를 알려줌
  • 여기 있으니 알아서 사용해
  • train : train 데이터 경로 (각 파일마다의 경로) 가 적힌 파일
  • train : content/dataset/train.txt 파일을 만듬

 

 

 

valid 도 똑같이 바꿔주기

 

 

이미지 경ㄹ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'수업 > 딥러닝' 카테고리의 다른 글

[10일차] OpenCV  (0) 2023.05.24
[딥러닝] 7일차 - 이미지 데이터 학습, 데이터 확장  (0) 2023.05.17
[딥러닝] 6일차 - cnn  (0) 2023.05.15
[딥러닝] 4일차 -  (0) 2023.05.10
[딥러닝] 3일차 - 다중분류 실습  (0) 2023.05.09

 

데이터 구글 드라이브에 옮기기

 

시간 좀 걸림

 

데이터를 확인해 보면 

 

개와 고양이 사진 데이터

  • train : 각 1000장 총 2000장
  • validation: 각 500장 총 1000장
  • test: 각 11장 총 22장

하나의 픽셀에 0~ 255 사이의 값이 하나 들어있음

흑백 (Gray) = 500 * 500 

컬러 (RGB) = (500 * 500 ) * 3

  • 이미지 학습이지만 실은 숫자 데이터 학습이다
  •  이미지 파일 받아오기(0 ~ 255 사이의 숫자로 이루어짐)
  •  해야할 일
    • 1. 한 변수에 전체 이미지 담기
    • 2. 크기 동일하게 만들어주기 (150, 150) (사진마다 크기가 제각각이기에)
    • 3. 라벨링
    • 4. 0 ~ 255(정수) > 0 ~ 1 (실수) > 분산을 줄이자
      • => 이대로 사용하면 문제가 발생 숫자가 큰게 더 중요한 걸 까 라고 생각할 수 있음
      • 때문에 의도와 다른 많은 가중치를 부여할 수 있음

 

이미지 데이터를 숫자화 시켜주는 라이브러리

 

 

 

 

 

런타임 끊겼다 다시 실행

 

 

특징 추출 부

  • conv 와 pool 은 한쌍이다 

 

분류부

 

학습방법 설정

 

학습

  • 입력층에서는 학습할게 많아서 오래걸리고 그 후부터는 빨라짐

 

  • 과대 적합이 발생

 

과대적합 시각화

 

 

컴퓨터가 특징을 찾는 방법

 

 

 

 

  • 데이터 수의 증가 -> 1000장 -> 10000장으로 늘리는 방법
    • 한계가 있기에 증가는 조금 어렵고 확장을 시켜본다.

 

 

데이터의 확장

  • 기존의 데이터를 변환해서 사용한다
  • 확장전의 데이터도 가지고 있다.
  • 기본기같은 느낌
  • 확장 전의 데이터로도 학습이 잘 되었으면 확장을 안해도 된다

 

순서는

  • 기본데이터로 먼저 학습
    • 결과가 좋다 -> 바로 사용
    • 결과가 안좋다 -> 확장데이터로 추가학습

 

 

모델 저장 방법, 모델 불러오기

  • 코랩 연결이 끊겼을 때 모델 날라간 경우 ㅠ
  • 혹시 모르니 저장해 놓자

데이터 확장 기능 추가

확장된 기능
기존 기능

 

  • 데이터가 없는 부분은 저렇게 주변의 데이터로 채움

 

 

 

과대적합 피하는 층 쌓기

  • 학습 할 때마다 특정 층들만 사용
  • 사용할 때마다 전체가 아닌 골라서 사용함
  • 특정 노드에 가중치가 몰리는 현상을 완화시켜줌

  • 30 % 는 사용하지 않음

단점

  • 학습할 때 속도가 느려짐
  •  

다음 시간은 전이학습 배울 예정

  • 다른 사람이 많은 데이터로 많은 층으로 잘 학습 시킨 모델 가져와서 약간 수정하고 사용하기

 

https://huggingface.co/models

 

Models - Hugging Face

 

huggingface.co

 

 

다른 사람이 만든 모델 올려놓는 사이트 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'수업 > 딥러닝' 카테고리의 다른 글

[10일차] OpenCV  (0) 2023.05.24
[딥러닝] 8일차 - 다른사람이 만든 모델 (cnn)  (0) 2023.05.18
[딥러닝] 6일차 - cnn  (0) 2023.05.15
[딥러닝] 4일차 -  (0) 2023.05.10
[딥러닝] 3일차 - 다중분류 실습  (0) 2023.05.09

+ Recent posts