인지야공/강의 요약/6번째 글
제조데이터 분석 및 최적화 — 암묵지를 형식지로
이 과목의 문장 하나가 전부를 요약한다.
제조업의 AI 융합 혁신은 현장의 암묵지를 데이터화하여 인공지능이 학습할 수 있는 형식지로 변환하는 것이다.
베테랑 작업자가 기계 소리만 듣고 어디가 고장났는지 아는 것 — 그게 암묵지다. 학습과 경험으로 개인에게 체화됐지만 언어나 문자로 표현될 수 없어 겉으로 드러나지 않는 지식이다. 그 사람이 퇴직하면 같이 사라진다. 이 강의는 그걸 어떻게 데이터로 바꿔 붙잡을 것인가에 대한 것이다.
산업혁명의 발전
| 시기 | 단계 | 내용 |
|---|---|---|
| 1750~1840 | 1.0 증기 기계화 | 물·증기·석탄 동력 기계를 이용한 제조업으로 전환 |
| 1870~1920 | 2.0 전기 대량생산 | 전기모터와 내연기관의 등장 |
| 1960~2000 | 3.0 컴퓨팅 자동화 | 정보화혁명(IT)과 자동화의 실현 |
| 2000~2020 | 4.0 IoT/CPS 스마트팩토리 | 제조업에 첨단 ICT 접목, 디지털 전환과 CPS |
| 2020~ | 5.0 AI/협동로봇 인간중심 | Industry 4.0 이 놓친 ‘사회적 가치’ 와 기술 발전의 방향 보완 |
5.0 이 인간 중심이라는 게 중요하다. 4.0 이 “무인화”를 향했다면 5.0 은 무인이 아니라 자율이다. 사람을 빼는 게 아니라 사람이 더 나은 판단을 하게 만드는 방향이다.
| 자동화된 제조시스템 | 자율화된 제조시스템 | |
|---|---|---|
| 방식 | 룰 기반의 사전 프로그래밍 | 스스로 학습하고 적응 |
| 강점 | 통제 환경에 우수 | 인간의 개입 없이 의사결정 수행 |
| 약점 | 돌발상황 대처 불가 |
스마트 팩토리 — 첨단 제조기술을 생산 현장에 맞춤형으로 결합해 효율을 극대화한 공장. 자율적으로 최적 솔루션을 제안하는 사이버물리시스템이며, 최소 비용과 시간으로 고객 맞춤형 제품을 생산하는 사람 중심의 첨단 지능형 공장이다.
자율 제조 — AI 기반 미래 생산 환경. AI 와 디지털 트윈으로 설비와 로봇이 스스로 공정을 수정하고 최적화한다. 공장이 하나의 거대한 유기체처럼 스스로 생산하고 이상과 원인을 예측하며 지속 개선이 이루어지는 제조 방식이다.
진화 경로는 이렇다.
ICT 활용 → 데이터 자동 수집 (Industrial 3.0)
→ 실시간 모니터링 → 원인 분석 자동화 → 예지보전/품질예측 → 자율제어 (Industrial 4.0)
당면 과제로 꼽은 것들 — 생산인구 감소, 생산성 정체, 탄소 배출 감축, 품질 이슈, 소비자 니즈 급변, 산업현장 안전.
전산화 · 디지털화 · 디지털전환
셋을 섞어 쓰기 쉬운데 층위가 다르다.
| 무엇을 바꾸나 | |
|---|---|
| Digitization 전산화 | 아날로그 정보를 디지털 형식으로 변환하는 것 |
| Digitalization 디지털화 | 기존 업무 프로세스를 개선하고 효율화하는 것 |
| Digital Transformation 디지털전환 | 비즈니스 모델·고객경험·조직 문화 등 기업의 근본적인 체질 자체를 뒤바꾸는 것 |
종이 도면을 스캔하면 전산화, 그 파일로 결재 과정을 자동화하면 디지털화, 애초에 도면 없이 설계-생산이 돌아가게 사업 방식을 바꾸면 디지털전환이다.
| 사례 | |
|---|---|
| 성공 | 스타벅스 주문, 쿠팡 물류 |
| 실패 | GE Digital — 목적성이 모호했다 / 포드 스마트 모빌리티 — 기술과 업무의 통합 실패 |
실패 사례 둘의 원인이 다르다는 게 교훈이다. 하나는 무엇을 하려는지가 흐렸고, 하나는 방향은 맞았는데 현장 업무와 붙지 못했다.
AX — AI Transformation
기업의 체질·문화·프로세스 전체를 AI 중심으로 재정의하는 것이다. 지능화 → 자율화 → 진화.
| 제조 영역 | AX 적용 |
|---|---|
| 예지보전 | 고장 징후를 사전 포착 |
| 지능형 품질 검사 | 컴퓨터 비전으로 검출력 향상 |
| 공정 최적화·제어 | 최적의 수율을 내는 파라미터 값을 자동 제어 |
| 공급망 관리 | 정확한 수요 예측으로 재고 비용을 획기적으로 절감 |
DX 와 AX 의 관계는 이렇게 정리됐다.
DX 는 AX 의 필수불가결한 전제조건이다. DX 는 AX 의 토대이며, AX 는 DX 의 가속기다. 진화와 성숙의 관점으로 접근해야 한다.
데이터가 없는데 AI 를 얹을 수는 없으니 당연한 말이지만, 실제로는 순서를 건너뛰려는 시도가 많다는 뜻으로 읽었다.
| AI-Enabled | 기존 레거시 인프라와 워크플로우에 특정 기능 AI 를 덧붙인(Bolt-on) 형태 |
| AI-Native | 기획 단계부터 AI 가 시스템의 핵심 커널(Core Kernel) 로서 역할 |
제조데이터
제품수명주기 전반에서 생성되는 모든 형태의 디지털 정보로, 효율적인 제품 개발·생산을 가능하게 하는 원동력이자 핵심 자원이다.
분석 절차는 정해져 있다.
문제정의 → 데이터수집 → 전처리 → 모델링 → 검증 → 분석 → 적용
여기서 인상적인 통계 하나 — AI 프로젝트의 87%가 PoC 단계에서 실패한다. 초기 테스트 단계에서 실제 생산환경의 복잡성을 충분히 고려하지 못한 결과다. 전체적인 생산 프로세스를 이해하는 것이 필수라는 결론이 붙는다.
4M1E
제조 현장의 데이터를 이 틀로 분류한다.
| 데이터 | |
|---|---|
| 사람 Man | 숙련도, 교육 이수현황, 경험, 작업시간, 건강상태, 피로도, 작업 실수 기록 |
| 기계 Machine | 가동률, 고장빈도, 유지보수 기록, 설비성능지표, 센서 실시간 상태(온도·압력·진동) |
| 재료 Material | 입고 시 품질검사 결과, LOT 추적정보, 재고수준, 공급업체정보, 재료 특성 |
| 방법 Method | 표준작업 절차 준수율, 공정 매개변수 설정값, 작업방법 변경이력, 공정 최적조건 |
| 환경 Environment | 작업장 온도, 습도, 조명수준, 청정도, 소음 |
불량의 원인을 찾을 때 이 다섯을 순서대로 훑으면 빠뜨리는 것이 줄어든다.
정형 · 반정형 · 비정형
| 정의 | |
|---|---|
| 정형 | 사전 정의된 데이터 모델과 엄격한 스키마를 따른다. DBMS, SQL 의 SELECT/INSERT/UPDATE/DELETE |
| 반정형 | 고정 스키마는 없지만 데이터 내부에 구조를 설명하는 메타데이터·태그·마커가 있어 기계적 해석(파싱)이 가능하다. JSON, XML, HTML |
| 비정형 | 사전 정의나 스키마가 전혀 없는 ‘날것(Raw)’ Data Lake 나 Object Storage 에 원본 그대로 저장 |
파싱(Parsing) 은 입력된 문자열을 문법 규칙에 따라 구조적으로 분석하는 과정이고, 그걸 수행하는 프로그램이 파서다.
강의에서 인용한 두 마디.
- 마윈 — 전체 데이터 중 비정형이 80%를 차지하며, 그중 32%가 전자문서, 25%가 소셜 인터랙션, 23%가 IoT 수집 데이터다
- 스노우플레이크 — AI 로 가속화하는 혁신 속도를 따라잡으려면 비정형데이터에 숨겨진 가치를 끌어낼 수 있어야 한다
수집·활용 목적은 셋이다 — 생산성 향상, 품질 향상, 원가절감·비용 최적화. 그 끝에 DX 와 AX 를 통한 지능형 공장이 있다.
데이터 유형별 접근
오디오 — 산업용 소음과 이상 진단
베테랑이 소리로 고장을 알아채는 그 능력을 옮기는 것이다.
| 변환 | |
|---|---|
| 스펙트로그램 | Short-Time Fourier Transform 으로 시간-주파수 표현을 만든다 |
| Mel-Scale / Log-Mel | 인간의 귀가 고주파보다 저주파 변화에 민감하다는 점을 반영한 필터뱅크 적용 |
소리를 그림으로 바꾸면 그 다음은 CNN 문제가 된다. 이 변환 하나가 오디오 이상탐지를 영상 문제로 바꿔 놓는다.
MIMII (Malfunctioning Industrial Machine Investigation and Inspection) — 대규모 산업용 소음 데이터셋. 펌프·밸브·팬·슬라이드레일 4종의 실데이터로, 정상음·이상음·배경 소음으로 구성된다.
이미지 — 컴퓨터 비전과 표면 결함 검사
인간의 시각 정보를 대체하는 기술로, 제조 AI 분야에서 가장 성숙하고 널리 도입된 기술이다. 분류, 객체탐지, 세그멘테이션, 이상탐지로 나뉜다.
MVTec AD — 산업용 이상 탐지 데이터셋. 객체 카테고리(구조적 변형, 부품 누락)와 텍스처 카테고리(패턴 깨짐, 오염)로 나뉜다.
시계열 — 시간에 따른 변화의 맥락
연속적인 수치의 흐름으로, 시간 축 위에 펼쳐진 전후 맥락과 패턴을 가진다.
CWRU Bearing Dataset — 베어링 고장 진단 데이터셋. 진동 신호로 정상, 내륜 결함, 외륜 결함, 전동체 결함을 분류한다.
오픈 데이터셋으로는 AI Hub 와 KAMP 을 쓴다.
데이터 획득의 4단계
텍스트·이미지·영상·오디오 모두 같은 틀을 따른다.
| 단계 | |
|---|---|
| 원시데이터 수집 | 원문·촬영·녹음으로 확보. 법적·윤리적 요건을 사전 검토 |
| 데이터 정제 | AI 학습에 필요한 형식·크기로 조정, 중복 제거, 개인정보 비식별화 → 원천데이터 확보 |
| 데이터 가공 | 원천데이터에 정답(Ground Truth)과 주석을 부여 → 학습데이터 전환 |
| 데이터 학습 | 사전학습으로 일반 능력을 습득한 뒤 데이터 증강·최적화·미세조정으로 성능 향상 |
계획은 항상 수집 방식 – 포맷 – 수집처/장비 – 원시데이터 정보 순으로 세운다. 학습은 임무 정의 – 사례 비교 분석 – 모델 후보 선정 – 품질 지표 선택 – 최적 모델 선정 순이다.
정제 시 점검 항목이 유형마다 다르다.
| 유형 | 점검 |
|---|---|
| 텍스트 | 불필요한 철자, 맞춤법, 목적 관련성, 문장부호, AI 생성문장 검토 |
| 이미지 | 해상도, 중복, 노이즈, 편향, 포맷, 개인정보, 저작권 |
| 영상 | 해상도, 프레임 손상, 잡음, 길이, 불필요한 장면, 개인정보, 저작권 |
| 오디오 | 음량, 발음, 잡음, 잘림, 안 들림, 개인정보, 저작권 |
원천데이터는 출처와 원본의 형태를 최대한 보존한다는 원칙이 반복해서 나온다. 정제와 가공은 사본에서 한다는 뜻이다.
오디오는 규칙이 하나 더 붙는다 — 표준 발성에서 벗어나거나 같은 전사에 두 가지 이상 발음이 가능하면 한국전자통신연구원(ETRI)의 규칙을 준수해 일관성과 정확성을 확보한다.
표준과 RAMI 4.0
표준 — 특정 목적을 위해 제품·서비스·시스템·프로세스의 기술적 요구사항을 규정한 일련의 규칙·가이드라인·사양.
| 구분 | 기관 |
|---|---|
| 국제 | ISO, IEC |
| 지역 | APT, ETSI |
| 한국 | TTA |
| 사설 | 기업 간 연합 |
RAMI 4.0 — 독일 Plattform Industrie 4.0 연합과 ZVEI, VDI/VDE 가 개발한 Industry 4.0 참조 아키텍처 모델이다. 독일 국가표준 DIN SPEC 91345, IEC/PAS 63088 로 제정됐다.
왜 필요한가 — 인더스트리 3.0 은 물리 장비에 종속된 고립된 수직 통신 체계였다. 4.0 은 이기종 시스템 간 데이터 교환이 전제다. 그러려면 동일한 용어로 소통할 거시적 표준 지도가 있어야 한다.
| 축 | |
|---|---|
| x축 제품 수명주기 | 아이디어 → 설계 → 생산 → 유지보수 → 폐기의 시간적 흐름. AAS(Asset Administration Shell) |
| y축 수직적 통합 | 전통적 자동화 피라미드(ISA-95)를 확장. 공장 바닥의 제품부터 제어기기·엣지 컴퓨팅·엔터프라이즈·클라우드까지 |
OPC UA
Open Platform Communications Unified Architecture — 설비와 시스템이 공통으로 사용하는 표준 언어이자 국제 통신 프로토콜이다.
Foundation Layer 가 시스템 간 연결과 데이터 교환 규칙을 정의하고, 그 위에 Information Models 로 실제 공장 운영에 필요한 네 가지 핵심 기능을 구현한다.
| 통신 방식 | |
|---|---|
| 클라이언트-서버 | 전통적인 1:1 통신 |
| PubSub | Publisher–Subscriber 방식 |
# opc_server.py 서버 구동 ↔ opc_client.py 클라이언트 접속
네 가지 핵심 기능
| 이름 | 하는 일 | |
|---|---|---|
| DA | Data Access | 현재의 온도·압력 등 실시간 센서값을 읽고 쓴다 |
| HA | Historical Access | 저장된 과거 데이터를 기간 조건(Start~End) 으로 조회해 트렌드 분석에 활용 |
| AC | Alarms & Conditions | 특정 조건(온도 80도 초과) 충족 시 클라이언트로 비동기 push |
| Prog | Programs | 클라이언트가 서버(설비)의 특정 함수를 실행하도록 명령 (설비 리셋, 긴급 정지) |
읽기(DA)·과거 조회(HA)·알림(AC)·명령(Prog) 네 가지면 공장에서 필요한 통신은 거의 다 된다는 것이 이 구조의 요점이다.
데이터 품질 절차는 이렇다.
데이터획득 → 데이터정제 → 데이터라벨링 → 품질검증
품질검증에서 의도적 결함을 주입해 확인한다. 유일성·완전성·유효성·일관성·정확성의 다섯 항목을 정제 전후로 비교한다.
실습 — 이상 탐지와 결함 검출
전처리에서 지킨 것들
train_test_split(..., stratify=y) # 층화 추출로 데이터 분리 시 비율 유지
- 식별자 제거 — ID 는 학습에 넣지 않는다
- 비학습 대상 데이터 제거 — 누수 차단
- 층화 추출 — 분리 시 클래스 비율 유지
- 신경망 기본 규격 맞춤 —
.unsqueeze(1)로 출력과 정답의 차원을 정확히 일치시킨다. 안 맞으면 브로드캐스팅 오류로 손실 계산이 엉뚱하게 된다 - 미니배치 구성 —
WeightedRandomSampler로 희소한 고장 데이터가 더 높은 확률로 중복 추출되도록 설정
마지막 항목이 제조 데이터의 현실을 보여 준다. 불량은 원래 드물다. 배치를 그냥 뽑으면 배치 하나에 불량이 한 개도 안 들어가는 일이 생긴다.
심층 신경망
선형 연산 사이에 비선형 활성화 함수와 정규화·규제 기법을 촘촘히 엮어 낸 은닉 2층 구조다.
self.network = nn.Sequential(
nn.Linear(input_dim, 32),
nn.ReLU(),
nn.BatchNorm1d(32),
nn.Dropout(0.3),
nn.Linear(32, 16),
nn.ReLU(),
nn.BatchNorm1d(16),
nn.Dropout(0.3),
nn.Linear(16, 1),
)
Linear → ReLU → BatchNorm → Dropout 이 한 블록이고, 이걸 반복한다.
평가와 배포
과적합 — 모델이 훈련 데이터에 너무 과하게 맞춰져 새로운 데이터에 대한 예측 능력이 떨어지는 현상. 훈련 데이터의 본질적 패턴뿐 아니라 무작위 노이즈까지 학습해 버린 상태다.
Train(훈련) = 연습문제 · Validation(검증) = 모의고사 · Test(테스트) = 실전평가
제조 현장의 언어로 옮긴 주석이 좋았다.
- Precision = 1 − 과검 — 예측 양성 중 진짜 양성. 낮으면 멀쩡한 걸 불량이라고 잡아낸다
- Recall = 1 − 유출 — 실제 양성 중 잡아낸 것. 낮으면 불량이 고객에게 나간다
배포에서 강조된 것 하나 — 모델 가중치와 전처리 스케일러는 동시에 저장된 패키지로 배포되어야 한다. 완전히 동일한 기준이 아니면 정상적인 추론이 불가능하기 때문이다. API 및 서비스화의 기초다.
실험 모니터링은 TensorBoard 로 한다.
CNN 으로 결함 검출
CNN 이 필요한 이유는 패턴인식 쪽과 같다 — 지역 상관성, 지역 균질성, 계층적 구조. MLP 는 파라미터가 폭발하고 Flatten 하면서 공간 구조를 잃는다.
train_loader = DataLoader(train_dataset, batch_size=4, shuffle=True)
images, labels = next(iter(train_loader))
img = images[i].permute(1, 2, 0).numpy()
PyTorch 는 (채널, 세로, 가로), Matplotlib 는 (세로, 가로, 채널) 이다. permute(1,2,0)
으로 축 순서를 바꿔야 그림이 제대로 뜬다. 이걸 빼먹으면 시각화가 엉망이 된다.
class SimpleCNN(nn.Module):
def __init__(self):
super(SimpleCNN, self).__init__()
# 특징 추출기
self.conv_layers = nn.Sequential(
nn.Conv2d(3, 32, kernel_size=3, padding=1),
nn.ReLU(),
nn.MaxPool2d(kernel_size=2, stride=2), # 채널 유지, 가로세로 1/2
nn.Conv2d(32, 64, kernel_size=3, padding=1),
nn.ReLU(),
nn.MaxPool2d(kernel_size=2, stride=2),
) # (3,256,256) → (64,64,64)
# 분류기
self.fc_layers = nn.Sequential(
nn.Flatten(),
nn.Linear(64 * 64 * 64, 128),
nn.ReLU(),
nn.Dropout(0.5), # 뉴런 50% 를 무작위로 끈다
nn.Linear(128, 2), # 출력층을 클래스 수에 맞춘다
)
def forward(self, x):
x = self.conv_layers(x)
x = self.fc_layers(x)
return x
출력 크기 계산을 손으로 해 두면 Flatten 뒤의 차원을 틀리지 않는다.
64×64 입력에 3×3 커널, 패딩 0, 스트라이드 1이면 다.
평가 단계에서는 두 줄이 필수다.
model.eval() # Dropout 등을 끄고 100% 성능으로 평가
with torch.no_grad(): # 기울기 계산 off — 속도와 메모리 절약
Softmax 로 로짓을 0~1 확률로 바꾸고, torch.max 로 정상/불량 중 확률이 높은 쪽의
인덱스를 최종 예측으로 고른다. 정답·예측·확률을 리스트에 extend 로 모아 두었다가
classification_report 로 채점한다. ROC curve 는 판단 기준이 변할 때의 성능을 보여 주고
( = TPR, = FPR), AUC 는 그 아래 면적이다.
Grad-CAM — 판정 근거 보기
“이 제품은 98% 확률로 불량입니다”에서 끝나지 않고, AI 가 이미지의 어느 부분을 보고 그렇게 판단했는지 추적한다.
| Hook | 저장하는 것 |
|---|---|
register_forward_hook | 이미지가 층을 통과할 때 만들어지는 특징 맵 — 어떤 패턴을 찾았는지 |
register_backward_hook | 정답을 역추적할 때의 기울기 — 어떤 패턴이 결정적이었는지 |
CNN 의 특정 층에 도청 장치를 달아 놓는 것이라는 설명이 정확하다. 추출한 시선 데이터에 OpenCV 로 열화상 카메라처럼 색을 입혀 원본 사진과 겹치면 판정 근거를 눈으로 확인할 수 있다.
품질 검사에서 이건 선택이 아니다. 왜 불량이라 판단했는지 설명하지 못하면 현장에서 받아들여지지 않는다.
오토인코더로 비지도 이상 탐지
MVTec AD 는 구조 자체가 비지도 학습용이다 — 정상만 학습셋에 넣고, 테스트셋에 다양한 불량을 포함시킨다. 픽셀 단위 마스크로 결함의 정확한 위치와 모양까지 제공하며, 스크래치·오염·찌그러짐·부러짐 등 실제 결함 유형이 들어 있다.
합성곱 오토인코더(CAE)
| 단계 | 하는 일 |
|---|---|
| 인코더 | 공간 차원(가로·세로)을 줄이면서 채널 차원을 늘린다. Conv + Pooling 반복 |
| 잠재공간 Bottleneck | 고차원 원본이 저차원으로 압축된 상태 |
| 디코더 | 압축된 잠재벡터를 원본 크기로 복원. 업샘플링, 전치합성곱 반복 |
class ConvAutoencoder(nn.Module):
def __init__(self):
super(ConvAutoencoder, self).__init__()
self.encoder = nn.Sequential(
nn.Conv2d(3, 16, 3, stride=2, padding=1), nn.ReLU(),
nn.Conv2d(16, 32, 3, stride=2, padding=1), nn.ReLU(),
nn.Conv2d(32, 64, 3, stride=2, padding=1), nn.ReLU(),
)
self.decoder = nn.Sequential(
nn.ConvTranspose2d(64, 32, 3, stride=2, padding=1, output_padding=1), nn.ReLU(),
nn.ConvTranspose2d(32, 16, 3, stride=2, padding=1, output_padding=1), nn.ReLU(),
nn.ConvTranspose2d(16, 3, 3, stride=2, padding=1, output_padding=1), nn.Sigmoid(),
)
def forward(self, x):
return self.decoder(self.encoder(x))
채널이 3 → 16 → 32 → 64 로 갔다가 64 → 32 → 16 → 3 으로 되돌아오는 대칭 구조다.
마지막이 Sigmoid 인 이유는 출력이 0~1 로 정규화된 이미지이기 때문이다.
정상만 배웠으니 정상은 잘 복원하고 이상은 못 복원한다. 재구성 오차가 큰 곳이 곧 결함 위치다. 불량 샘플을 모으기 어려운 제조 현장에 딱 맞는 접근이다.
시계열 이상 탐지에는 LSTM 을 쓴다 — 시계열 데이터를 다루는 데 최적화된 순환신경망이다.
마지막 문장
강의 슬라이드에 이런 순서로 적혀 있었다.
LLM → Physical AI 무인 아닌 자율
언어 모델에서 물리 세계로 넘어간다는 것, 그리고 그 목표가 사람을 없애는 게 아니라는 것. Industry 5.0 이 인간 중심을 내건 이유와 같은 자리에 놓인 말이다.