[2차 프로젝트] CNN 구조의 차량 분류 모델 연구 (4) (개발자 취업코스, 국비 지원, 구글 크롤링, 데이터 전처리, 이미지 전처리, 전이 학습, CNN 모델)
2023.02.07 - [Project] - [2차] CNN 구조의 차량 분류 모델 연구 (3)
[2차] CNN 구조의 차량 분류 모델 연구 (3)
2023.02.07 - [Project] - [2차] CNN 구조의 차량 분류 모델 연구 (2) [2차] CNN 구조의 차량 분류 모델 연구 (2) 2023.02.07 - [Project] - [2차] CNN 구조의 차량 분류 모델 연구 (1) [2차] CNN 구조의 차량 분류 모델 연
zzgrworkspace.tistory.com
Custom 데이터 셋에 좋은 성능을 내는 CNN 구조의 차량 분류 모델을 만드는 것까지 완료했다. 하지만 첫번째 포스트에서 언급했듯 최종적인 목표는 범용적인 이미지 분류 모델을 만드는 것이었다. 그래서 범용적인 모델로써 활용 가능한지 파악하기 위해 kaggle의 cars classification 데이터 셋을 추가로 학습시켜보았다. 기존에 학습시킨 자동차 이미지 데이터셋은 33종의 국산차에 대한 데이터셋이고, kaggle의 cars classification 데이터셋은 20종의 외제차에 대한 데이터셋이다. 서로 다른 데이터셋이지만 유사한 차량 이미지에 대한 데이터셋이라는 공통점이 있기 때문에 33종의 국산차에 대해 학습시켜서 추출한 이미지 feature map을 통해 20종의 외제차를 분류할 수 있는지 테스트했다.
기존 모델의 마지막 출력층의 output을 Flatten layer를 통해 펴주고, 이를 Fully Connected layer와 softmax 출력층을 통과시켜서 기존 33종에 대한 classification을 20종의 외제차 classification으로 만들어주었다.
train dataset에 대해 약 77%, validation dataset에 대해 약 76%의 accuracy라는 결과가 나왔다. 그래프 또한 validation이 train의 그래프 형태를 따라가는 일반적인 형태의 그래프 모양이 아닌 일반적이지 않은 모양의 결과가 나왔다. 학습하지 않은 다른 차량 이미지 데이터셋에 대해서 좋은 성능을 가지려면 기존에 학습한 차량 이미지 데이터셋의 크기가 커야하는데 학습한 데이터셋의 크 기가 총 9900개의 이미지로, 그 크기가 크지 않아서 범용적인 모델로 사용되기에는 무리가 있다고 판단하였다.
추가적으로 아쉬운 점은 연구 환경으로 GPU와 RAM의 부재였다. 작업 수행은 Google의 Colab에서 진행되었다. GPU와 RAM의 성능과 사용량에 한계가 있기 때문에 차량 이미지 데이터의 크기를 224x224보다 더 키워서 input에 넣어보거나, 차량 이미지 데이터셋의 크기를 9900개보다 크게 하여 모델 제작 시 더 많은 학습을 시켜보는 등 다양한 시도를 하지 못했다.
Ref.
[1] Chollet, Franc ̧ois. ”Xception: Deep learning with depthwise separable convolutions.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.
[2] G. Huang, Z. Liu, L. Van Der Maaten and K. Q. Weinberger, ”Densely Connected Convolutional Networks,” 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017, pp. 2261-2269, doi: 10.1109/CVPR.2017.243.
[3] He, Kaiming, et al. ”Deep residual learning for image recognition.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
[4] Howard, Andrew G., et al. ”Mobilenets: Efficient convolutional neural networks for mobile vision applications.” arXiv preprint arXiv:1704.04861 (2017).
[5] Zoph, Barret & Vasudevan, Vijay & Shlens, Jonathon & Le, Quoc. (2018). Learning Transferable Architectures for Scalable Image Recognition. 8697-8710. 10.1109/CVPR.2018.00907.
[6] Eunwan Kim, Jeonghoon Choi, Bowoo Kim, Dongjun Suh. (2022). A Study on the Development of Strawberry Growth Stage Classification Model. Proceedings of Symposium of the Korean Institute of communications and Information Sciences, (), 1002-1003.
[7] “Bag-of-Tricks — 딥러닝 성능을 높이기 위한, 다양한 꿀팁들”, scalalang2, 2020년 8월 19일 수정, 2022
년 11월28일 접속, https://medium.com/curg/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%84%B1 %EB%8A%A5%EC%9D %84-%EB%86%92%EC %9D%B4%EA %B8%B0-%EC%9C %84%ED%95%9C- %EB %8B%A4%EC%96%91%ED%95%9C-%EA%BF%80%ED%8C%81%EB%93%A4-1910c6c7094a.
[8] “딥러닝 모델 성능 개선하는 법 (캐글 Tip!)”,FacerAin, 2022년 7월 31일 수정, 2022년 11월 29일 접속, https://facerain.club/improve-dl-performance.
[9] “전이학습”, 밥,머신러닝,코딩 말고는 롤, 2020년 3월 30일 수정, 2022년 11월 28일 접속, https://woongjun- warehouse.tistory.com/2.
[10] “14. 전이 학습 활용하기”,Codetorial, 2020년 8월 25일 수정, 2022년 11월 28일접속, https://codetorial.net/tensorflow/transfer learning.html.
[11] “텐서플로2.0 대표 모델 시리즈(이미지 분류)”, Loner의학습노트, 2020년 12월 5일 수정, 2022년 11 월29일 접속, https://wiserloner.tistory.com/1218.[12] “작은 데이터셋으로 강력한 이미지 분류 모델 설계하기”, KEKOxTutorial, 2018년 10월24일 수정, 2022년 11월 30일 접속, https://keraskorea.github.io/posts/2018-10-24little data powerful Model.
[12] “작은 데이터셋으로 강력한 이미지 분류 모델 설계하기”, KEKOxTutorial, 2018년 10월24일 수정, 2022년 11월 30일 접속, https://keraskorea.github.io/posts/2018-10-24little data powerful Model.
[13] “Transfer Learning / Fine Tuning”,두리안의코딩나무, 2021년3월12일수정, 2022년 12월 1일 접속, https://durian9s-coding-tree.tistory.com/9.