sejongresearch / RecycleClassification

리사이클 팀, 재활 용품 분류기 (2019)
1 stars 2 forks source link

6월5일 수요일 회의록입니다. #19

Open Seeun-Lim opened 5 years ago

Seeun-Lim commented 5 years ago
  1. 학습 부분 / 평가 부분

    VGGNET과 Resnet을 이용하여 학습 코드를 작성함. VGGNET을 이용했을 때, 총 학습 시간은 40분 정도 임. VGGNET에서 epoch /학습acc(%) /평가acc(%) 50 / 97 / 53.33 35 / 97 / 33.33 30 / 95~96 / 66.67 25 / 95 / 33.33

코드 문제점>>

  1. epoch가 50일때, 총 train데이터의 개수는 2180개, test데이터 개수는 210개인데, 평가 코드에 잘못 평가된 데이터 들에 대한 사진과 'A인데 B로 잘못 분류되었다' 라는 문구를 출력해보았는데 210개 중에 120개의 오류가 나타남. 평가 정확도가 60%이면 210개 중, 84개의 오류가 나타나야 하는데 그와 반대인 120개의 오류가 나타났으므로 평가 정확도는 40%가 옳다는 팀원 회의 결과가 나옴.
  2. 학습 코드와 평가 코드의 정확도가 너무 차이가 커 오버피팅이 의심됨.

->문제점에 대한 향후 수정 계획

  1. 근본적으로 학습 코드의 변수 조정을 통해 정확도를 올려 볼 생각이며, 기존의 데이터 셋이었던 학습 : 평가=9 : 1 이 학습이 지나치게 많다는 의견을 반영하여 학습 : 평가 = 6.5 : 3.5 or 7 : 3 or 7.5 : 2.5 비율의 데이터 셋으로 다시 한번 코드를 실행보기로 함

  2. 평가 코드를 다시 수정함으로써 기존에 오류 났던 부분에 대한 공부가 필요.

  3. 현재 코드를 책에서 참고해 책과 데이터 개수가 다름에도 불구하고 모든 변수를 똑같이 설정하였고, 변수에 대한 지식이 없는 상태였기 때문에 그에 대해 공부하고 해당 부분을 맡은 팀원이 단톡방에 올려주기로 하였음. 참고 ] <책>파이썬으로 배우는 머신러닝의 교과서/파이썬, 케라스로 배우는 대소니의 딥러닝 기초/ 케라스 창시자에게 배우는 딥러닝/머신러닝 실무 프로젝트 <논문과 블로그> 코멘트에 해당 팀원이 작성해주기로 논의함.

  4. 오버피팅을 줄이기 위해 validation데이터셋을 추가해 볼 계획이며, 오버피팅을 시각화해보기로 하였음.

Restnet을 이용했을 때, Epoch/batch_size/step_per_epoch/학습acc(%)/평가acc(%) 35 / 3 / 1500 / 98.2 / 40 20 / 3 / 1500 / 97 / 73.33 50 / 20 / 100 / 98 / 50 30 / 2 / 1000 / 95.8 / 30

->둘중에 어떤 방법을 이용할지 상의중에 있으나, 현재로써는 Resnet에 더 가능성을 두고 있음.

  1. 데이터 부분

    부족한 데이터셋을 아직 모으는 과정 중에 있음. (구글 크롤링을 이용) 학습 : 평가 = 6.5 : 3.5 or 7 : 3 or 7.5 : 2.5 비율의 데이터 셋으로 다시 데이터 셋을 나누기로 하였음. validation데이터에 관련된 부분은 계속해서 논의중에 잇음.

  2. 데모 부분

    처음에는 openCV를 이용하여 다중객체탐지(multi object detection)을 하여 각각의 객체에 대한 결과를 보일 생각이었으나 YOLOv3를 이용하기에 코랩에서 지원도 안될 뿐더러 GPU 성능이 노트북에서 따라가지 않아 다른 방법을 생각해보기로 하였음. 현재는 사진을 촬영후 구글드라이브에서 마운트하여 동영상으로 촬영하여 보일 예정임 웹캠을 이용해 물체를 캡처하여 openCV를 이용해 객체 탐지를 시도해 보는 중임.

  3. 어린이 대공원 '슈퍼빈(SuperBin)' 견학 어린이 대공원 안에 인공지능을 이용하겨 캔과 병을 분류해주고 그것에 대한 포인트 적립을 통해 멸종위기 동물들을 살린다는 취지를 가지고 있는 슈퍼빈에 대해 알아보기 위해 팀원 다 같이 견학을 함.

Seeun-Lim commented 5 years ago

[김남규 팀원의 학습 부분 코드에 대한 팀원의 이해도를 돕기 위해 조사한 내용] @17011775

  1. rescale = .1/255 :픽셀의 데이터값은 최소값이 0이고 최대값이 255인 정수데이터. 통계적인 모델에서는 데이터를 0~1 사이의 값으로 변환하여 사용하는것이 보편적이기 때문에 이 데이터를 0과 1사이의 값으로 만들어준다. 이처럼 데이터를 한정된 범위 내의 데이터로 변환하는 과정을 정규화라고 한다.

  2. m.fit_generator( train_generator, steps_per_epoch = 100, epochs = 30, validation_data = validation_generator, validation_steps = 5) :첫번째 매개변수로 입력과 타깃의 배치를 끝없이 반환하는 제너레이더. 데이터가 끝없이 생성되기 때문에 모델에 하나의 epoch를 정의하기 위해 제너레이터로부터 얼마나 많은 샘플을 뽑을 것인지 알려주어야 함. step_per_epoch에서 이를 설정. :제너레이터로부터 step_per_epoch 횟수만큼 경사하강단계 실행 후 다음 epoch로 넘어감. ex) batch_size = 20 이라면 2000개의 샘플을 처리할 때까지 100개의 배치를 뽑음 . step_per_epoch = 100 :validation_generator에서 얼마나 많은 배치를 추출하여 평가할지 validation_step에 저장

  3. input shape=(24,24,3) : 마지막숫자는 흑백이미지를 다루고 있을때 1이고 컬러이미지의 경우엔 3임.