세로형
Recent Posts
Recent Comments
Link
11-26 00:01
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

꿈 많은 사람의 이야기

파이썬 케라스(keras)로CNN 딥러닝하자! cat dog binary image classification 본문

deep learning(딥러닝)

파이썬 케라스(keras)로CNN 딥러닝하자! cat dog binary image classification

이수진의 블로그 2018. 7. 4. 16:24
반응형
728x170

 

모든 코드는 아래 깃허브에 올려놓았습니다. 
https://github.com/lsjsj92/keras_basic

 


지난번까지 multi classification 이미지 분류를 해봤습니다

하지만 모든 카테고리 분류가 multi이지는 않죠~

그래서 이번에는 이진 분류(binary classification)을 해보겠습니다

 

cat dog로 해볼게요

개냐 고양이냐?를 판단하는 이미지 분류 작업입니다

 

 

폴더는 2개입니다

cat, dog 즉, 고양이 강아지 이렇게 입니다.

 

 

 

그리고 각 폴더 아래에 이렇게 고양이 사진들이 있죠.

고양이와 강아지(개) 사진은 크롤링해서 긁어 왔습니다

 

 

그리고 각 사진은 25000개 정도 있습니다.

데이터는 충분한 것 같네요

keras의 ImageDataGenerator를 굳이 사용안해도 될 것 같았습니다.

 

 

저는 사진 크기를 64x64 크기로 변환할 것입니다.

그래서 weight와 height를 64씩 주었습니다.

 

 

반응형

그 다음으로 이제 이미지 변환을 해줍니다.

각 이미지를 가지고 와서 RGB형태로 변환해준 뒤 resize해줍니다.

그리고 그 값을 numpy 배열로 바꾸고 배열에 추가해주죠.

동시에 category 값도 넣어줍니다(Y)

 

 

이제 컨볼루션 레이어(Conv2D)를 통해 이미지 인식 레이어를 구축합니다.

input_shape에는 64, 64, 3 값이 들어갑니다.

MaxPooling2D는 2x2사이즈로 지정해주고요

각 padding은 same, 마지막 출력층을 제외한 activation은 렐루(relu)로 합니다

그리고 얘는 2진 분류(카테고리가 2개)이니까 binary값으로 출력을 지정해줍니다.

 

 

val_loss값이 5번 이상 상승되지 않으면 자동적으로 멈추게 했습니다.(오버피팅, overfitting 방지)

batch_size는 64, epochs는 100번씩 돌면서 model을 fit 시켰습니다.

그 결과는 아래와 같습니다.

 

 

 

뭔가 불안정해 보이기도 하지만

훈련은 잘 되었습니다

정확도는 87%정도 나오네요

 

컨볼루션 레이어 계층들을 조금씩 수정해주거나 등등 하면 92%까지 올라가는 것을 확인했습니다.

 

이제 predict를 해볼까요?

해당 이미지 말고 전혀 다른 이미지로 예측을 해보았습니다.

 

 

테스트할 이미지를 변환할 소스입니다.

맨 처음 이미지를 RGB로 변환할 때와 같습니다.

300x250

 

그리고 해당 이미지를 predict합니다

테스트할 파일은 아래와 같이

 

 

2개의 폴더에 들어가있구요

 

 

전혀 다른 이미지로 구성되어 있습니다

이제 테스트를 해볼까요?

 

 

 

이렇게 나오네요

역시 100%가 아니라서 맞추지 못하는 것도 있습니다.

그래도 되긴되네요~

 

반응형
그리드형
Comments