소음 데이터를 이용한 딥러닝 기반의 차량 진단 기술 개발
© The Korean Society for Noise and Vibration Engineering
Abstract
In this paper, we propose deep learning models for fault diagnosis and noise level estimation using vehicle noise data. First, we use two spectrograms as a feature vector by converting the input signal and the signal of the separated percussive component in the input signal. For fault diagnosis, we design a classification model. Two spectrograms are respectively fed into a series of convolutional layers that includes a convolutional block attention module(CBAM) block and max-pooling. Then, the two outputs are combined and passed through fully connected layers that is finally converted to a probability. Next, we design a regression model for noise level index estimation. We first define the noise level index using signal processing techniques and use it as a target for the deep learning model. Unlike the fault diagnosis model, the two spectrograms are combined and fed into a series of convolutional layers. Then, the output is passed through fully connected layers, and the estimated real value is rounded to the nearest integer value from 1 to 5. Experimental results showed excellent performance with an accuracy of 96 % for fault diagnosis and 86 % for noise level index estimation.
Keywords:
Deep Learning, Vehicle Noise, Convolutional Neural Network, Attention, Classification, Regression키워드:
딥러닝, 차량 소음, 합성곱 신경망, 어텐션, 분류, 회귀1. 서 론
차량(vehicle)의 NVH(noise, vibration, and harshness)는 정숙성과 직결되며, 운전자 및 탑승자의 승차감부터 상품성에까지 영향을 끼친다. 뿐만 아니라 소음과 진동은 차량의 고장을 직접 확인하기 전에 선제적으로 알아챌 수 있는 매우 중요한 신호들로서, 소음 및 진동 신호를 기반으로 차량의 상태를 진단하는 연구들이 많이 진행되어왔다(1). 특히 최근에는 머신러닝(machine learning) 및 딥러닝(deep learning) 기술이 발전됨에 따라 소음 및 진동 신호 데이터를 수집하고 모델에 학습하여 차량의 상태를 진단하고 예지하는 기술들이 활발히 연구되고 있다(2~4). 그리고 데이터 수집 시 우리가 상태 진단을 목표로 하는 차량의 소음 및 진동 외에도 차량이 동작하면서 발생하는 여러 가지 외란이 필연적으로 존재하며, 주행 조건에 따라서도 소음 및 진동의 발생 여부가 변화될 수 있다. 진단 모델의 정확도를 향상시키기 위해서는 진단과 상관없는 변수들이 엄격히 통제된 환경에서 소음 및 진동이 수집되고 정확하게 레이블링(labeling) 되는 것이 중요하나, 전문가가 모든 데이터를 직접 청음하며 소음 및 진동 발생 구간과 주파수 대역을 모두 레이블링하여 진단 모델에 학습시키는 것은 현실적으로 불가능하다. 또한 소음 및 진동을 기반으로 차량의 상품성을 판단하는 방법에 있어서, 부품이 물리적으로 완전히 고장나지 않은 경우라면 사람에 따라 상품성을 판단하는 기준이 매우 주관적일 수 밖에 없다. 운전자에 따라 불쾌감을 느끼는 수준이 다를 수 있으며, 주변 외란에 따라서도 운전자에게 느껴지는 소음 및 진동 수준이 변할 수 있기 때문에 상품성을 객관적으로 수치화할 수 있는 방법이 필요하다. 이 때문에 차량에서 발생하는 NVH 수준을 지수화할 수 있는 방법들이 신호처리 기법을 기반으로 제안되어왔다(5).
이 논문에서는 차량의 소음 신호를 이용하여 차량 부품의 상태와 상품성을 진단하는 모델을 제안한다. 이를 위해 소음 신호에서 목표 부품의 주파수 특성을 잘 나타낼 수 있는 특징 벡터를 추출하였다. 그리고 고장 진단을 위한 분류(classification) 모델과 소음 레벨을 추정하여 상품성을 진단할 수 있는 회귀(regression) 모델을 순차적으로 설계하여 특징 벡터를 통과시켰다. 먼저 고장 진단을 위한 분류 모델을 기반으로 차량이 정상인지 특정 부품이 비정상 상태인지 판단하게 되며, 이때 결과가 비정상으로 판단되면 해당하는 부품에 이상이 있음을 결과로 출력한다. 만약 결과가 정상 상태로 판단될 경우에는 회귀 모델이 추가적으로 동작하여 현재 차량이 정상 상태이지만 소음 레벨이 어느 정도에 해당하는지 추정하여 상품성 판단에 참고할 수 있도록 한다. 딥러닝 모델 설계 시 모델이 데이터를 기반으로 주요 소음 발생 구간과 주파수 대역을 자동으로 학습할 수 있도록 CBAM(convolutional block attention module)(6)을 사용하였다. 제안된 알고리즘은 디젤 엔진 부품 고장 진단 및 소음 레벨 지수 추정 결과에서 우수한 성능을 보였다.
2. 딥러닝 기반의 차량 진단 기술
이 섹션에서는 우리가 개발한 차량 진단 알고리즘을 상세히 설명한다. Fig. 1은 전체 시스템의 순서도를 나타낸다.
데이터가 입력되면, 데이터는 전처리 과정을 거쳐 특징 벡터로 변환되고, 특징 벡터는 고장 진단을 위한 분류 모델에 입력된다. 분류 모델 판단 결과가 비정상으로 출력되면 시스템이 종료되며, 정상으로 출력될 경우 추가적으로 회귀 모델을 기반으로 소음 레벨 지수를 추정하게 된다. 이어지는 하위 섹션에서는 특징 벡터 추출 방법, 고장 진단 모델, 소음 레벨 지수 추정 모델에 대하여 순서대로 상세히 기술한다.
2.1 특징 벡터 추출 방법
특징 벡터는 Fig. 2와 같이 3단계의 신호 처리를 거쳐서 추출한다.
소음 신호는 측정 거리 및 환경에 따라 외란의 작용을 많이 받는 특성을 보인다. 데이터 학습에 의존하는 딥러닝 모델에서 신호의 크기가 마치 신호의 특성인 것처럼 학습되지 않도록, 우리는 마이크로 입력된 소음 신호의 최대값(peak)이 1이 되도록 정규화하여 사용하였다. 크기가 정규화된 소음 신호는 STFT(short-time Fourier transform)를 통해 식 (1)과 같이 시간 도메인의 값에서 주파수 도메인의 값으로 변환된다.
(1) |
여기서, x는 시간 도메인의 신호, h는 윈도우 함수, X는 주파수 도메인의 신호이다. 또한, n은 시간 도메인의 인덱스, k는 주파수 도메인의 인덱스, l은 프레임의 인덱스, N은 프레임의 길이, Δ는 프레임의 홉 길이(hop length)이다. 즉, 시간 도메인의 신호는 Δ 간격으로 N 만큼씩 분할되어 윈도우 함수와 곱해진 후 FFT(fast Fourier transform)를 통해 주파수 도메인 신호로 변환된다. 주파수 도메인의 신호는 식 (2)와 같이 로그 스케일(dB)의 스펙트로그램(spectrogram)으로 변환되며, 딥러닝 모델의 입력 특징 벡터로 사용한다.
(2) |
또한, 차량 부품의 소음 중 타음과 유사한 소음들의분류 성능을 향상시키기 위하여 HPSS(harmoic-percussive source separation)(7,8)를 적용하여 하모닉 성분과 타음 성분의 스펙트로그램을 분리하고, 타음 성분의 스펙트로그램을 추가적인 입력 특징 벡터로 사용하였다.
2.2 딥러닝 기반의 차량 부품 고장 진단 모델
추출된 스펙트로그램과 타음 성분의 스펙트로그램은 Fig. 3과 같이 첫 번째 딥러닝 모델인 고장 진단 모델로 입력된다.
두 개의 스펙트로그램은 각각 독립적으로 서로 다른 합성곱(convolution) 블록에 입력되며, 합성곱 블록은 합성곱 레이어(layer)와 배치 정규화(batch normalization), ReLU(rectified linear unit) 활성화 함수(activation function)로 구성되어있다. 각각의 합성곱 블록에서 출력되는 특징 맵(feature map)은 CBAM으로 입력된다. CBAM은 채널 어텐션(channel attention)과 공간 어텐션(spatial attention)이 직렬 연결되어 순차적으로 수행되게 함으로써 채널, 시간, 주파수 3개의 축 방향의 가중치를 효과적으로 학습할 수 있는 모듈이다. 채널 어텐션과 공간 어텐션 블록 안에서 사용되는 합성곱 블록 또한 합성곱 레이어와 배치 정규화, ReLU 활성화 함수로 구성하였다. 차량 부품 소음의 특징은 특정한 시간 구간이나 주파수 구간에서 패턴을 가지고 나타날 수 있는데, 어텐션을 적용하면 이러한 구간을 데이터에 기반하여 모델이 학습할 수 있기 때문에 소음 분석에 효과적이다. CBAM에서 출력되는 특징 맵은 최대 풀링(max-pooling)을 통해 축소된다. 이 과정이 반복된 후 각각의 독립적인 레이어에서 출력되는 특징 맵을 1차원의 벡터로 변환한 후 결합하고, 고장 진단을 위하여 완전 연결 계층(fully connected layer)으로 통과시킨다. 모델의 최종 출력단에서는 출력되는 벡터를 확률값으로 변환하기 위하여 소프트맥스(softmax) 함수를 적용한다. 출력값은 정상, 진단 목표 부품, 기타 소음의 총 개수에 따라 원-핫(one-hot) 형태로 변환된 벡터와 비교되며, 에러는 크로스 엔트로피(cross entropy) 함수를 기반으로 계산되어 역전파(back-propagation)를 통해 학습된다.
2.3 딥러닝 기반의 차량 상품성 진단 기술
이 섹션에서는 2.2절에서 설명한 차량 부품 고장 진단 모델 결과가 정상 상태로 분류될 경우, 현재 차량에서 발생하는 소음이 어느 정도 상품성이 있는 상태인지, 즉 소음이 정상 상태 중 어느 수준에 해당하는지 추정하는 모델을 설계하는 방법에 대하여 설명한다.
먼저 딥러닝 모델의 목표 데이터 생성을 위하여 소음 레벨 지수(noise level index, NLI)를 정의하였다. 먼저 청음 평가를 진행하여 소음에 대한 사람들의 주관적 음질 수준을 점수화하고, 이와 상관성이 높은 신호처리 기법들을 찾아내었다. 첫 번째 신호처리 기법으로, 식 (3)과 같이 특정 주파수 대역 크기 간의 비율(specific loudness)을 사용하였다.
(3) |
이때, PNRange는 Fig. 4와 같이 특정 주파수 대역의 크기(loudness)를 나타낸다. 두 번째로는 음의 변동성을 나타내는 모듈레이션(modulation) 스펙트럼에 기반하여 Fig. 5와 같이 특정 임계값(threshold)을 초과하는 성분들에 의해 식 (4)와 같이 계산되는 SAML(sum of audible modulation level)을 사용하였다.
(4) |
여기서 ΔL은 모듈레이션 레벨(modulation level)이며, ΔT.H는 모듈레이션 임계값 레벨(modulation threshold level)이다. 최종적으로 단계적 회귀 기법(stepwise regression)을 기반으로 이러한 신호처리 기법들을 주관적 청음 평가 결과에 피팅(fitting)하여 식 (5)와 같이 선형 모델을 정의하였다.
(5) |
이때, α, β와 c는 상수값으로, 엔진 종류 또는 장비 특성에 따라 달라지는 소음의 레벨 특성에 의해 최적화되어 변화되는 값이다. 소음 레벨 지수는 0 ~ 5 사이의 실수값이 되도록 정규화하였다.
정의된 소음 레벨 지수를 이용하여 주관적 청음 평가 수준을 추정할 수 있는 딥러닝 모델을 추가적으로 설계하였다. 정의된 소음 레벨 지수를 그대로 사용할 수도 있었으나, 소음 레벨 지수를 딥러닝 모델을 이용하여 추정하도록 할 경우 지수에 비선형성을 부여할 수 있다. 또한 추후 상태 진단을 위한 분류 모델과 소음 레벨 지수를 추정하는 회귀 모델을 하나의 모델로 결합할 수 있는 장점도 있기 때문에 딥러닝 기반의 소음 레벨 지수 추정 모델을 추가 학습시켰다. 고장 진단 모델과 마찬가지로 입력 소음의 스펙트로그램과 타음 성분의 스펙트로그램을 특징 벡터로 사용하였다.
이때, Fig. 6과 같이 고장 진단 모델과는 다르게 두 개의 스펙트로그램을 채널 축으로 이어 붙여서 하나의 합성곱 블록에 입력한다. 이것은 실험적으로 결정된 구조로서, 소음 레벨 지수 추정 모델은 정상 상태의 소음 레벨 지수만을 타겟으로 하는 모델이기 때문에 타음 성분에서 따로 특징을 추출하는 방법이 성능 향상을 가져오지 않는 것으로 분석된다. 합성곱 블록은 고장 진단 모델과 동일하게 합성곱 레이어와 배치 정규화, ReLU 활성화 함수로 구성되어있다. 마찬가지로, 합성곱 블록에서 출력되는 특징 맵은 CBAM으로 입력되며, CBAM에서 출력되는 특징 맵은 최대 풀링을 통해 축소된다.
이 과정이 반복된 후 출력되는 특징 맵을 1차원의 벡터로 변환한 후, 소음 레벨 지수 추정을 위하여 완전 연결 계층으로 통과시킨다. 모델의 최종 출력단에서는 출력되는 벡터를 0 ~ 5 사이의 실수값으로 변환하기 위하여 시그모이드(sigmoid) 함수를 적용한 후 5를 곱하였다. 출력값은 기 계산된 소음 레벨 지수와 비교되며, 에러는 평균 제곱 오차(mean square error)를 기반으로 계산되어 역전파를 통해 학습된다.
3. 실험 및 결과
제안하는 알고리즘을 평가하기 위하여, 우리는 서비스에서 사용 중인 장비 태블릿에 내장된 마이크를 이용하여 디젤 엔진 차량의 소음 신호를 수집하였다. 이때, 소음 신호에 외란이 작용하여 모델의 성능을 저하시키는 현상을 최대한 방지하기 위하여, 신호 측정 공간을 외부로 한정하고 태블릿 PC의 마이크 위치 또한 Fig. 7과 같이 차량의 정면 30 cm, 차량 보닛 끝의 높이에서 25 cm로 고정하였다.
총 80대의 차량을 아이들 상태에서 소음 측정하였으며, 고장 진단을 위한 목표 부품은 오토텐셔너, 캠샤프트, 댐퍼 풀리, 타이밍 체인 등 4개 부품으로, 각 부품의 위치는 Fig. 8과 같다.
모든 부품이 정상일 때의 소음과 고장 진단을 목표로 하는 4개 부품에 이상이 있을 때의 소음을 각각 측정하였으며, 또한 목표 부품 외에 다른 기타 부품들에 이상이 있을 때의 소음을 추가로 수집하였다. 이때, 이상 소음은 고장 난 부품을 엔진에 조립하여 고의적으로 발생시켜 수집하였다. 분류 모델의 경우 데이터를 4:1의 비율로 학습 셋과 테스트 셋으로 무작위로 분할하여 사용하였다. 반면 회귀 모델의 경우, 정상 상태에서의 소음 레벨 지수 추정을 목표로 하므로 전체 데이터 중 정상 소음에 해당하는 데이터만 학습 대 테스트 셋을 4:1의 비율로 무작위 분할하여 사용하였다.
소음 데이터의 샘플링 주파수는 16 kHz로 설정하였으며, 하나의 소음 데이터는 5초 길이로 수집되었다. 아이들 상태에서의 RPM(revolutions per minute)을 고려하여 프레임 길이와 홉 길이는 각각 150 ms, 75 ms로 설정하였으며, 윈도우 함수는 해닝 윈도우(Hanning window)를 사용하였다. FFT 사이즈는 4096을 사용하였다. 분류 모델의 학습 시 배치 사이즈는 10을 사용하였으며, Adam(9) 옵티마이저를 사용하였다. 학습률은 0.001을 사용하였고, 10 epoch마다 감마값 0.7을 적용하여 감쇄시켰다. 회귀 모델의 학습 시 배치(batch) 사이즈는 10을 사용하였으며, Adam 옵티마이저에 학습률 0.001을 사용하였다.
분류 모델 기반의 고장 진단 모델의 성능을 평가하기 위하여, 정확도(accuracy)를 지표로 사용하였다. Fig. 9는 분류 모델의 학습 과정에서 계산된 학습셋과 테스트셋의 손실값과 정확도를 그래프로 나타낸 것이다.
분류 모델의 경우 학습을 진행할수록 학습셋의 손실값은 낮아지고 정확도는 높아졌으며, 반면 테스트셋의 손실값은 약 0.16 값에서 수렴하는 경향을 보였고 정확도는 최대 약 96 %를 얻었다. Fig. 10은 클래스 별 정확도를 시각적으로 확인하기 위하여 테스트셋의 혼동 행렬(confusion matrix)을 도시화한 것이다. 혼동 행렬에 따르면 가장 정확도가 낮은 클래스는 오토 텐셔너 부품 소음이었으며, 일부가 타이밍 체인 소음으로 분류되는 경향을 보였다. 특히 CBAM을 사용하지 않았을 경우 정확도가 최대 약 94 %였음과 대비하여 성능이 약 2 % 정도 향상되었다.
다음으로, 회귀 모델 기반의 소음 레벨 지수 추정모델의 결과는 Fig. 11과 같다. 회귀 모델의 목표값인 소음 레벨 지수는 전체 데이터셋에 대하여 0 ~ 5의 실수값을 가지나, 우리는 목표값과 회귀 모델의 출력값을 올림하여 1 ~ 5의 정수로 변환한 후 정확도를 평가하였다.
고장 진단을 위한 분류 모델과 마찬가지로 학습을 진행할수록 학습셋의 손실값은 낮아지고 정확도는 높아졌다. 테스트셋의 손실값은 약 0.16 값에서 수렴하였고 정확도는 최대 약 86 %를 얻었다. CBAM 을 사용하지 않았을 경우의 정확도는 최대 약 78 %로, 약 8 %정도 성능이 향상되었다.
4. 결 론
이 논문에서는 차량 부품의 상품성을 진단하기 위한 고장 진단 모델과 소음 레벨 지수 추정 모델을 제안하였다. 고장 진단 모델과 소음 레벨 지수 추정 모델을 위하여, 소음 신호는 최대값을 정규화하고 주파수 도메인의 스펙트로그램으로 변환되었으며, HPSS를 통해 타음 성분을 추가적으로 추출하였다. 추출된 두 개의 스펙트로그램은 딥러닝 모델에 입력 특징 벡터로 사용되었다. 먼저 고장 진단을 위한 분류 모델에는 두 개의 특징 벡터가 각각 입력되어 합성곱 블록과 CBAM, 최대 풀링, 완전 연결 계층을 거쳐 최종적으로 소프트맥스 함수를 통해 확률값으로 변환되었다. 분류 모델에서 정상 상태로 판정될 경우, 소음 레벨 지수 추정 모델로 입력되었다. 소음 레벨 지수 추정 모델에는 앞서 추출한 두 개의 스펙트로그램이 결합되어 한 번에 입력되며, 연속적으로 여러 개의 합성곱 특성의 레이어와 완전 연결 계층을 통과시켰다. 마지막으로 시그모이드 함수를 거쳐 0 ~ 5의 실수값으로 변환된 후 최종적으로는 올림하여 1 ~ 5의 정수값으로 변환되었다. 이때, 목표값이 되는 소음 레벨 지수는 특정 주파수 대역 크기 간의 비율과 모듈레이션을 기반으로 정의되었다. 제안된 알고리즘은 정해진 환경에서 태블릿의 마이크를 이용하여 측정된 디젤 엔진의 4가지 부품 진단을 목표로 평가되었다. 고장 진단 결과의 정확도는 약 96 %, 소음 레벨 지수 추정 결과는 약 86 % 수준으로 우수한 성능을 보였다. 향후 멀티 태스크 러닝(multi-task learning) 기법을 기반으로 하나의 모델이 상태 진단과 소음 지수 추정을 동시에 할 수 있도록 연구를 진행할 예정이다.
References
- Park, S.-G., Park, W.-S., Lee, H.-J., Hong, W.-G. and Oh, J.-E., 2007, Fault Signal Analysis of the Automotive Components Using Experimental Method, Part 1 - Consideration of the Engine Signals, Proceedings of the Korean Society for Noise and Vibration Engineering Annual Spring Conference, pp. 238~242.
- Jung, I., Lee, D., Noh, K. and Chang, J. H., 2022, Development of AI-based Diagnosis Technology Using Noise/Vibration Data of Automobile Powertrain, Transactions of the Korean Society for Noise and Vibration Engineering, Vol. 32, No. 1, pp. 37~44. [https://doi.org/10.5050/KSNVE.2022.32.1.037]
- Jung, J., Moon, Y., Lee, H., Choi, D. and Yoon, T., 2019, Development of Prediction System for Tractor Engine Failure Using Vibration Frequency, Proceedings of the KSNVE Annual Autumn Conference, p. 135.
- Hwang, G.-Y., Jeong, S.-M. and Oh, J.-S., 2022, Development of Prediction Algorithm Featuring 1-D CNN for Vehicle Wheel Nuts, Transactions of the Korean Society for Noise and Vibration Engineering, Vol. 32, No. 4, pp. 337~345. [https://doi.org/10.5050/KSNVE.2022.32.4.337]
- Yun, D., Lee, S., Lee, D. and Jung, I., 2018, Evaluation of Sound Quality of a Diesel Engine with Considering Masking Effect, Transactions of the Korean Society for Noise and Vibration Engineering, Vol. 28, No. 6, pp. 649~654. [https://doi.org/10.5050/KSNVE.2018.28.6.649]
- Woo, S., Park, J., Lee, J.-Y. and Kweon, I. S., 2018, CBAM: Convolutional Block Attention Module, Proceedings of the European Conference on Computer Vision (ECCV), pp. 3~19. [https://doi.org/10.1007/978-3-030-01234-2_1]
- Fitzgerald, D., 2010, Harmonic/Percussive Separation Using Median Filtering, Proceedings of the 13th International Conference on Digital Audio Effects, Graz, Austria.
- Driedger, J., Müller, M. and Disch, S., 2014, Extending Harmonic-Percussive Separation of Audio Signals, Proceedings of the International Society for Music Information Retrieval (ISMIR), pp. 611~616.
- Kingma, D. P. and Ba, J., 2014, Adam: A Method for Stochastic Optimization, arXiv Preprint arXiv: 1412.6980, .
Kyoungjin Noh received his B.S. and Ph.D. degrees in electronic engineering from Hanyang University, Seoul, in 2015 and 2022, respectively. Currently, he is a Senior Research Engineer at the eP Acoustics and Vibration Research Lab, Hyundai Motor Company. His research interests include acoustic and vibration signal processing, sound event detection and localization, prognostics and health management, and machine learning.