논문 리뷰 파트에서 리뷰하였던 Rethinking CAM을 활용하여 기존의 CAM을 Grad-CAM 과 Grad-CAM++ 로 변형하여 모델을 구축하는 과정을 진행하였습니다.
각 CAM 종류들이 성능이 논문만큼 나왔는지 확인하고, 기존에 존재하지 않았던 Grad-CAM++을 활용하면 성능이 어느정도 나오는지 확인해보아요 !
WSOL 에 변형된 rethinkingCAM이 아닌 기존에 구현되어있던 Grad-CAM 을 활용해서 모델을 변형해보았습니다.
마지막에서 두번째 layer을 target layer 로 두었을 때 Top-1 Loc 을 확인해보겠습니다.
기존 grad-CAM 논문에서 따로 실행한 Weakly supervised localization 에서 Top-1 Loc을 보면 100-56.51= 43.49 정도를 확인할 수 있는데,
구현해본 결과 Top-1 Loc은 42.51 정도, Top-1 Cls 는 77.91 을 확인할 수 있었습니다.
데이터셋 종류가 논문에서는 ILSVRC-15 이며, 제가 진행한 데이터셋은 CUB200-2011 이였으므로 이부분에서 차이가 발생하였다고 판단하였습니다.
이번에는 WSOL 에서 Grad-CAM++을 활용하여 진행해보았습니다.
Grad-CAM 과 Grad-CAM++ 의 경우, 논문에서 제시한 CAM 모델들 을 활용하여 진행하였습니다.
구현해본 결과 Top-1 Cls 의 경우에는 77.91, Top-1 Loc은 57.34 정도로 매우 잘 나오는 것을 확인할 수 있네요 !
이번에는 Vgg16 모델이 아닌 ResNet-50 모델로 학습을 진행시키고, eval 까지 진행해보는 과정을 거쳐보았습니다.
돌린 코드의 결과를 확인해보겠습니다. Top-1 Cls 의 경우 본 논문과 비슷하게 79.12로 나오는 것을 확인할 수 있으나, Top-1 Loc 를 확인해보면 38.73이라는 결과를 볼 수 있습니다. 상당히 낮은 수치인데요, 논문에서 ResNet50과 수정된 CAM을 합친 경우가 존재하지 않아서 명확한 비교군이 없습니다.
논문에서 Vgg16 과 수정한 CAM을 합친 경우로 비교해서 보면, Cls 는 당연히 ResNet을 사용하였기 때문에 성능이 올라갔지만 Loc 의 경우에는 현저히 떨어지는 모습을 확인할 수 있으며, 이전에 실험했었던 Vgg16 + Gradcam++ 의 57.34보다 확실히 떨어지는 모습을 확인할 수 있습니다. 논문에서 이와 같은 결과때문에 나머지 비교군과의 실험을 안넣지 않았을까,, 라는 생각이 들었습니다.
기존 ResNet50-SE 코드에 RethinkingCAM을 연결해보았습니다.(No pretrained)
ResNet50 코드에 RethinkingCAM 을 연결하였습니다. (pretrained)
기존 vgg16 에 Rethinkingcam은? (no-pretrained 시)
결과가 상당히 좋지 않게 나왔습니다..
기존 vgg16 + rethinkingcam (pretrained 시) 은
논문 수치랑 똑~같게 나왔다. (근데 왜 pretrained 해야한다고 말 안해줬어..)
이렇게 비교를 진행한 후,
을 확인한 후에, resnet50 pretrained 된 것으로 학습 시킨 후 grad-cam++ 를 돌려보았습니다.
egin_smooth를 추가해보았습니다.
egin_smooth + aug_smooth 를 추가해보았습니다.
43.80 으로 현재까지 가장 잘 나오는 모습을 확인할수있습니다.
아래가 grad-cam 입니다.
egin_smooth를 추가해보았습니다. 성능이 확실히 올라오네요 !
egin_smooth + aug_smooth 를 추가해보았습니다.
43.94 로 grad-cam 인데도 불구하고 제일 좋게 나오네요,,
loc 이 더 안나오네요,,
ScoreCAM을 붙여보았습니다. batch를 4로 바꿔서 진행하였습니다. (메모리 용량 초과 문제로 인해서 학습까지 재진행)
Top-1 Cls 는 76.06 이고, Top-1 Loc 은 43.99 로 다른 grad-cam, grad-cam++ 보다는 높게 나오는 모습을 확인할 수 있어서 Vgg16에서는 성능이 좋게 나오지 않을까 싶어 실험을 추가적으로 진행해보았습니다.
공감하며 읽었습니다. 좋은 글 감사드립니다.