Alroha

[스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 6주차(1) 본문

IT/Kakao cloud 부트캠프

[스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 6주차(1)

헤이로하 2025. 9. 8. 17:28

🌈 9월 8일 – 이미지 세그멘테이션과 객체 검출 + 챗봇 기초

🔗실습링크: https://github.com/heyroha/KakaoCloud/tree/main/HW/September/9%EC%9B%94%208%EC%9D%BC

 

KakaoCloud/HW/September/9월 8일 at main · heyroha/KakaoCloud

Contribute to heyroha/KakaoCloud development by creating an account on GitHub.

github.com


🖼️ 이미지 세그멘테이션 (Image Segmentation)

이미지 세그멘테이션이란 이미지를 의미 있는 영역들로 분할하는 기술로, 각 픽셀에 특정 클래스나 객체를 할당하여 이미지를 여러 부분으로 나누는 과정임.
대표적인 응용 사례는 종양 영역 식별(의료 영상 분석), 자율주행차에서 도로·보행자·차량 구분 등이 있다.

🔹 임계값 기반 세그멘테이션 (Threshold-based Segmentation)

  • 개념: 픽셀의 =밝기값(Intensity)을 기준으로 이미지를 분할하는 방법.
  • 특정 임계값(threshold)을 기준으로 픽셀을 두 그룹(예: 흑/백)으로 나누는 방식.
  • 즉, 임계값보다 큰 값은 흰색(객체), 작은 값은 검은색(배경)으로 구분함.
  • 장점: 단순하고 빠름.
  • 단점: 조명 변화나 잡음에 민감함.

👥 인스턴스 세그멘테이션 (Instance Segmentation)

  • 의미론적 세그멘테이션(Semantic Segmentation): “여기에 사람이 있다” 수준으로, 동일 클래스에 속하는 모든 픽셀을 하나로 묶음.
  • 인스턴스 세그멘테이션(Instance Segmentation): “여기에 사람 1이 있고, 저기에 사람 2가 있다”처럼 동일 클래스라 해도 개별 객체를 구분해 분할함.
  • 따라서 인스턴스 세그멘테이션은 픽셀 단위 정밀 분할 + 객체 개별화라는 두 가지 목적을 동시에 달성하는 기술임.

📂 코코 데이터셋 (COCO: Common Objects in Context)

  • 이미지 기반 AI 모델 학습에서 가장 널리 사용되는 대표 공개 데이터셋 중 하나.
  • 수십만 장의 이미지와 수천 개의 객체 레이블을 포함하여, 객체 검출·세그멘테이션·키포인트 검출 등 다양한 비전 태스크에 활용됨.

🧩 주요 모델들

🕸️ Mask R-CNN

  • Faster R-CNN마스크 예측 브랜치(branch)를 추가한 모델.
  • 객체 검출(Object Detection)과 인스턴스 세그멘테이션을 동시에 수행할 수 있음.
  • 아래 그림은 바운딩 박스로 객체 검출을 한것(왼쪽)과 인스턴스 세그맨테이션(오른쪽)을 진행한 예제이다.

⚡ YOLO (You Only Look Once)

  • pip install ultralytics 로 라이브러리 설치
  • 이미지를 한 번에 처리하여 객체의 위치와 종류를 예측하는 초고속 실시간 객체 탐지 모델.
  • 속도가 매우 빠르며, 실시간 비전 응용(자율주행, CCTV 모니터링 등)에 많이 쓰임.
  • 아래 그림은 욜로를 통한 객체 감지와 종류 그에대한 신뢰도 출력


🎯 객체 검출 (Object Detection)

객체 검출은 이미지에서 관심 있는 객체의 위치와 클래스를 동시에 예측하는 기술임.

  • 인스턴스 세그멘테이션은 정확히 마스킹하지만 무겁고 느린 단점이 있음.
  • 객체 검출은 바운딩 박스(Bounding Box)로만 객체를 표시해 빠르고 가볍다는 장점이 있음.
  • 바운딩 박스는 객체를 감싸는 최소 크기의 직사각형으로 표현되며, 좌표는 보통 (x, y, 너비, 높이)로 정의됨.

📏 성능 측정 지표 및 후처리 기법

🔹 IoU (Intersection over Union)

  • 두 바운딩 박스의 겹치는 영역(교집합)과 전체 영역(합집합)의 비율.
  • 객체 검출 모델의 정확도를 측정하는 핵심 지표.
  • 값이 1에 가까울수록 두 박스가 정확히 겹친다는 의미임.
  • 아래 그림은 차례대로 각각의 바운딩 박스가 많이 겹침을 단계적으로 보여주는 예시이다.

🔹 NMS (Non-Maximum Suppression)

  • 객체 검출에서 중복된 바운딩 박스 제거를 위한 후처리 기법.
  • 같은 객체를 여러 번 검출했을 때, 가장 신뢰도가 높은 박스 하나만 남기고 나머지는 제거함.
  • 절차:
    1. 신뢰도 기준으로 바운딩 박스 정렬
    2. 가장 높은 신뢰도의 박스 선택
    3. 선택된 박스와 IoU가 임계값 이상인 박스 제거
    4. 남은 박스로 2~3 과정 반복

→ 예를 들어, 한 사람을 여러 번 동그라미로 검출했다면 겹치는 동그라미 중 가장 정확한 하나만 남기는 방식임.
→ 아래 그림처럼 NMS전에는 세개의 박스가 겹쳤는데 처리 후에는 빨간색 하나의 박스만 남게 되었다.
(원본 박스 수 : 5, NMS 적용 후 박스 수 : 3, 제거된 박스 : [2,5])

🔹 mAP (mean Average Precision)

  • 모든 클래스에 대한 Average Precision(AP)의 평균.
  • 즉, 전체 객체 클래스에 대해 얼마나 정확하게 객체를 탐지했는지를 종합적으로 평가하는 지표임.
  • 값이 높을수록 다양한 클래스에 대해 안정적으로 객체를 잘 탐지하고 있음을 의미함.
  • cat: 0.815, dog: 0.843, rabbit: 0.795로 평균적으로 mAP가 0.818로  안정적으로 객체를 잘 탐지하고 있음을 보여준다.


좋습니다 🙆 제가 위의 학습일지를 숫자 이모티콘 대신 주제와 잘 어울리는 컬러풀한 이모티콘으로 바꿔서 다시 정리해드릴게요. 수정하기도 편하도록 깔끔하게 구성했습니다.


🤖 AI 챗봇 기초

💡 챗봇 기본 개념

  • **챗봇(Chatbot)**이란 자연어를 통해 사용자와 대화할 수 있는 인공지능 프로그램을 의미한다.
  • 가장 큰 목적은 자동 응답 시스템으로, 사용자의 질의에 대해 규칙 기반 또는 학습 기반으로 적절한 답변을 제공하는 것.

📌 챗봇 종류

규칙 기반 챗봇 미리 정의된 규칙/패턴에 따라 응답 구현 간단, 예측 가능 유연성 부족
AI 기반 챗봇 머신러닝·딥러닝·자연어처리(NLP) 활용 자연스러운 대화 가능 데이터·학습 비용 큼
하이브리드 챗봇 규칙 기반 + AI 결합 안정성과 유연성 동시 확보 설계 복잡

🏗️ 챗봇 아키텍처

챗봇은 단순히 "입력→출력" 구조가 아니라, 대화 관리와 의미 해석 단계를 포함한 전체 시스템이다.

📍 흐름 단계

사용자 입력 → 전처리 → 의도 분류(Intent Classification) 
→ 개체 추출(NER, Named Entity Recognition) 
→ 대화 관리(Dialog Management) 
→ 응답 생성(Response Generation) → 후처리 → 사용자 출력

🧩 +(add)개체 추출 (NER)

  • NER(Named Entity Recognition)이란 문장에서 고유 명사나 특정 개체(사람 이름, 지명, 날짜, 제품명 등)를 식별하는 작업을 의미한다.
  • 예시: "서울에서 내일 회의" → 서울(위치), 내일(시간)
  • 챗봇에서 NER은 정확한 맥락 기반 응답을 위해 핵심 역할을 한다.
  • 대표적 활용: 호텔 예약 챗봇 → 도시명(장소), 날짜(시간), 인원수(수치) 추출.

🎯 의도 분류(Intent Classification)

사용자의 발화가 어떤 "의도"를 가지고 있는지 식별하는 단계.

📌 전통적 방법

  • TF-IDF: 단어의 중요도를 수치화
  • SVM(Support Vector Machine): 고차원 공간에서 최적 경계선을 찾아 분류
  • Naive Bayes: 베이즈 정리를 기반으로 한 확률적 분류

📌 딥러닝 기반 방법

  • LSTM(Long Short-Term Memory): 장기 의존성 문제를 해결한 RNN 계열 → 문맥 기반 분류에 강점
  • BERT: 양방향 Transformer 구조로 문맥 이해 능력이 뛰어남
  • GPT 계열: 대규모 사전 학습 기반, 프롬프트 엔지니어링과 Few-shot 학습을 통한 의도 분류 가능
  • 아래는 버트 기반 의도 분류 방법으로 훈련을 한 뒤 , 오늘 날씨 어때? 라는 문맥에 대해 weather 이라는 의도를 분류해 냈다.


🛠️ SpaCy 활용

  • SpaCy는 파이썬 기반의 고성능 자연어 처리(NLP) 라이브러리.
  • 토큰화(Tokenization), 품사 태깅(POS tagging), 개체 인식(NER) 등을 지원.

📌 설치 & 모델

en_core_web_sm 35MB 소형, 빠름
en_core_web_md 116MB 중형, 정확도 ↑
en_core_web_lg 742MB 대형, 가장 정확
ko_core_news_sm 한국어 모델, KoNLPy 의존 한국어 지원
pip install spacy
python -m spacy download en_core_web_sm
  • 우선은 한국어 모델이 잘 실행되지 않아 다국어 모델로 실습을 진행해 보았다. 다국어 모델이어서 그런지 제대로 검출이 되는 것 같진 않지만 몇 단어들을 검출해내긴 한다.


☁️ OpenAI API 활용

  • GPT 모델 기반 대화형 AI를 구현할 수 있는 서비스.
  • 주요 기능: 자연어 이해, 생성, 대화, 외부 도구 연동, 텍스트 벡터화, 파인튜닝.

📌 설치

pip install openai

📌 대화 구조

OpenAI API는 메시지의 역할(Role)과 내용(Content)으로 대화를 정의한다.

  • system: 보이지 않는 프롬프트로 AI의 성격/행동을 규정
  • user: 사용자 입력
  • assistant: AI 응답

❗️해결해보아야 할 것

  • spacy 객체 검출 중에 korean 언어모델이나 다른 영어 모델이 다운은 됐는데 계속 셀을 실행시키면 없다고 나와서 파이썬 경로 문제인지 뭔지.. 다시 알아봐야한다! 우선은 다른 코드로 실행해보긴 했는데 저번부터 경로랑 파이썬 버전문제로 살짝씩 안 되는 부분이 있어서 꼭 해결하고 넘어가야겠다ㅜㅜ

본 후기는 [카카오엔터프라이즈x스나이퍼팩토리] 카카오클라우드로 배우는 AIaaS 마스터 클래스 2기(B-log) 리뷰로 작성 되었습니다.

AIaaSAIaaS마스터클래스2기개발자교육부트캠프스나이퍼팩토리카카오엔터프라이즈카카오클라우드클라우드개발자클라우드엔지니어한국생산성본부