1. dataframe에서의 object객체

데이터프레임 관련 연산을 넘파이로 하고나서 

df.info()를 해서 각 타입을 확인해보면 데이터가 string이던 float이던간에 object로 바뀐 것을 볼 수 있다.

이는 같은 크기의 메모리 공간을 효율적으로 사용하기 위해서 구성된 넘파이의 계산 방식때문이라고 한다. 

따라서 연산 후 특정 dtype이어야한다면, dtype을 다시 재정의해줄 필요가 있다. 

예를 들면, .astype(), pd.to_numeric과 같이 다시 해주어야한다는...

또한, object객체가 도저히 나올수 없는 상황인데 나왔다면, 데이터가 이상한 것일 수도 있다. 가령 nan값이 껴있다던가... 확인해서 제거해줘야한다


2. dataframe에서 null값 드랍시에 원하는 갯수보다 훨씬 많은 갯수의 행이 삭제되는 경우

df.drop(df[df[col].isna()].index, axis = 0) 를 하는 도중에 index가 정렬된것이아니라 뒤죽박죽인 경우였는데, 6개가 제거되어야 할 것이 800개가 제거가 되었다.

df.reset_index(drop=True)를 해서 다시해보니 정상대로 6개가 삭제되었다.

위의 원인은 찾을 수 없었으나 이왕 사용할거 정렬된 index가 좋지 않겠나 싶다.

제목 그대로 object detection에서 

class-label은 존재하지만 bounding box-label 은 존재하지 않을 때,

해결 방법으로는 

weakly-supervised Object Localization or learning 의 도메인과

Zero-Shot Learning 이 대표적이라고 한다.

 

아래는 그에 관한 참고 논문.

Zhou, B., Khosla, A., Lapedriza, A., Oliva, A., & Torralba, A. (2016). Learning deep features for discriminative localization. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 2921-2929).
Bilen, H., & Vedaldi, A. (2016). Weakly supervised deep detection networks. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 2846-2854).
Tao, Q., Yang, H., & Cai, J. (2018). Zero-annotation object detection with web knowledge transfer. In Proceedings of the European Conference on Computer Vision (ECCV) (pp. 369-384).

 

- CPU issue

https://github.com/tensorflow/tensorflow/issues/18503 

에 따르면 CPU가 오래된 것일 수록 tensorflow의 고버전을 사용할 수 없습니다.

오래된 것을 어떻게 판단하냐면 AVX feature이라는 기능을 CPU가 지원을 하느냐, 안하느냐로 판단하면 됩니다.

CUDA나 Cudnn, 환경변수 등을 잘 설정했는데도 안되고, 컴퓨터가 오래된 것이라면 한번 의심해보시길 바랍니다. 

위의 저 기능이 없는경우 tensorflow 1.5까지만 사용할 수 있습니다. 

 

- Tensorflow + CUDA version

TensorFlow 1.10 이후의 거의 모든 버전은 CUDA 10 이후를 지원합니다.

 

- python version

Tensorflow 1.5 에서는 python >= 3.6.* 이 안될 때도 있다. (3.5로 설치하니까 해결)

보통 3.6은 Tensorflow 1.6부터라고 생각하면 된다. 

 

또한 TensorFlow 2.0부터는 파이썬 2.x버전을 지원하지 않을 것이라고 한다.

아래 논문에서 깔끔하게 정리를 해놓았네요!

 

Wang, M., & Deng, W. (2018). Deep Face Recognition: A Survey. arXiv preprint arXiv:1804.06655.

 

얼굴쪽은 data-preprocessing과 dataset이 엄청난 영향을 끼치는 것 같습니다.

그래서 최근에 중국이 얼굴인식 분야는 전부 삼켜버렸죠..

여기에서 쓰이는 방법들은 Keras API를 기준으로 작성합니다.


일단 deconvolution = conv2Dtranspose와 upsampling의 공통점은 pooling등의 연산으로 인해 줄어든

이미지를 다시 원이미지로 키울 때 사용됩니다.


upsampling은 keras에 내장된 라이브러리를 따라가서 코드를 보시면

image_resize를 불러서 단지 size만 맞춰주게 됩니다.


( def call에서 K.resize_images를 부르는 것을 볼 수 있다.)


반면에 deconvolution은 weight를 가진 filter를 사용해서 resize하고,

이 weight를 업데이트(?)하는 것 같습니다. 잘모르겠네요. 

이에 대한 설명은 아래 사진으로 대체합니다. 가장 직관적인 설명인 것 같습니다.

(출처 : https://datascience.stackexchange.com/questions/6107/what-are-deconvolutional-layers)