IMAGENET-TRAINED CNNS ARE BIASED TOWARDS TEXTURE; INCREASING SHAPE BIAS IMPROVES ACCURACY AND ROBUSTNESS

Robert Geirhos 외 5 (2019)


CNN은 일반적으로 object의 shape를 학습한다고 생각되는데 최근 연구를 통해 이미지 texture의 역할이 중요하단 것이 밝혀졌다.
아래의 그림에서 (a)는 코끼리의 texture만을 나타냈고 (b)는 고양이의 이미지를 나타냈다. (a),(b)는 각각 코끼리와 고양이로 올바르게 분류했는데 코끼리의 texture를 입힌 고양이 shape인 (c)그림은 코끼리로 인식되고 있다. 즉, 이미지의 shape만으로 CNN이 물체를 분류하는 것은 아니다. image

본 논문에서는 CNN이 shape를 통해 물체를 분류한다는 가정을 shape hypothesis라 칭하고, shape보다 texture가 더 중요하다는 가정을 texture hypothesis라 한다. 실험을 위해서 shape와 texture가 섞인, 예를들어 코끼리texture를 가진 고양이shape 이미지를 준비한다. 이러한 이미지를 texture-shape cue conflict라 부른다.

결국 이 논문에서는 인간과 CNN이 각각 shape 기반으로 object를 분류하는지, texture 기반으로 분류하는지 알아보겠다는 것이다.

Deep Neural Networks for Object Detection

Christian Szegedy Alexander Toshev Dumitru Erhan (2013)


DetectorNet은 object detection에 CNN을 처음으로 도입한 network중 하나로써 one stage로 동작하는 모델이다.

  • two-stage : 분류와 위치파악을 따로 수행
  • one-stage : 분류와 위치파악을 한 번에 수행

DetectorNet은 AlexNet을 사용하는데 마지막 layer의 softmax 활성화함수를 regression layer로 변경해 사용하는 것이 특징이다. AlexNet의 구조는 다음과 같다. image

주어진 이미지 내에서 다수의 object에 대한 바운딩박스를 예측하기 위해 5개의 네트워크를 사용한다. 이미지 foreground pixles예측을 위한 네트워트 1개 + 위,아래,오른쪽,왼쪽 예측을 위한 추가 네트워크 4개 이용 = 5개
그림으로 보면 아래와 같음. image

전체적인 작동원리는 아래 그림과 같은데 간략하게 나타낸 그림이고 실제로는 5개의 네트워크(전체,위,아,오,왼)를 모두 수행해야함. 다양한 scale의 이미지들에 걸쳐 regression을 수행한 후 object box를 추출함. 그렇게 얻어진 box에 대해 또다시 과정을 반복하면서 refine하게 됨. image (그리고 또 다른 특징은 이미지당 40개 미만의 적은 수의 window만을 평가한다는 것이다. 그런 점에서 sliding window 방식이라고 보기는 어렵다.)

input이미지를 여러번 crop하게 되는데 이 crop된 것마다 여러 네트워크를 수행해야 하니까 속도가 느려진다. 결론적으로 CNN을 적용한 것엔 의의가 있지만 시간이 너무 오래 걸리고 mAP도 낮게 나오기에 비효율적임. 실험결과는 다음과 같음. 기존의 방식에 비해선 성능이 개선되었지만 이후에 등장한 R-CNN에 비해선 턱없이 낮음. image

단일 네트워크를 사용할 필요가 있어보임

윈도우에서 딥러닝 개발환경 구축하기

Anaconda,CUDA,cuDNN,tensorflow,Pycharm

1. GPU드라이버

시작 전에 GPU드라이버 설치.

2. CUDA, cuDNN

그래픽카드에 따라 호환되는 version이 다르므로 먼저 확인할 필요가 있음.
Compute capability확인 image RTX30 시리즈는 compute capability가 8.6임

CUDA version확인 image compute capability가 8.6은 CUDA 11.1이상의 버전이 필요함

cuDNN version확인 image 위에서 확인한 CUDA에 맞는 버전의 cuDNN설치.

cuDNN설치하고 압축을 풀어주는데, 압축 푸는 위치가 위에서 설치한 CUDA파일임! 덮어씌우면 됨

Pagination