[이상소음감지] MIMII 데이터셋(Sound Dataset for Malfunctioning Industrial Machine Investigation and Inspection) (260814)

WonTerry·2026년 8월 14일

Deep Learning

목록 보기
22/27

MIMII 데이터셋(Sound Dataset for Malfunctioning Industrial Machine Investigation and Inspection)의 폴더 구조는 다음과 같은 계층으로 되어 있어요.

전체 구조

<SNR>_dB/
└── <machine_type>/
    └── id_<machine_id>/
        ├── normal/
        │   └── 00000000.wav, 00000001.wav, ...
        └── abnormal/
            └── 00000000.wav, 00000001.wav, ...

계층별 설명

1. SNR(신호 대 잡음비) 레벨
데이터셋은 배경 소음이 섞인 정도에 따라 세 가지 SNR 버전으로 제공돼요: -6dB, 0dB, 6dB. 각각 zip 파일로 배포됩니다.

2. 머신 종류(machine_type) — 4가지 산업 기계 소리를 포함합니다.

  • fan (팬)
  • pump (펌프)
  • slider / slide rail (슬라이드 레일)
  • valve (밸브)

각 기계 종류에는 여러 개별 제품 모델이 포함되어 있고, 각 모델의 데이터는 정상(normal)과 이상(anomalous) 소리를 담고 있습니다. 실제 공장 환경을 재현하기 위해 다양한 이상 소리가 녹음되었고, 여러 실제 공장에서 녹음한 배경 소음이 기계 소리와 믹싱되었습니다.

3. 머신 ID(id_XX)
각 머신 종류마다 개별 제품(모델) 4개 정도가 id_00, id_02, id_04, id_06 같은 폴더명으로 구분돼요(모델별로 존재하는 ID 번호는 다를 수 있음).

4. normal / abnormal 폴더
각 id 폴더 안에 normal(정상 작동음)과 abnormal(고장/이상 작동음) 하위 폴더가 있고, 그 안에 개별 .wav 오디오 파일들이 들어 있습니다(10초, 16kHz, 8채널 마이크 배열로 녹음된 다채널 오디오).

예시 경로

0dB/fan/id_00/normal/00000000.wav
0dB/fan/id_00/abnormal/00000000.wav
6dB/valve/id_02/normal/00000015.wav

참고로 데이터셋은 Zenodo(https://zenodo.org/record/3384388)에서 다운로드할 수 있으며, 다운로드한 zip 파일들은 보통 "./dataset" 디렉터리 아래 위치시켜 사용합니다.


SNR(신호 대 잡음비) 레벨이란?

SNR(Signal-to-Noise Ratio)은 순수 기계음(신호)의 세기 대비 배경 소음의 세기 비율을 dB로 나타낸 값이에요. MIMII 데이터셋은 이 값이 다른 세 가지 버전(-6dB, 0dB, 6dB)으로 제공됩니다.

어떻게 만들어졌나

공장에서 배경 소음을 지속적으로 녹음한 뒤, 이를 대상 기계 소음과 나중에 믹싱해서 실제 환경을 시뮬레이션했습니다. 배경 소음을 녹음할 때도 기계 소음 녹음과 동일한 마이크 배열을 사용했습니다.

노이즈를 섞은 데이터를 만드는 구체적인 절차는 다음과 같아요(자매 데이터셋인 MIMII DUE 논문에 상세히 기술됨):

  1. 해당 섹션(기계 모델)에 속한 모든 클립의 평균 파워 a를 계산합니다.
  2. 각 클립 i에 대해, 목표 SNR(γ dB)을 정하고, 배경 소음 클립 j를 무작위로 선택합니다.
  3. 배경 소음 클립의 파워 b_j를 γ = 10·log₁₀(a/b_j) 공식이 성립하도록 조정합니다.
  4. 이렇게 파워가 조정된 기계 소음 클립과 배경 소음 클립을 믹싱해서 최종 노이즈 포함 데이터를 만듭니다.

즉, dB 단위 SNR 공식(10·log₁₀(신호파워/잡음파워))을 이용해 "몇 dB만큼 신호가 잡음보다 강한지(혹은 약한지)"를 역산해서, 그 비율에 맞게 잡음의 세기를 조절한 뒤 섞는 방식이에요.

여덟 개 채널은 노이즈와 원본 신호를 섞을 때 각각 독립적으로 처리되었습니다. — 즉 8채널 마이크 배열의 각 채널마다 별도로 믹싱이 이루어졌습니다.

각 레벨이 의미하는 것

SNR의미특징
6 dB신호가 잡음보다 강함 (신호 파워가 잡음 파워의 약 4배)배경 소음이 상대적으로 작음 → 이상음 탐지가 비교적 쉬움
0 dB신호와 잡음 파워가 동일중간 난이도
-6 dB잡음이 신호보다 강함 (잡음 파워가 신호 파워의 약 4배)배경 소음이 기계음을 거의 압도 → 가장 어려운 조건

숫자가 낮을수록(음수로 갈수록) 잡음이 더 우세해지고, 그만큼 정상/이상 소리를 구분하는 게 어려워지는 더 현실적이고 도전적인 시나리오가 됩니다.

실무적으로 알아둘 점

  • 각 SNR마다 데이터양은 동일하게 구성되어 있어요. (기계/모델별로 정상·이상 파일 수는 SNR과 무관하게 같음)
  • 논문/벤치마크에서는 종종 특정 SNR(예: 6dB) 하나만 골라서 사용하기도 하고, 알고리즘의 노이즈 강건성을 평가하려면 세 SNR 모두에서 성능을 비교하는 것이 일반적이에요.
  • 실제 파일 구조상으로는 최상위 폴더명이 -6dB, 0dB, 6dB로 나뉘어 zip 형태로 배포되며, 그 하위에 이전에 설명드린 machine_type → id → normal/abnormal 구조가 이어집니다.

SNR은 "평균" 개념이라는 점

SNR = 10·log₁₀(신호 평균 파워 / 잡음 평균 파워)는 전체 클립, 전체 주파수 대역에 걸친 평균값입니다. 즉:

  • SNR이 음수(-6dB)라는 건 "전체적으로 잡음 에너지가 신호 에너지보다 크다"는 뜻이지, "모든 시간·모든 주파수에서 신호가 잡음에 완전히 묻힌다"는 뜻은 아니에요.
  • 스펙트로그램(시간-주파수 평면)에서 보면, 기계 소음은 특정 주파수 대역(회전 주기에 따른 하모닉, 특정 공진 주파수 등)에 에너지가 집중되는 경향이 있는 반면, 공장 배경 소음은 상대적으로 광대역(broadband)하고 퍼져 있는 경우가 많습니다.

그래서 실제로는

  1. 정상 vs 이상 구분선이 남아있는 주파수 대역은 SNR이 음수여도 시각적으로 식별 가능한 경우가 많습니다. 특정 주파수 빈(bin)에서는 국소적으로 신호 에너지가 잡음보다 높을 수 있거든요.
  2. 이상(abnormal) 소리는 대개 impulsive/transient한 특성(rattling, leakage 터지는 소리, rail damage로 인한 순간적 스파이크 등)을 갖는 경우가 많아서, 짧은 시간 구간에 에너지가 집중되면 평균 SNR이 낮아도 스펙트로그램상 특정 시점에 뚜렷한 패턴으로 나타날 수 있어요.
  3. 반대로 지속적(steady-state)이고 broadband한 이상 신호(예: 미세한 rotating unbalance)라면, 말씀하신 대로 -6dB에서는 육안 식별이 거의 불가능한 수준이 맞습니다. 이게 바로 MIMII 데이터셋이 -6dB를 "가장 어려운 조건"으로 설계한 이유이기도 하고요.

실무적 함의

  • 그래서 사람이 스펙트로그램을 눈으로 보고 이상을 판별하는 게 아니라, 오토인코더 같은 모델이 재구성 오차(reconstruction error)를 이용해 통계적으로 이상을 탐지하는 방식을 씁니다. 모델은 사람 눈보다 미세한 국소 패턴 차이를 잡아낼 수 있거든요.
  • 실제로 -6dB 조건에서의 벤치마크 AUC는 0dB나 6dB보다 확연히 낮게 나오는 게 일반적입니다(앞서 검색된 baseline 결과에서도 6dB > 0dB > -6dB 순으로 AUC가 높아지는 경향이 있었죠). 즉 정량적으로도 "어렵다"는 게 확인됩니다.

정리하면, "이상 신호가 완전히 시각적으로 사라진다"기보다는 "신호 대비 잡음 비중이 커지면서 육안 판별 난이도가 급격히 올라간다"가 더 정확한 표현이에요. 완전 소멸이 아니라 SNR이 낮아질수록 판별선이 흐려지는 연속적인 현상입니다.

profile
Hello, I'm Terry! 👋 Enjoy every moment of your life! 🌱 My current interests are Signal processing, Machine learning, Python, Database, LLM & RAG, MCP & ADK, Multi-Agents, Physical AI, ROS2...

0개의 댓글