Abstract. 

Object detection is one of the major problems in computer vision, and has been extensively studied. Most of the existing detection works rely on labor-intensive supervision, such as ground truth bound- ing boxes of objects or at least image-level annotations. On the con- trary, we propose an object detection method that does not require any form of human annotation on target tasks, by exploiting freely avail- able web images. In order to facilitate effective knowledge transfer from web images, we introduce a multi-instance multi-label domain adaption learning framework with two key innovations. First of all, we propose an instance-level adversarial domain adaptation network with attention on foreground objects to transfer the object appearances from web domain to target domain. Second, to preserve the class-specific semantic struc- ture of transferred object features, we propose a simultaneous transfer mechanism to transfer the supervision across domains through pseudo strong label generation. With our end-to-end framework that simultane- ously learns a weakly supervised detector and transfers knowledge across domains, we achieved significant improvements over baseline methods on the benchmark datasets.


Object detection은 컴퓨터비전에서의 주요 연구중 하나이며, 광범위하게 연구되어져 왔다. 

detection 작업의 대부분은 bounding box가 존재하거나, 적어도 image-level의 annotation과 같은 노동 집약적인 지도(학습)에 의존한다.

반대로, 우리 연구팀은 자유롭게 사용가능한 웹 이미지를 사용하면서도, target 데이터에 사람이 작업한 어떤 형태의 annotation이 존재하지 않는 object detection 방법을 제안한다.

웹 이미지로부터의 효과적인 지식 전달이 용이하기 위해, 우리는 두가지 주요 혁신요소와 함께 multi-instance multi-label 도메인 적응 학습 프레임워크를 소개한다. 

첫번째로, 우리는 중요 객체에 주의를 기울여 인스턴스 수준의 적대적 도메인 적응 네트워크를 제안하여 웹 도메인에서 대상 도메인으로 객체 모양을 전송합니다

둘째, 전송된 객체의 특징들의 구체적인 클래스 의미구조가 보존되기 위해서, 우리는 (pseudo??) 강한 레이블 생성을 통한 도메인 간 supervision을 전송하기 위한 동시다발적 전송 메커니즘을 제안한다.

약한 supervised detector와 도메인간 지식 전송을 동시에 학습하는 end-to-end 프레임워크와 함께, 우리는 벤치마크 데이터에서 기준 방법보다 향상된 결과를 달성했다.

Weakly supervised 관련 논문입니다.

 

Reference

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).

ValueError: the truth value of Series is ambiguous. Use a.empty, a.any(), a.all() ..... 

 

시리즈나 데이터프레임에서 비교연산을 할 때 위와 같은 에러가 뜨는 경우가 있다. 

대표적으로 위의 상황에서 파이썬 논리연산자인 and나 or 등을 사용하면 위의 에러가 뜨게 된다.

ex) [(df.col < 10) and (df.col > 5)] 와 같은 경우

< 해결방법 >

np.logical_and(or) 을 쓰거나 간단하게 &(|)을 사용하면 된다.

추가로 & 을 쓸 때 실수하는 부분이, 위의 예시에서 (df.col < 10)이 아닌 df.col < 10으로 소괄호가 없이 썻다면

&의 연산자의 우선순위가 높으므로

typeerror cannot compare a dtyped float array with a scalar of type bool

다음과 같은 에러가 뜰것이니 주의하기 바란다.

지수분포란, 

사건이 서로 독립적일 때, 일정 시간동안 발생하는 사건의 횟수가 푸아송 분포를 따른다면, 다음 사건이 일어날 때까지 대기 시간은 지수분포를 따른다

 

다시 말해서, 포아송분포는 단위시간동안 발생하는 사건의 횟수에 대해 관심이 있다고 할 수 있고,

지수분포는 어떤 사건이 발생하기까지의 시간에 대해 관심이 있는 것입니다. 

 

지수분포는 감마분포의 특수한 형태이기도 하다. 

감마분포의 모수 중 a가 1이되면 지수분포의 모양이 되게 된다. 

지수분포는 기하분포와 함께 무기억성을 가지고 있는 분포이다.

(그림 감마분포와 지수분포의 관계식)

이 외에도 여러가지 관련된 것이 많습니다. 

지수분포를 확장하면 감마분포가 되기도 하죠. 

지수분포는 아래 분포그림과 같이 점점 확률이 줄어드는 사건에 쓸 수 있습니다. 예를 들어,

사람의 수명과 죽음에 대한 사건

전자제품 수명과 남은 사용기간에 대한 사건 등


< PDF >

 

< 기댓값과 분산 >

 

Reference 

https://math7.tistory.com/51

 

'# 기타 공부한 것들 > math' 카테고리의 다른 글

Bayes 정리: 간단 예제로 이해하기  (0) 2020.06.01
균등분포(균일분포, Uniform dist)  (0) 2019.02.26
다항분포(multinomial distribution)  (0) 2019.02.14
음이항 분포  (0) 2019.02.01
기하 분포  (1) 2019.01.30

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가 좋지 않겠나 싶다.

파이썬 식별연산자

is : 객체 메모리의 위치나 값이 같을 경우 True

is not : 객체 메모리의 위치나 값이 같지 않을 경우 True