문제가 될 경우 삭제하겠습니다.
시작 하기 전, 이 실험은 Tensorfloww Library API을 기반으로 Colab이 제공하는 GPU를 사용함.
- 데이터는 kaggle에서 제공하는 Cats-vs-Dogs 데이터를 이용하여 2만 5천장에서 1만 7천개를 train_data, 4천개를 validation_data, test_data 4000으로 나누어 실험을 진행하였음.
VggNet(Layer 16, epoch 250, optimizer SGD(lr=0.001, momentum=0.9), batch_size 20, step(train, batch) 80, 20, loss function binary crossentropy, dense layer activation sigmoid)
Data Augmentation
- train : rotation_range=40, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, rescale=1./255
- validation : rescale=1./255
- test : rescale=1./255
Accuracy 95.05%, Loss 0.1351
위 데이터를 가지고 여러 인위적인 변화(노이즈)를 주어 모델의 예측 성능과 Grad-CAM을 확인하고자 함.
이 실험에서는 이미지 데이터에 영향을 받을 수 있는 여러 상황들이 있지만 그 중에서도 빈번하게 실생활에서도 영향을 받을 수 있으며 또는 인위적으로 데이터에 잡음 ,노이즈 등 변화를 주는 것으로 학습된 모델의 성능이 어떻게 달라지는지 확인하고자 함.
그래서 다음과 같이 대표적으로 사용하는 영상처리 기법 중 일부를 정하여 실험을 진행함.
- pixel update(add, sub), line, gauss, salt & pepper, poisson, speckle, cellphone(purpose DSP), data format(predict scores)
Color 각 RGB에 맞게 원하는 목적에 따라 작업을 변경하여 미세한 차이와 급격한 차이에 대해서 확인하고자 함.
기본적인 픽셀 값에서 추가로 덧셈 연산의 변화를 주어 확인하였을 때 약간의 변화는 크게 영향을 끼치지는 않지만 50pixel 이상부터는 확실히 모델의 성능이 떨어지는 것을 확인할 수 있다. 그런데 고양이의 경우는 크게 예측의 변화가 있지는 않지만 개의 경우는 모델 예측의 성능이 크게 떨어지는 것을 확인할 수 있다. 위의 이미지를 보면 사람 손을 보고 오히려 잘못된 예측을 하는 경우까지 발생했다.
기본적인 픽셀 값에서 추가로 뺄셈 연산의 변화를 주어 확인하였을 때 약간의 변화는 크게 영향을 끼치지는 않지만 50pixel 이상부터는 덧셈과 다르게 둘 다 많은 변화가 있어 확실히 모델의 성능이 떨어지는 것을 확인할 수 있다. 그래도 고양이보다는 개가 확실히 더 떨어지는 것을 볼 수 있다.
전체적으로 미세한 변화는 모델 예측과 그에 따른 Grad-CAM에 영향을 크게 미치지는 않았지만 그래도 약간의 변화들을 확인할 수 있었으며 급격한 변화로 100pixel 이상부터 모델 예측 성능에서 원 이미지보다 크게 벗어나는 것을 확인이 가능 했다.
이미지에 여러 인위적인 노이즈를 추가함으로써 강도에 따른 변화를 확인하고자 함.
기본적인 픽셀 값에서 추가로 Gauss Noise의 변화를 주어 확인하였을 때 고양이에서는 크게 모델 예측 성능이 떨어지지는 않았지만 개의 경우는 확연하게 떨어지는 것을 확인할 수 있다. Grad CAM을 통해서 고양이, 개 둘 다 모델이 바라보는 곳을 확인한 결과 이미지의 전체적으로 바라보는 것을 볼 수 있었다. 그렇지만 고양이의 경우 크게 영향을 받지 않는 것에 대한 궁금증을 여전히 안고 갈 수 밖에 없었다.
기본적인 픽셀 값에서 추가로 Salt & Pepper Noise의 변화를 주어 확인하였을 때 0.7비율로 소금과 후추의 노이즈를 주었을 때 모델 예측의 변화가 크게 있었으며 이번의 경우는 이전과 다르게 반대로 고양이의 모델 예측 성능이 크게 떨어지며 개의 경우는 크게 변화가 없었다.
기본적인 픽셀 값에서 추가로 Poisson Noise의 변화를 주어 확인하였을 때 - 보류
기본적인 픽셀 값에서 추가로 Speckle Noise의 변화를 주어 확인하였을 때 개의 경우는 확연히 떨어지는 것을 볼 수 있었으며 고양이의 경우 크게 변화가 없었다. 이전 Salt & Pepper Noise와 비슷한 상황이라고 생각이 들었다.
위 실험에서 연구하고자 하는 것을 말하기 전에 일단 관련된 주제에 대해서 간단한 소개를 하자면 CPU와 다향한 HW를 하나의 Chipset에 집적하는 것을 SoC (system on chip)라고 부른다. 특히, 이런 SoC중에 시스템의 중심에서 전체를 Control하고 특별한 지시를 수행하는 제일 중요한 SoC를 DSP(Digital Signal processor)라고 한다. 이 DSP는 카메라의 센서에서 받아 들인 영상정보를 분석해서 저장하거나 Display에 띄우는 역할을 하는 것으로 카메라 영상 정보와 밀접한 관련이 있다. 그래서 각 다른 기기에서 같은 상황의 이미지를 촬영하여 데이터를 분석하고자 한다.
그 결과 위의 이미지와 이 모델에서의 예측 점수를 확인할 수 있다. 이는 각각의 기기에서 카메라의 센서들이 받아 들인 영상정보가 미세하게 다름으로써 발생하는 것이라고 생각이 되며 이것이 환경과 구성하는 모델 등 상대적으로 영향을 받을 수도 있다고 생각할 수 있다.
화질, 압축, 용량 등 영상 데이터 영상을 저장하는 방식이 다 다르며 각 포맷과 확장자마다 장점과 단점을 가지고 있다. 그래서 이 영상 데이터를 다음과 같이 포맷과 확장자를 다르게 저장함으로써 모델 예측 성능이 어떻게 달라지는 것을 확인하고자 한다. 여기서는 기존에 사용한 jpg, 추가로 png, bmp, tiff 확장자를 확인할 수 있다.
결과적으로 기본적인 영상에서는 다른 것을 확인할 수 없었으며 이는 영상 데이터의 복잡성(이미지 크기, 픽셀 etc..)이 간단하기 때문이라고 생각이 든다.