본 게시물에서는 "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


"Network Slimming" Review

카테고리 없음 2019. 10. 24. 16:27 Posted by 랏츠베리

본 포스팅은 Deep Convolutional Neural Network의 running time 최적화를 위해 channel level pruning을 도입한 "Learning Efficient Convolutional Networks through Network Slimming" (ICCV 2017)를 리뷰하도록 하겠습니다. 포스팅에 앞서, 주제와 관련된 모든 연구 내용은 Learning Efficient Convolutional Networks through Network Slimming 참조했음을 먼저 밝힙니다.

History


  Convolutional Neural Networks (CNNs)가 다양한 Computer Vision Task 처리에 중요한 솔루션으로 도입이 된 이후, 실제 응용된 어플리케이션에서 활용하려다 보니 Practical Issue가 광범위하게 발생하였습니다. 이들 중 실제 Light-weight device에서는 CNNs의 Computation Issue가 핵심적으로 보고되었는데요. 이를 해결하기 위해 Depp CNN Architecture의 발전은 Reinforcement Learning을 활용하는 수준까지 도달하였지만, 실제 응용되기엔 한계가 있었습니다. 이를 위해 다양한 경량화 기법들 즉, Weight Pruning이나 Filter or Channel Pruning과 같은 Model Reduction 효과를 극대화시키는 기술들이 소개되었고, 본 포스팅은 이 범주에서 Channel Pruning을 활용한 Reduction 효과에 대한 부분에 해당합니다.

 

Filter or Channel Pruning Effect


  Pruning 기법은 모델 내부의 Node 간의 Weighted Sum으로 구성된 커넥션들 중에서 불필요한 커넥션을 제거하는 기술입니다. 이를 통해, 중요하고, 필요하다고 고려되는 커넥션의 구성으로 최소화 함으로써, 모델 축소를 극대화하는 효과를 볼 수 있습니다. 하지만, 커넥션을 구성하는 Weight Parameter들은 대체로 Matrix 형태의 정형화된 데이터 구조로 관리되는데, 상기 기술로 인해 메모리 최적화와 같은 부수적인 경량화 효과를 얻기 위해서는 Sparse Matrix를 변형하여 관리할 데이터 구조가 요구되었습니다. 이에 따라, Weight Pruning은 아직까지 일반적으로 사용하는 경량화 디바이스에서 효율적으로 Running하지 못한다는 지적이 있었고, 기존에 활요하는 데이터 구조를 충분히 유지하며 딥러닝 모델의 경량화를 극대화하는 방향의 연구가 논의되었습니다.

  Filter 혹은 Channel Pruning은 Deep CNNs 구조에서 Computation이 가장 Dominant한 Convolutional Layer의 경량화를 목표로 하여, 이 Layer에 존재하는 Intermediate Feature Neurons의 개수를 최대한 줄이는 거시적인 관점에서의 Pruning을 의미합니다. 이 Pruning의 효과로는 기존의 Structured Data Structure를 그대로 유지하며, 이들의 개수를 제거하는 형태이기 때문에, 일반적인 디바이스에서도 경량화 효과를 충분히 느낄 수 있습니다.

 

Network Slimming


  본 포스팅에서 언급하는 Network Slimming이라는 연구는 Intermediate Feature Neurons의 개수를 최적화하는 방법론을 제안한 논문이며, Architecture의 한계에 따라 사용 가능 여부가 결정되지만, 저의 주관으로는 최적화 파이프라인 구현을 위해 상당히 간단하고 Fancy한 접근이었다는 면에서 좋은 점수를 받지 않았나 생각합니다.

  Network Slimming은 1) Deep CNNs의 학습 방식을 Stochastic Gradient Descent (SGD)를 활용하고 있고 이를 통해 Batch 단위 학습을 하고 있다는 점, 2) Layer 마다 Batch의 정규화가 요구되며 Batch Normalization Layer (BN)을 대부분의 네트워크 모델이 채택하고 있다는 점, 두 가지 측면을 Motivation으로 삼아 BN의 Trainable Variable인 Scaling Factor를 활용하여 Layer의 결과물인 Output Channel에서 불필요한 Channel을 찾아 제거하는 아이디어를 제안하였습니다. 이는 Scaling Factor가 학습 중인 시점에 Sparse 하게 되도록 L1-norm으로 Regularization을 하였는데요. 이 기법으로 인해 충분히 Channel 개수를 최적화하여 모델을 "Slim"하게 만드는 데 성공하였습니다.

 

Network Slimming

 

L1 Regularization on Scaling Factor in BN

 

Network Slimming


  Network Slimming의 Pruning 파이프라인은 전체 모델 구조에 대하여 하나의 Pruning Ratio를 활용하여 Dynamic Layer-Wise Pruning으로 처리하였고, 이를 여러 횟수 반복하여 Fine Tuning하였습니다.

Slimming Pruning Pipeline

 


  서술한 연구 내용 외에 추가적인 연구 결과나 이해가 필요한 부분이 있으면 직접 링크된 논문을 읽어보시고 댓글을 남겨주시면 답변드리겠습니다. 제가 작성한 PPT 자료를 업로드 해드리니 필요하시면 참고해주세요.

 

아마존 비전 관련 팀에서 일하시다가 올해 고려대에 부임하신 김현우 교수님께서 2019.09.27 (금)에 오셔서 세미나를 해주셨습니다. 본인이 연구해오셨던 다양한 주제들을 다루어 주셨는데, 주요 내용은 다음과 같았다.  

 

통계학의 "Mixed Effects" 모델을 딥러닝과 결합한 연구 (MeNets): 

http://openaccess.thecvf.com/content_CVPR_2019/html/Xiong_Mixed_Effects_Neural_Networks_MeNets_With_Applications_to_Gaze_Estimation_CVPR_2019_paper.html

 

MobileNetV2에 channel attention을 적용하여 더 효율적으로 만든 연구 (ANTNets):

https://arxiv.org/abs/1904.03775

 

그리고 가장 최근의 연구로서 Graph neural networks 관련된 Graph Transformer Networks (NeurIPS 2019 예정)까지 발표해 주셨다. 

 

저희 팀의 연구 관심사와 공통되는 부분이 많아서 많이 배울 수 있는 시간이었고, 이 자리를 빌어서 다시 감사의 인사를 드립니다. 

 

"Integral Pruning" and "Scalpel" Review

카테고리 없음 2019. 8. 30. 18:34 Posted by 랏츠베리

본 포스팅은 Deep Convolutional Neural Network의 Inference time 최적화를 위해 Operation 개수를 보다 공격적으로 최적화한 Integral Pruning Concept (ICLR 2019)과 최적화된 모델을 Processor-Aware하게 재구성한 Scalpel (ISCA 2017)를 리뷰하도록 하겠습니다. 포스팅에 앞서, 주제와 관련된 모든 연구 내용은 Integral Pruning on Activations and Weights for Efficient Neural NetworksScalpel: Customizing DNN Pruning to the Underlying Hardware Parallelism 참조했음을 먼저 밝힙니다.

 

History


  2015년 NIPS에 S Han et al.이 Deep Convolutional Neural Network의 모델 및 연산 최적화를 위해 Aggressive Pruning 컨셉을 도입한 이후, 지금까지 적극적으로 해당 컨셉을 바탕으로 DNN 모델을 최적화 하기 위한 노력이 꾸준히 지속되어 왔습니다. 현재까지 적용되었던 Pruning 컨셉의 핵심적인 기술은 Connection의 Intensity를 결정하는 가중치의 값들이 특정 임계치보다 낮은 경우 과감히 제거함으로써 Connection 개수를 최적화시키는 Masking 기법이었고, 이는 "Going Deeper"하게 만들어온 여러 종류의 DNN 구조에 대하여 Size Reduction을 처리하는데 상당한 이점을 만들었습니다. 그러나, Model Size가 Pruning으로 인해 대폭 감소하더라도, 딥러닝 연산을 수행하는 대다수 Operation인 MAC (Multiply-Accumulation)을 효과적으로 감소시키지 못하였고, 게다가 줄어든 Connection의 Memory Footprint 최적화를 위해 도입했던 Sparse Representation Format이 오히려 연산의 부가적인 Overhead로 작용함으로써, Backend 측면에서 Drawback이 발생하는 Issue들이 등장하였습니다. 결과적으로, 최근, 모델을 축소하기 위한 노력에서 발견된 Operation 개수 최적화 (MACs Reduction)와 연산 Resource 최적화 (Backend Optimization) 간의 Trade-off가 Pruning 효과와 DNN 연산의 극대화를 위해 중요한 쟁점으로 떠올랐으며, 본 포스팅의 논문은 해당 추세의 연장선에 있는 연구 결과에 속합니다.

 

Integral Pruning


  본 논문은 최근 Pruning History의 Related Work을 크게 두 부류의 Pruning Concept인 Weight Pruning과 Activation Pruning으로 정의하였습니다. Static Mask를 통해 Connection 최적화를 수행한 Weight Pruning의 Operation Reduction의 한계를 지적하며, Intermediate Generation Value인 Activation에 대하여도 필수적인 Outlier-value를 제외하고 Sparse하게 변형하려는 아이디어를 적용하였으며, 본 컨셉을 통해 Complexity가 낮은 Model에 대해서 충분한 최적화 효과를 얻었습니다.

 

 

Activation Mask Design을 위해 Winner Rate를 도입하여 Accuracy Loss를 tracking하는 sensitivity check를 수행하였으며, 이를 통해 mask의 threshold를 dynamic하게 setting하여 activation pruning를 처리하였습니다.

 

Scalpel


  본 논문은 현재까지 연구되었던 Pruning 기법이 우리가 흔히 알고 있는 Low/Moderate/High Parallelism을 갖는 General-Purpose Processor로부터 연산 성능이 효과적으로 나타나지 않으며, 특히 대체적으로 나빠진다는 Empirical한 발견을 통해 Pruning 컨셉을 Backend-Aware하게 재구성한 논문입니다. 본 논문은 ARM Cortex-M4/ Intel i7-6700 / NVIDIA GTX Titan X를 Target으로 하였으며, 각각의 Processor가 보유하는 Parallelism에 적합한 재구성된 Pruning 기법을 적용하여 Hardware Operating Resource 활용을 극대화하였습니다.

 


  서술한 연구 내용 외에 추가적인 연구 결과나 이해가 필요한 부분이 있으면 직접 링크된 논문을 읽어보시고 댓글을 남겨주시면 답변드리겠습니다. 제가 작성한 PPT 자료를 업로드 해드리니 필요하시면 참고해주세요.

seminar.pptx
4.51MB

이전 게시물 : 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를 다룬 논문들에 대해 살펴보았습니다. 논문은 임의로 선정하였기 때문에 혹시 놓친 중요한 논문이 있다면 댓글로 알려주시기 바랍니다. 감사합니다.