DiscoGAN을 사용하여 "교사 없음"으로 쌀을 세어보십시오.

2660 단어 ChainerDeepLearning

소개



여기에서 소개 된 DiscoGAN(Discover Cross-Domain Relations with Generative Adversarial Networks)
htps : // 아 rぃ v. rg/아bs/1703.05192
가 「교사 없음」으로 이미지 변환을 할 수 있다고 하는 것으로, 전에 하고 있었다 검출·카운트 를 교사 없이 시험해 보았습니다.

Chainer에서 DiscoGAN을 이미 구현하고 있는 분이 계셨으므로, 거의 사용했습니다.
"chainer의 trainer 기능을 사용하여 DiscoGAN을 구현했다"

하고 있는 일



쌀의 수를 세기 위해, 세기 쉬운 형태의 화상으로 변환하는 「컨버터 A⇒B」를 만듭니다.
(이 정도의 화상이라면, 통상의 화상 처리를 조합하면 간단하게 카운트 할 수 있습니다만, 그것은 두고 있어)

지금까지와 다른 포인트는 「랜덤하게 배치」한 구의 화상을 1장 준비하는 것만으로, 학습을 할 수 있습니다.
구의 수는 적당히 결정했습니다만, 쌀의 수와 오더는 나름대로 맞추고 있습니다.
쌀의 이미지 a를 1장, 구의 이미지 b를 1장을 사용해, 학습했습니다. GTX1070에서 하룻밤 정도가 됩니다.



학습 결과



DiscoGAN에서는 「컨버터 A⇒B」와 「컨버터 B⇒A」를 오토엔코더를 사용해 학습하므로, 위치의 정보를 보관 유지한 채로 변환을 할 수 있게 해 줍니다.
쌀⇒구, 구⇒쌀의 변환에서, 적당히 위치가 있는 채로 변환할 수 있게 되어 있습니다.


검출·카운트



이번 쌀의 수를 세기 때문에, 구 변환 후의 이미지 ab의 극대치의 위치를 ​​추출해, 극대점의 화상을 작성하고 있습니다. 극대점의 추출에는 Maxplooling을 사용하고 있습니다. 있는 부분이 있으므로, 아직도 조정이 필요한 곳입니다.
(참고).

결론



딥 러닝에서는 대량의 데이터가 필요하다고 말할 수 있습니다만, 이번에도 원화상은 1장(미 106알)으로 학습을 할 수 있으므로, 형상이 비슷한 것이면 그 정도의 오더로 학습 가능한 것 같습니다.

이번에는 일단 시도했을 뿐이었습니다만, 이 외에 일부에 힌트를 주거나 배치하는 구의 간격이나 수를 조정하는 것으로, 목표를 검출할 수도 있다고 생각합니다. 또, 이번은 구는 흰색만입니다만, 색을 복수로 하는 것으로, 복수 종류의 것을 동시에 검출하는 것도 가능할지도 모릅니다. 게다가, DiscoGAN에서는 원래 도메인 B의 부분이 "이미지"일 필요가 없을 것이므로, 직접 원하는 벡터(예를 들어 쌀의 중심점 등)로 변환할 수도 있을지도 모릅니다.

또한 작성한 프로그램은 여기에 둡니다. 미세한 부분은 변경할 수 있습니다.
※GAN계는 불안정한 것이 많습니다만, 이것도 몇번인가 시험하면 학습에 실패하는 것이 상당히 있습니다.

좋은 웹페이지 즐겨찾기