728x90

📘 개념 요약

C# 8.0부터 참조형 변수에도 nullable을 명시적으로 설정할 수 있습니다. 이는 NullReferenceException을 컴파일 타임에 예방할 수 있게 해줍니다.


🧠 용어 설명

용어 설명
string? null 허용 참조형
#nullable enable 해당 파일에서 null 검사 기능 켜기
NullReferenceException null 값을 접근 시 발생하는 런타임 예외
 

💻 코드 예제

#nullable enable
class User
{
    public string? Name { get; set; }  // null 허용
    public string Email { get; set; } = "default@site.com";  // non-null
}

class Program
{
    static void Main()
    {
        User u = new User();
        if (u.Name != null)
        {
            Console.WriteLine(u.Name.Length); // null 체크 후 안전하게 사용
        }
    }
}

🔧 사용법 정리

  • string? 은 null 허용, string은 허용하지 않음
  • null 상태를 컴파일러가 경고로 알려줌
  • 안정성 높은 코드 작성 가능

🏷 추천 태그

C# 8.0, nullable, null 참조 방지, NRE 방지, 프로그래밍 안정성, 참조형, 컴파일러 경고

728x90
728x90

📘 개념 요약

개념 설명
Thread 저수준 병렬 처리 방식으로, 개발자가 직접 스레드 생성/관리
Task .NET에서 제공하는 고수준 병렬 처리 방식으로, 스레드 풀 기반
Parallel 반복 작업을 병렬로 쉽게 수행하기 위한 고급 API (내부적으로 Task 사용)
 

💻 실제 코드 성능 비교 예제

// Thread 방식
for (int i = 0; i < 5; i++)
{
    new Thread(() =>
    {
        Console.WriteLine($"[Thread] 작업 {i} - ID: {Thread.CurrentThread.ManagedThreadId}");
        Thread.Sleep(200);
    }).Start();
}

// Task 방식
for (int i = 0; i < 5; i++)
{
    Task.Run(() =>
    {
        Console.WriteLine($"[Task] 작업 {i} - ID: {Thread.CurrentThread.ManagedThreadId}");
        Thread.Sleep(200);
    });
}

// Parallel 방식
Parallel.For(0, 5, i =>
{
    Console.WriteLine($"[Parallel] 작업 {i} - ID: {Thread.CurrentThread.ManagedThreadId}");
    Thread.Sleep(200);
});

🧠 성능 비교 (정량적 요약)

항목 Thread Task Parallel.For
생성 속도 느림 (새 스레드 생성) 빠름 (스레드풀 재사용) 매우 빠름 (Task 활용 최적화)
메모리 사용 상대적으로 높음 적음 적음
스케줄링 개발자가 직접 관리 .NET이 자동 관리 자동 병렬 분할
예외 처리 try-catch 직접 필요 간편 (await, ContinueWith) 약간 복잡함
컨트롤 높음 (우선순위 등) 중간 (제한적 컨트롤) 낮음 (고정된 패턴)
확장성 낮음 (스레드 과다 시 시스템 부하) 높음 높음 (병렬 루프 자동 분배)
 

🧪 실제 성능 차이 실험 (예시 시나리오)

작업 수: 1000개, 각각 50ms 대기

  • Thread:
    • 생성 비용 ↑
    • 컨텍스트 스위칭 많음 → CPU 부하 증가
    • 스레드 개수 많아지면 성능 급하락
  • Task:
    • 스레드 풀 기반이라 리소스 절약
    • 처리 속도 일정, 확장성 우수
  • Parallel:
    • CPU 코어 수만큼 자동 분할 실행
    • 단순 반복문에서는 최강 성능

🔧 사용법 요약

사용 상황 추천 도구
스레드 우선순위 제어, 백그라운드 스레드 필요 Thread 직접 사용
병렬 연산, 백그라운드 API 호출 Task, Task.Run
대량 반복 작업, 빠른 계산 Parallel.For, Parallel.ForEach
 

📝 결론 요약

  • Thread는 지금은 거의 특수 상황에만 사용됨 (직접 스레드 제어 필요할 때)
  • Task는 범용 병렬 처리 및 비동기 처리의 기본
  • Parallel은 반복 작업의 병렬 최적화에 최적

💡 실무에서는 대부분 Task와 Parallel을 사용하며, Thread는 병렬 제어가 필요한 특수 케이스에서만 권장됩니다.


🏷 추천 태그

C#, Thread, Task, Parallel, 스레드 풀, 병렬처리, 멀티스레딩, 성능 비교, 비동기, Concurrency, 스레드 최적화


🎯 실전 팁

  • async/await 기반 Task는 비동기 I/O 작업에 최적
  • Parallel.For는 CPU 바운드 작업에 최적
  • 병렬 작업 수가 많고 짧을수록 Task 또는 Parallel을,
    작업 시간이 길고 독립적일수록 Thread를 사용하면 됩니다.
728x90
728x90

📘 개념 요약

람다식은 C#에서 익명 메서드를 간단하게 표현하는 방식입니다. 특히 LINQ, delegate, 이벤트, 비동기 콜백 등에서 많이 사용되며, 코드를 간결하게 만들어줍니다.


🧠 용어 설명

용어 의미
람다식 입력 => 결과 형태의 간결한 함수 표현
익명 함수 이름이 없는 함수, 한 번만 쓰일 때 사용
Predicate<T> bool을 반환하는 델리게이트
Func<T, TResult> 입력/출력 타입이 있는 일반 함수 형식
Action<T> 반환값 없이 동작만 수행하는 함수 형식
 

💻 기본 형식

입력 => 식 or 블록
x => x > 10       // 하나의 입력, 조건 필터링
(x, y) => x + y   // 두 개의 입력, 계산 결과 반환
() => Console.WriteLine("Hello")  // 입력 없음

💡 LINQ에서의 예제

var numbers = new List<int> { 1, 2, 3, 4, 5 };

// 짝수만 필터링
var evens = numbers.Where(n => n % 2 == 0);

foreach (var n in evens)
    Console.WriteLine(n);  // 출력: 2, 4

n => n % 2 == 0 은 n이라는 입력을 받아서, 짝수인지 검사하여 true/false 반환하는 Predicate<int> 형식입니다.


🔧 다양한 람다식 예시

 

목적 코드 예제 설명
필터링 list.Where(x => x > 10) 10보다 큰 값만 선택
매핑 list.Select(x => x * 2) 값을 2배로 변환
정렬 list.OrderBy(x => x.Name) 이름 기준 정렬
조건 검색 list.Any(x => x == 5) 값이 포함되어 있는지
집계 list.Sum(x => x.Price) 가격 합산
 

🛑 주의사항

  • 블록이 여러 줄일 경우 {} 중괄호와 return 필수:
Func<int, int> square = x =>
{
    int result = x * x;
    return result;
};
  • 람다식 안에서 외부 변수 참조 시 캡처됨 (클로저):
int baseNum = 10;
var result = numbers.Select(n => n + baseNum);

 


📝 정리

 

항목 설명
람다식 구조 (매개변수) => 표현식 또는 { 코드블록 }
자주 사용되는 위치 LINQ, 콜백, 이벤트, 비동기
대표 함수 형식 Func<T, TResult>, Predicate<T>, Action<T>
장점 코드 간결, 가독성 향상
주의 복잡한 로직은 블록 사용, 클로저 주의
 

🏷 추천 태그

C#, 람다식, LINQ, 익명 함수, Predicate, Func, Action, delegate, 콜백, 클로저

728x90
728x90

📘 개념 요약

인터페이스와 의존성 주입(DI)은 객체 지향 설계의 핵심으로, 결합도를 낮추고, 확장 가능하고 테스트 가능한 구조를 만드는 데 필수입니다.


🧠 용어 설명

용어 설명
Interface 동작만 정의, 구현은 별도 클래스
DI (Dependency Injection) 외부에서 필요한 객체를 주입
Loose Coupling 모듈 간 결합도 최소화
IoC Container DI 자동 관리 도구 (ASP.NET Core 기본 제공)
 

💻 코드 예제

 
public interface ILogger
{
    void Log(string message);
}

public class ConsoleLogger : ILogger
{
    public void Log(string message)
    {
        Console.WriteLine($"[로그]: {message}");
    }
}

public class App
{
    private readonly ILogger _logger;
    public App(ILogger logger)
    {
        _logger = logger;
    }

    public void Run()
    {
        _logger.Log("프로그램 시작됨.");
    }
}

🔧 사용법 정리

  • 테스트 시 FakeLogger 등으로 쉽게 교체 가능
  • ASP.NET Core에서는 생성자 기반 DI 기본 제공
  • 유지보수성과 모듈화 향상

🏷 추천 태그

C#, DI, 의존성 주입, 인터페이스, 객체지향 설계, 테스트 가능 코드, SOLID, IoC, 유지보수

728x90
728x90

📘 개념 요약

LINQ는 C# 컬렉션을 SQL처럼 다루는 문법으로, 데이터를 필터링하고 가공하는 강력한 도구입니다. 리스트, 배열, DB, XML, JSON 등 다양한 소스에 적용할 수 있습니다.


🧠 용어 설명

용어 설명
Where() 조건에 맞는 요소 필터링
Select() 변환 및 항목 추출
OrderBy() 정렬
GroupBy() 그룹화
Join() 두 컬렉션 연결 (조인)
 

💻 코드 예제

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        // 짝수 필터링
        var evens = numbers.Where(n => n % 2 == 0);

        Console.WriteLine("짝수 목록:");
        foreach (var n in evens)
            Console.WriteLine(n);
    }
}

🔧 사용법 정리

  • 람다식 (n => 조건): 간결하게 필터링
  • IEnumerable<T>: LINQ 결과는 지연 평가(lazy evaluation)
  • ToList() 사용 시 즉시 평가

🏷 추천 태그

C#, LINQ, 람다, 데이터 처리, Where, Select, 프로그래밍, 컬렉션 처리, IEnumerable

728x90
728x90

📘 개념 요약

비동기 메서드는 기본적으로 async와 await 키워드를 사용하여 비동기적으로 실행됩니다. 하지만 콘솔 앱이나 초기 Main() 함수 등에서는 비동기 메서드를 동기 방식으로 실행해야 할 때가 있습니다.

이를 위해 사용하는 대표적인 방법이 다음 두 가지입니다:

  1. Task.Wait()
  2. Task.GetAwaiter().GetResult()

🧠 용어 설명

용어 설명
Task 비동기 작업을 나타내는 .NET 객체. Task<T>는 반환값 포함
Wait() 비동기 작업을 블로킹 방식으로 기다림
GetAwaiter().GetResult() 비동기 작업의 결과를 예외 래핑 없이 직접 가져옴
AggregateException Wait() 사용 시 예외가 감싸져 반환되는 타입
데드락(Deadlock) UI 스레드가 기다리는 동안 자신이 필요한 작업도 못 하게 되어 무한 대기하는 상태
 

💻 예제 1 – DownloadDataAsync().Wait();

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    public static async Task DownloadDataAsync()
    {
        using (HttpClient client = new HttpClient())
        {
            string result = await client.GetStringAsync("https://jsonplaceholder.typicode.com/posts/1");
            Console.WriteLine("응답 데이터:");
            Console.WriteLine(result);
        }
    }

    static void Main(string[] args)
    {
        try
        {
            // 비동기 메서드를 동기적으로 대기
            DownloadDataAsync().Wait();  
        }
        catch (AggregateException ex)
        {
            Console.WriteLine($"예외 발생: {ex.InnerException?.Message}");
        }
    }
}

✅ 특징:

  • Wait()은 현재 스레드를 멈춰서 기다림
  • 예외 발생 시 AggregateException으로 감싸짐

💻 예제 2 – DownloadDataAsync().GetAwaiter().GetResult();

static void Main(string[] args)
{
    try
    {
        // 비동기 메서드를 동기적으로 결과 획득
        DownloadDataAsync().GetAwaiter().GetResult();
    }
    catch (Exception ex)
    {
        Console.WriteLine($"예외 발생: {ex.Message}");
    }
}

✅ 특징:

  • .GetAwaiter().GetResult()는 예외를 감싸지 않고 직접 던짐
  • Wait()보다 디버깅 시 유리함

🔧 언제 어떤 걸 써야 할까?

상황추천 방식이유
콘솔 앱에서 한 번만 실행 Wait() 간단함
예외 디버깅이 중요할 때 GetResult() 원본 예외 확인 가능
UI 앱 (WPF, WinForms, ASP.NET 등) ❌ 사용 지양 데드락 발생 가능성
C# 7.1 이상 & Main 함수 async Task Main() 가장 안전하고 권장
// C# 7.1 이상에서 가장 좋은 방법
static async Task Main(string[] args)
{
    await DownloadDataAsync();
}

📝 핵심 정리

 

항목 .Wait() .GetAwaiter() GetResult()
예외 전달 AggregateException로 감싸짐 원래 예외 그대로 전달
코드 가독성 간단함 다소 복잡함
디버깅 불편 유리
데드락 위험 있음 있음
콘솔 앱 사용 가능 가능
UI 앱 사용 비추천 비추천
 

🏷 추천 태그

C#, 비동기, Task, async await, GetAwaiter, Wait, 예외처리, 콘솔앱, UI 데드락, 프로그래밍 기초, 동기 vs 비동기, 코드 분석

728x90
728x90

🟢 1편: 센서 기반 물체 감지 시뮬레이터 만들기

🎯 목표

Unity에서 광센서와 정전용량 센서를 구현하고, 머신러닝을 통해 물체 감지 이상을 AI로 판단


🖼️ 시뮬레이션 화면 예시

 

설명: 다양한 물체가 이송되고, 센서가 감지 여부를 판단. AI가 센서 이상을 탐지하면 화면에 알림 표시됨.


🔧 Unity 구현 과정

1️⃣ 씬 구성

  • 물체(GameObject) 프리팹: Cube, Sphere, MetalObject
  • 센서 오브젝트 2개 생성: CapacitiveSensor, LightSensor
  • Conveyor Belt 시뮬레이션: Scroll script로 이동 구현

2️⃣ 센서 감지 스크립트 (C#)

public class SensorTrigger : MonoBehaviour
{
    public bool isDetected = false;

    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Item"))
        {
            isDetected = true;
        }
    }

    void OnTriggerExit(Collider other)
    {
        if (other.CompareTag("Item"))
        {
            isDetected = false;
        }
    }
}

🧠 AI 모델 학습용 데이터 생성

3️⃣ 센서 로그 기록 스크립트

public class SensorLogger : MonoBehaviour
{
    public SensorTrigger capacitiveSensor;
    public SensorTrigger lightSensor;

    void Update()
    {
        string log = Time.time + "," +
                     (capacitiveSensor.isDetected ? 1 : 0) + "," +
                     (lightSensor.isDetected ? 1 : 0);
        Debug.Log(log);
        // 파일 저장 가능 (StreamWriter 등 사용)
    }
}

예시 데이터 포맷 (CSV):

Time,Capacitive,Light,Label
0.5,1,1,Normal
0.6,0,1,Abnormal

📊 AI 모델 학습 (Python 예시)

from sklearn.ensemble import IsolationForest
import pandas as pd

df = pd.read_csv("sensor_log.csv")
model = IsolationForest()
model.fit(df[['Capacitive', 'Light']])
df['anomaly'] = model.predict(df[['Capacitive', 'Light']])

📣 Unity 내 이상 감지 표

void Update()
{
    if (sensorA.isDetected && !sensorB.isDetected)
    {
        // 이상 상태 시 UI 알람
        warningText.SetActive(true);
    }
}

🎁 완성 화면 구성

  • UI Text로 상태 출력 (정상, 이상)
  • 물체 통과 시 센서 동작 애니메이션
  • 이상 감지 시 경고음 또는 빨간 LED 점등 시뮬레이션

📌 요약

  • Unity에서 센서를 구현하고 데이터 수집
  • AI 모델로 이상 감지 학습
  • Unity에서 AI 결과 반영 (알람 출력)

🔁 다음 편 예고:

2편. 실린더 외란 감지 시뮬레이션 만들기 (Autoencoder 활용)

Unity에서 실린더 이동 데이터를 수집하고, 외란 상태를 감지해보자!

728x90
728x90

텍스트·영상·이미지·음성까지 한 번에! + 실전 활용 예시 & 팁 정리

콘텐츠 제작자, 강사, 기획자, 마케터를 위한 실전형 AI 툴 가이드


🟩 텍스트 생성 AI

도구명 주요 기능 무료 여부
ChatGPT 글쓰기, 요약, 기획, 코딩 지원 일부 무료
Claude 따뜻한 글쓰기, 논리적 구조 제한적 무료
Perplexity AI 검색 + 출처 제공 무료
Wrtn 블로그/SNS 글쓰기 템플릿 제공 무료
Copilot 실시간 검색 기반 응답, MS 연동 유료

💡 사용 예

  • 블로그 초안 자동 작성
  • 유튜브 스크립트 자동화
  • 발표 원고 작성 및 정리

🛠 실전 활용 팁

  • [ChatGPT] 프롬프트 예시:
  • “30대 직장인을 위한 재테크 블로그 글 1,000자 써줘. 서론, 본론, 결론 형식으로”
  • [Claude] 긴 글이나 보고서 문장 다듬기에 효과적
  • [Perplexity] 정확한 출처 기반으로 리서치할 때 유용

🖼 이미지 생성 AI

도구명 특징 무료 여부
Midjourney 예술적 고화질 이미지 유료
Google ImageFX 고품질 이미지, 빠른 생성 무료
Firefly 어도비, 저작권 걱정 無 일부 무료
Leonardo AI 게임 스타일, 아트워크 최적화 제한적 무료

💡 사용 예

  • 유튜브 썸네일 제작
  • 카드뉴스 배경 이미지
  • 제품 컨셉 디자인

🛠 실전 활용 팁

  • [Midjourney] 프롬프트 예시:
  • "A futuristic city with neon lights at night, cyberpunk style"
  • [Firefly]는 상업용 자료로 바로 사용 가능 (어도비 구독자 유리)
  • 배경 + 포그 효과 + 인물 구분 프롬프트 조합이 핵심

🎥 동영상 생성 AI

도구명 도구명 무료 여부
Sora 영화 수준의 고화질 장면 생성 유료
Runway Gen-4 텍스트 → 영상 자동 생성, 리얼한 움직임 유료 구독제
Kling AI 립싱크+이미지 조합+모션 영상 제한적 무료
Pika 짧은 클립 자동 생성 제한적 무료

💡 사용 예

  • 광고/홍보 영상 초안 제작
  • 제품 사용 영상 모의 시연
  • 스토리보드용 단편 영상

🛠 실전 활용 팁

  • [Runway] “A tiger running in a jungle, cinematic” → 영상 바로 생성
  • 생성 후 자막·사운드 후편집까지 고려하면 효율 UP

👄 립싱크 영상 AI

도구명 특징 무료 여부
Heygen 3분 영상 립싱크 캐릭터 월 3개 
Hedra 아바타 기반 립싱크 월 1분 
D-ID 정밀한 립싱크 + 표정 3분 

💡 사용 예

  • AI 강사 영상 (교육, 발표)
  • 다국어 프레젠터 제작
  • 인터뷰/뉴스 클립

🛠 실전 활용 팁

  • [Heygen] PPT 원고를 넣으면 자동 음성+립싱크 생성
  • 얼굴 애니메이션 강조하려면 시선 고정 옵션 사용

🔊 음성 생성 AI

도구명 특징 무료 여부
Elevenlabs 감정 조절 가능한 TTS 월 10,000자 
Typecast 캐릭터별 AI 보이스 월 5분 
Clova Dubbing 네이버 연동, 자막/더빙 자동 월 15,000자

💡 사용 예

  • 유튜브 내레이션
  • 영상 더빙 (다국어 포함)
  • 오디오북 제작

🛠 실전 활용 팁

  • [Elevenlabs] 프롬프트에 “excited tone” 추가로 감정 부여 가능
  • [Typecast] 성별, 연령, 성격 선택 후 영상 더빙 바로 가능

🎶 음악 생성 AI

도구명 특징 무료 여부
Suno 하루 10곡 음악 생성 가능 무료 (상업적 제한)

💡 사용 예

  • 유튜브 배경음악
  • 홍보 영상 브금
  • 개인 음원 제작

🛠 실전 활용 팁

  • 스타일: "hip-hop, lo-fi, cinematic, retro"
  • 가사도 자동 생성 가능 (영문 중심)

🛠 실무 활용 AI 도구

도구명 기능/특징 무료 여부
Canva 프레젠테이션 디자인, 썸네일 제작 일부 무료
NotebookLM 영상/음성 요약, 텍스트 구조화 최대 100개의 노트북 생성 가능, 각 노트북당 50개의 소스 무료
Gamma PPT 자동 생성 400개의 AI 크레딧
Tiro 대화 기록 요약 가입 시 300분의 무료 크레딧
Napkin 텍스트 요약 + 마인드맵 주간 500 크레딧 

💡 사용 예

  • 회의록 요약
  • 기획서 발표 슬라이드 자동 생성
  • 영상 자막 요약 or 회의 보고서 자동화

🛠 실전 활용 팁

  • [NotebookLM] 유튜브 영상 링크 붙여넣으면 자동 요약 가능
  • [Gamma] 목차만 입력하면 슬라이드 자동 생성
 

✅ 마무리: 내 작업에 AI를 꼭 넣어야 하는 이유 

  • 시간 단축: 글쓰기, 영상 제작, 디자인이 10배 빨라집니다.
  • 💰 비용 절감: 외주 없이 고품질 콘텐츠 가능
  • 🎨 크리에이티브 확장: 창작의 한계를 넘어서는 아이디어 생성

🎥 보너스: 100% AI 기술로 만든 나만의 영화 🎬

2024년, 저는 최신 생성형 AI 기술을 활용해 시나리오 작성부터 영상 제작, 음성 더빙, 이미지 합성까지 모두 AI로 만든 단편 영화를 직접 제작했습니다.
아래 영상은 그 결과물로, AI의 창작 가능성을 실험하고 도전한 결과입니다.

✅ 사용한 AI 도구 

  • ChatGPT – 시나리오 및 내레이션 대본 작성
  • Runway Gen-2 – 장면 생성
  • Pika / Midjourney – 이미지 기반 컷 및 영상 변환
  • Elevenlabs – 감정형 음성 더빙
  • Canva / Gamma – 영상 내 삽입용 텍스트 그래픽 제작“기획부터 편집까지 AI만으로 영화 한 편을 완성해보니, 앞으로 창작의 미래는 ‘누구나 상상하고 실현할 수 있는 시대’라는 걸 실감하게 되었습니다.”

🎬 AI 영화 감상하기

https://www.youtube.com/watch?v=dTpnczolND8

 

✍️ 제작 후기

“기획부터 편집까지 AI만으로 영화 한 편을 완성해보니, 앞으로 창작의 미래는 ‘누구나 상상하고 실현할 수 있는 시대’라는 걸 실감하게 되었습니다.”

 

728x90
728x90

📅 2025.05.29
✍️ by 메타송이 | 🔍 #스마트팩토리 #설비예지보전 #AI분석 #Python #산업데이터분석


✅ 오늘의 주제

공장 설비 데이터를 기반으로 **"AI로 이상 탐지"**를 실현해보자!
이 글에서는 실제 **제조 데이터(CSV)**를 활용하여

  • 설비 이상 여부를 감지하고,
  • 설비 간 상관관계를 시각화하고,
  • 향후 예지보전(Predictive Maintenance)에 적용하는 방법까지
    실습합니다.

📂 분석에 사용된 데이터

  • 설비 센서 테이블: csv
  • 주요 컬럼:
    • 설비 ID (ex. EQ01 ~ EQ29)
    • 생산 사이클 시간
    • 데이터 수집 시점
    • 작업 구분 코드 (STR/END)

📌 총 데이터 건수: 14,955건


🔍 1. 데이터 시각화 – 설비별 사이클 시간 추이

sns.lineplot(data=df, x='데이터 수집 시점', y='생산 사이클 시간', hue='설비 ID')
  • EQ10, EQ25 등 일부 설비에서 급격한 상승 구간이 포착됨
  • 대부분은 0~100초 사이에서 동작하지만, 일부는 8,000초를 넘음 ❗

 


🧠 2. 상관관계 분석 – 어떤 설비가 비슷하게 움직일까?

pivot_df = df.pivot_table(index='데이터 수집 시점', columns='설비 ID', values='생산 사이클 시간')
sns.heatmap(pivot_df.corr(), annot=True)
  • EQ25 ↔ EQ29: 0.90 이상으로 매우 유사한 패턴!
  • 협업 혹은 동일라인 추정 가능

🚨 3. 이상 탐지 – AI가 감지한 비정상 설비

이상 탐지 기준:

threshold = df['생산 사이클 시간'].mean() + 3 * df['생산 사이클 시간'].std()
df['is_anomaly'] = df['생산 사이클 시간'] > threshold
  • 평균 + 3σ 기준으로 이상치 탐지
  • EQ10, EQ20에서 비정상적으로 긴 생산 시간 감지됨

✅ 시각화 결과: 빨간 점이 이상치!


🧭 4. 예지보전을 위한 다음 스텝은?

  • 작업 STR/END 구간을 기준으로 작업 시간 측정
  • 설비별 평균 작업시간 비교 → 위험도 지표화
  • 향후 AutoEncoder, LSTM 등으로 고장 예측 모델 적용 가능

📌 마무리 요약

항목결과
데이터 크기 14,955건
이상치 탐지 기준 평균 + 3표준편차
가장 유사한 설비쌍 EQ25-EQ29
시각화 도구 Matplotlib, Seaborn
활용 기술 Python, Pandas, Scikit-learn
 

🏁 이런 분들에게 추천합니다!

  • 제조 현장에서 AI 이상탐지를 도입하고 싶은 개발자
  • 스마트팩토리 데이터를 분석하는 데이터 사이언티스트
  • ICT 기반 설비 모니터링 솔루션에 관심 있는 분

🔖 추천 태그

#스마트팩토리, #AI이상탐지, #Python분석, #산업DX, #설비예지보전, #Seaborn, #Pandas, #제조AI, #ICT, #티스토리분석블로그
728x90
728x90

🎯 왜 3D + VR로 시각화할까?

기존의 2D 그래프나 대시보드는 복잡한 다차원 데이터를 직관적으로 해석하기 어렵습니다.
VR 기반 3D 시각화는 사용자가 공간적으로 데이터를 탐색하며, 패턴, 트렌드, 상호관계를 더 자연스럽게 인식할 수 있도록 도와줍니다.


🧠 영상 속 핵심 구현 내용

  • 플랫폼: Unity + Oculus Quest 기반
  • 기술 스택: Unity XR Toolkit, VR Controller Input, 3D Mesh Chart Generator
  • 시각화 요소
    • 축(3D 축 기준 데이터 분포)
    • 실시간 인터랙션 (손으로 선택, 회전)
    • 범례, 색상 구간별 데이터 분류

📷 영상 주요 장면 캡처

  • 사용자 POV에서 VR 공간에 떠 있는 3D 막대그래프
  • 손으로 특정 차트를 선택해 정보 확인하는 장면
  • 차트를 회전하며 시야를 변경하는 장면

https://www.youtube.com/watch?v=3QuOlNexsjM

 

 


🔍 활용 가능 분야

  • 스마트팩토리 생산 데이터 분석
  • 에너지 사용량/센서 이상 탐지
  • 의료 영상 분석/바이오 시뮬레이션
  • 시장/매출 시계열 분석
  • 교육/훈련용 실시간 데이터 기반 실습

💡 느낀 점

단순한 시각적 임팩트를 넘어서, 사용자의 몰입과 직관적 이해를 유도하는 3D+VR 조합은
디지털트윈, 제조 분석, 공공데이터 시각화 같은 분야에서 훨씬 더 큰 가능성을 보여줍니

728x90

+ Recent posts