Search

'cnn'에 해당되는 글 3건

  1. 2019.10.31 ICCV 2019 Review 1
  2. 2019.10.25 Bearing Fault Detection Paper Review: "TICNN"
  3. 2019.07.29 Industrial Anomaly Detection : Survey part 2 1

ICCV 2019 Review

카테고리 없음 2019. 10. 31. 20:11 Posted by woojeong

얼마 전 서울에서 열린 2019 ICCV에 다녀왔습니다. 그 중 가장 기억에 남는 논문들을 간단하게 정리하겠습니다.

SinGAN: Learning a Generative Model from a Single Natural Image (Shaham et al.) (paper)


ICCV 2019에서 Best paper award를 받은 논문입니다. 이름에서도 알 수 있듯이 하나의 이미지로 학습하는 generative model을 제안했습니다. SinGAN은 아래 그림과 같이 여러 단계의 fully convolutional GAN으로 이루어져 있는데, 각각의 GAN 모델은 이미지에서 다른 scale의 패치 분포를 학습합니다. 인풋으로 다른 노이즈를 줌으로써, 다양한 크기와 화면 비율을 가진 output을 만들 수 있습니다. 이 output 이미지의 전체적인 구조는 학습한 이미지와 비슷합니다. 하지만 위 그림처럼 산봉우리의 개수나 새의 대형이 달라지는 다양한 이미지들을 생성하게 됩니다.

 

 

저는 아래 사진의 결과가 흥미로웠는데요, 기존의 연구들이 사진의 texture만 모사할 수 있는 것과 달리 SinGAN은 input paint에 맞추어 실제와 같은 이미지를 만들어냈습니다. 

 

Semi-Supervised Learning by Augmented Distribution Alignment (Wang et al.) (paper)


이 논문에서는 Augmented Distribution Alignment라는 이름의 semi-supervised 학습 방식을 제안합니다. semi-supervised learning에서는 보통 labeled data가 unlabeled data보다 훨씬 적기 때문에 "Empirical Distribution Mismatch"라는 문제가 발생합니다. 위 그림에서 labeled data의 분포와(왼쪽 위), unlabeled data의 분포(가운데 위)가 다른 것처럼요. 이 논문에서는, 두 분포가 유사해지도록 adversarial training을 한 후 data augmentation을 하면 실제 분포와 더 유사한 샘플을 얻을 수 있다는 아이디어를 제안했습니다. ADA-net의 구조는 다음과 같습니다. 

 

 

Why Does a Visual Question Have Different Answers? (Bhattacharya et al.) (paper)

 


이 논문은 아이디어 자체는 간단하지만 흥미로운 태스크인것 같아서 소개하려고 합니다. Visual QA에서 사람도 잘 대답하지 못하는 문제일 경우, 모델은 어떻게 대처할까요? 예를 들어 위 그림의 두번째 이미지를 보면, 이 사진에 있는 식물이 뭐냐고 물어봤을 때 사람도 한번에 대답하기 어려울 것입니다. 이 논문에서 제시한 dataset에서는 대답이 갈리는 이유를 9가지로 분류합니다. 모호하거나(ambiguous), 답을 여러가지로 말할 수 있거나(synonyms), 주관적이거나(subjective)와 같은 것들이죠. 

이 이유를 맞추기 위해서 논문에서 제시한 모델입니다. 왜 이 질문이 어려운가? 에 대한 9개의 답중 하나를 고르는 classification을 수행합니다. 인풋으로 사진과 질문을 넣고, 이를 기반으로 질문의 답을 예측합니다. 질문의 답을 예측한 벡터가 구해지면, 이미지, 질문 벡터와 concat해서 최종 output을 구합니다. 제가 포스터를 구경할 때 많은 사람들이 "대답하기 어려운 이유를 알아내서 어디에 활용할 수 있나?" 라고 질문했는데요, 저도 그 부분이 궁금했습니다. 제 생각에는 input으로 이미지와 질문, 그리고 대답하기 어려운 이유를 같이 넣고 답을 generation하는 모델을 만들면 더 재미있는 태스크가 되지 않을까 합니다.

 

 

이상 ICCV에 발표되었던 논문 3개를 간단하게 정리해 보았습니다. 더 자세한 내용은 full paper를 참고해 주세요. 감사합니다.

본 게시물에서는 "A deep convolutional neural network with new training methods for bearing fault diagnosis under noisy environment and different working load" (Zhang et al, 2018) 논문을 리뷰하도록 하겠습니다. 이 논문에서는 잡음이 많은(noisy) 환경이나 하중이 달라지는(load shift) 상황에 잘 대응하기 위해 매우 깊은 Convolutional Neural Network 모델을 사용했습니다.

 

Introduction


실제 작업 환경에서는 진동 신호에 잡음이 많이 포함되어 있고 베어링에 가해지는 하중이 변화하기 때문에 딥러닝 모델을 그대로 적용하기 어렵습니다. 이 논문에서는 CNN을 이용해서 두 상황에 잘 대응하는 bearing fault detection 모델을 만들었습니다. 또한 raw signal을 직접 모델의 input으로 넣음으로써, 복잡한 feature 추출 과정이나 noise를 제거하는 과정을 생략했습니다. 

 

Model Architecture of TICNN


모델 구조를 자세히 살펴 보겠습니다. 1D CNN 구조를 사용하고 있는데, 이는 저자 Zhang의 이전 논문 (A new deep learning model for fault diagnosis with good anti-noise and domain adaptation ability on raw vibration signals, 2017)에서 사용한 방식입니다. 이 논문에서는 anti-noise와 domain adaptation ability 능력을 향상시키기 위해 1D CNN 구조에 두 가지 트릭을 적용했습니다. 첫 번째 layer kerner에 dropout을 적용하는 것이고, 매우 작은 batch size로 학습하는 것입니다. 또한 마지막에는 모델의 안정성을 높이기 위해 ensemble learning을 적용했습니다. 모델의 전체적인 구조는 아래 그림과 같습니다. 

먼저 normalized temporal signal이 모델의 인풋으로 들어갑니다. 첫 번째 convolutional layer는 STFT같은 transform 과정을 거치지 않고 raw signal에서 feature를 뽑습니다. 그림을 보시면 첫 번째 layer의 convolution kernel 크기는 64로 굉장히 넓은 데 반해, 이어지는 layer의 kernel은 비교적 작은 것을 알 수 있습니다. 넓은 kernel을 사용함으로써 높은 주파수의 noise를 잘 억제할 수 있다고 합니다. 마지막에는 output node가 10개인 softmax layer의 결과로 베어링의 고장 상태를 판별합니다.

 

Kernel with Changing Dropout Rate


Small Mini-Batch Training


 

Ensemble Learning Based on Voting


Experiments


실험에는 CWRU Dataset을 사용했습니다. fault condition은 총 10가지입니다. noisy environment, different load domain 두 케이스에 대해 각각 실험했고 이 논문에서 제안한 TICNN 모델이 가장 좋은 성능을 보였습니다.

 

Data Description


Case Study I: Performance under Noisy Environment


Case Study II: Performance across Different Load Domain


이전 게시물 : IndIndustrial Anomaly Detection : Survey part 1

 

저번 게시물에 이어 Bearing Fault Diagnosis 관련 논문을 소개합니다. 저번 게시물에서도 말씀드렸다시피 베어링의 이상을 감지하기 위해서는 여러 종류의 센서 데이터를 사용할 수 있고, 그중에서도 진동 센서 데이터를 가장 많이 사용합니다. 이 분야에서 가장 많이 사용되어 왔던 방법론은 먼저 feature extractor로 모델의 인풋으로 들어갈 피쳐를 추출한 다음, classification 알고리즘을 적용한 것입니다. 저번 게시물에서 autoencoder 기반 방법론을 다루었고, 이번 게시물에서는 CNN 기반 방법론을 소개합니다.

 

 

Gearbox fault identification and classification with convolutional neural networks, Chen et al. (2015)


이 논문에서는 gearbox의 이상을 확인하기 위해 2D-CNN을 사용했습니다. 256차원의 통계 피쳐를 추출한 후 이를 16x16 차원의 input matrix로 변환합니다. 시간 도메인에서는 standard deviation, skewness, kurtosis와 같은 통계 피쳐를 추출하였고, frequency domain에서는 Fast Fourier Transform을 수행한 후 이를 몇 개의 band로 나눠서 각 band에 대해 RMS값을 피쳐로 사용하였습니다.

 

 

Convolutional Neural Network Based Fault Detection for Rotating Machinery, Janssens et al. (2016)


이 논문에서는 먼저 feature-learning 방식과 feature-engineering 방식을 비교하였습니다. feature-engineering 방식은 input data에서 feature를 추출한 다음, 이를 분류 모델에 넣는 방식인데 앞서 보았던 많은 논문에서 이와 같은 방법을 사용했습니다. 반면 feature-learning 방식은 먼저 feature를 추출하지 않고, input data를 여러 번 transform 함으로써 이를 모델의 인풋으로 사용하는 방식입니다. 이 논문에서 말하기를 feature-learning 방식이 기존의 feature-engineering 방식보다 훨씬 좋은 성능을 보였다고 합니다.

 

 

Deep convolutional neural network based regression approach for estimation of remaining useful life, Babu et al (2016)


기계의 상태를 분류하는 앞선 논문의 모델과는 다르게, 이 논문에서는 잔여 수명(Remaining Useful Life)을 예측하는 모델을 만들었습니다. 따라서 분류 모델 대신 회귀 모델을 쓰고, 마지막 layer로는 linear regression layer를 사용합니다.

 

 

Hierarchical adaptive deep convolution neural network and its application to bearing fault diagnosis, Guo et al. (2016)


이 논문에서는 계층적인 fault diagnosis 모델인 hierarchical adaptive deep convolution neural network(ADCNN)을 만들었습니다. 먼저 비정상의 종류를 판별하는 ADCNN을 하나 두고, 3개의 비정상 상태에 대하여 각각의 ADCNN이 비정상의 정도를 판단하게 됩니다.

 

 

A multi-scale convolution neural network for featureless fault diagnosis, Wang et al. (2016)


이 논문에서는 CNN 모델이 더 좋은 성능을 내게 하기 위해서 적용할 수 있는 몇 가지 테크닉을 제시하였습니다.

 

 

Design of deep convolutional neural network architectures for automated feature extraction in industrial inspection, Weimer et al. (2016)


이 논문에서는 앞서 제시된 CNN 모델들의 최적 configuration을 탐색하였습니다. 모델의 깊이(convolutional layer의 개수)와 너비(filter의 개수)의 두 가지 측면에서 최적의 configuration을 제시하였습니다.

 

 

Energy-fluctuated multiscale feature learning with deep convnet for intelligent spindle bearing fault diagnosis, Ding et al (2017)


이 논문에서는 CNN의 input으로 WPE(Wavelet Packet Energy) image를 사용하였습니다. WPE의 계층적인 특성을 잘 반영하기 위하여 convolution layer의 마지막에 multiscale layer를 추가하였습니다.

 

 

A deep convolutional neural network with new training methods for bearing fault diagnosis under noisy environment and different working load, Zhang et al. (2018)


이 논문에서 제시한 방법은 noisy한 signal에 대해서도 잘 동작하며, 사전에 noise를 없애기 위해서 추가적인 작업을 할 필요가 없습니다. 각 convolution layer의 output을 좌표평면에 나타내 보면, layer를 통과할수록 각 상태에 해당하는 점들이 확연히 잘 구분되는 것을 볼 수 있습니다.

 

 

이상으로 Industrial Anomaly Detection, 그중에서도 Bearing Fault Diagnosis를 다룬 논문들에 대해 살펴보았습니다. 논문은 임의로 선정하였기 때문에 혹시 놓친 중요한 논문이 있다면 댓글로 알려주시기 바랍니다. 감사합니다.