11. Sketch Learning 스케치 학습
이미지 참조 : 스케치 학습
✅ 스케치 학습으로 배우는 자율주행 머신러닝
스케치 학습(Sketch Learning)은 아이가 반복해서 스케치북에 그림을 그리며 점점 더 정확하고 멋진 그림을 완성해 가는 과정과 같습니다. 처음에는 선도 어설프고 모양도 불분명하지만, 계속 그리고 지우면서 점점 더 잘 그리게 되죠. 이런 과정처럼, 자율주행 자동차에서 머신러닝 (Machine Learning) 이라고 정의합니다.
머신러닝(Machine Learning)도 아이가 그림을 배우는 것처럼, 도로 위 사람, 자동차, 신호등 같은 많은 데이터를 반복해서 보고 배우는 과정을 거치며 점점 더 정확한 인식을 할 수 있게 됩니다.
자율주행 자동차는 처음에는 보행자와 차선 등을 제대로 구분하지 못하지만, 학습을 거듭할수록 점점 정확하게 인식하고 안전하게 판단할 수 있게 되죠.
즉, 머신러닝은 자율 주행 자동차에게 있어서 스케치 학습처럼 ‘많이 보고, 반복하고, 실수를 고치며 배우는 과정’이며 복잡한 도로 환경에서 안전하게 운행할 수 있게 됩니다.
⚪ 스케치 학습이란?
1. 데이터를 ‘스케치북에 하나씩 그리는 과정’처럼 하나씩 보면서
2. 점점 더 많은 그림(데이터)을 경험하고, 실수를 고치면서
3. 점점 더 정확한 ‘그림’(패턴과 규칙)을 배우는 머신러닝 학습 방식을 뜻합니다.
⚙️ 자율주행 자동차에서 머신러닝
- 예를 들어, 아이가 여러 장의 스케치북 그림을 보며 ‘사람’이라는 개념을 익히듯, 자율주행 자동차도 수많은 사진과 영상 데이터를 반복 학습하여 보행자를 정확하게 인식할 수 있게 됩니다.
- 자율주행 자동차는 카메라, 라이다, 레이더 등 다양한 센서를 통해 주변 환경을 실시간으로 인식합니다. 이 과정에서 머신러닝은 인식과 판단의 핵심 역할을 수행합니다.
- 자동차가 도로 위의 신호등, 보행자, 차선 등을 구분할 수 있는 이유는 머신러닝 모델이 방대한 양의 데이터를 학습하여 각각의 객체를 정확히 식별하기 때문입니다.
1️⃣ 자율주행 자동차에서의 머신러닝 사례
1. 객체 인식
- 사람의 동작(걷기, 뛰기)부터 제스처(손짓, 수신호)까지 포함
- 자율주행 자동차는 수많은 도로 사진과 영상을 ‘스케치북에 반복해서 그림을 그리듯’ 학습합니다.
- 초기에는 ‘사람’, ‘차량’, ‘신호등’ 등 객체를 명확히 구분하지 못하지만,
점차 학습이 진행되면서 더욱 정확한 인식이 가능해집니다.
- 이처럼 다양한 데이터를 반복적으로 학습하며 특징을 체계적으로 익히는 과정이 머신러닝입니다.
2. 차선 인식
- 도로 위 차선을 센서 데이터와 이미지로 반복 학습하며, 차선의 굴곡, 두께, 색상 등 세밀한 특징을 하나씩 습득합니다.
- 이를 통해 차량은 점차 정확하게 차선을 따라 주행할 수 있게 됩니다.
3. 행동 예측
- 주변 차량과 보행자의 움직임을 다양한 사례로 학습하여, ‘이동 패턴에 따라 어떻게 대응할 것인가’에 대한 규칙을
스케치하듯 만들어 갑니다.
- 이를 통해 상황에 맞는 안전한 판단과 대응이 가능해집니다.
4. 신호등 및 제스처 인식
- 교통 신호와 사람의 손동작 역시 반복 학습을 통해 인식 정확도를 높입니다.
- 예컨대, 교통경찰이 손을 들어 정지 신호를 보내는 동작을 인지하여 차량이 즉시 멈출 수 있도록 하는
규칙을 학습합니다.
🟩 자율주행 자동차 머신러닝의 핵심 원리와 적용
🧾 데이터 품질과 양의 중요성
1. 머신러닝 성능은 단순히 ‘많은 데이터’뿐 아니라 ‘질 좋은 데이터’가 결정적인 역할을 합니다.
2. 스케치북에 그린 그림이 흐리거나 엉성하면 제대로 배우기 어려운 것처럼,
자율주행차도 부정확하거나 편향된 데이터가 많으면 오작동 가능성이 높아집니다.
3. 따라서 비, 눈, 밤, 낮, 도로 공사 등 다양한 환경에서 수집한 폭넓고 다양한 데이터가 필수적입니다.
🔄 지속적 학습과 모델 업데이트
1. 도로 환경이 계속 변하기 때문에 자율주행차는 새로운 데이터를 꾸준히 수집해 모델을 업데이트합니다.
2. 새로운 교통 표지판이나 도로 구조 변경 등의 변화에 적응하기 위해 반복 학습이 필수입니다.
3. 이러한 학습 방식을 ‘지속적 학습(Continuous Learning)’이라 합니다.
🚧 안전을 위한 보완 시스템
1. 머신러닝 모델만으로는 완벽한 판단이 어려워, 규칙 기반 알고리즘과 센서 융합 기술을 함께 사용합니다.
2. 머신러닝이 오작동해도 다른 시스템이 차량의 안전을 보장하도록 여러 겹의 안전장치가 구축되어 있습니다.
3. 이를 통해 예상치 못한 상황에서도 안전한 운행이 가능하도록 설계됩니다.
📊 머신러닝의 작동 원리와 학습-추론 과정
머신러닝은 크게 두 단계, 학습(Training)과 추론(Inference) 으로 구성됩니다. 이를 아이가 스케치북에 그림을 그리며 배우는 과정에 비유해 설명할 수 있습니다.
1. 데이터 수집
: 아이가 스케치북에 여러 장의 그림을 그리기 위해 다양한 그림 자료를 모으듯, 머신러닝도 사진, 소리, 숫자 등 다양한 데이터를 광범위하게 수집합니다.
2. 학습 (Training)
: 아이가 ‘이건 고양이, 이건 강아지’라고 반복해서 그림을 그리며 특징을 익히는 것처럼, 머신러닝 모델도 수많은 데이터를 보면서 패턴과 규칙을 스스로 학습합니다.
이 과정은 스케치북에 계속해서 그림을 그려가며 점점 더 정확하게 완성해 가는 과정과 같습니다.
3. 검증 (Validation)
: 아이가 자신이 그린 고양이가 잘 그려졌는지 확인하는 것처럼, 학습된 모델은 새로운 데이터로 평가를 받으며 얼마나 정확하게 인식하는지 점검합니다.
4. 추론 (Inference) / 예측 (Prediction)
: 이제 아이가 배운 그림 실력을 바탕으로 자유롭게 그림을 그릴 수 있듯, 학습된 머신러닝 모델은 실시간으로 새로운 데이터를 보고 상황을 판단하거나 예측합니다.
자율주행 자동차는 이 추론 단계를 통해 주변 환경을 인식하고, 즉각적으로 안전한 주행 결정을 내립니다.
2️⃣ 자율주행 자동차의 머신러닝 구성
1. 학습 데이터 수집 (Training Data Collection)
- 보행자, 차량, 신호등, 차선 등 다양한 도로 객체를 포함한 데이터 수집
- 다양한 날씨, 시간대, 도로 상황 등에서 수집된 데이터를 사용해 모델의 일반화 성능 강화
2. 학습 알고리즘 및 모델 설계 (Machine Learning Model Design)
- CNN, RNN, Transformer 등의 딥러닝 모델을 사용해 시각적 특징을 학습
- 데이터 속에서 패턴과 규칙을 스스로 찾아내도록 설계
3. 센서 융합 (Sensor Fusion)
- 카메라, 라이다, 레이더 등 다양한 센서 정보를 통합 분석
- 거리, 속도, 형태 등 각기 다른 정보를 조합하여 더 정밀한 환경 인식 수행
4. 실시간 추론 및 판단 시스템 (Real-time Inference & Decision Making)
- 학습된 모델을 이용해 도로 상황을 실시간으로 분석
- 인식 결과에 따라 주행, 정지, 회피 등 차량 행동을 즉시 결정
5. 지속적 학습 및 업데이트 (Continual Learning & Update)
- 주행 중 새롭게 수집되는 데이터를 기반으로 주기적인 모델 개선 수행
- 도로 공사, 기상 변화, 지역 특성 등 환경 변화에 유연하게 대응
🛠 자율주행 머신러닝의 주요 구성 요소
1. 학습 데이터 (Training Data)
- 보행자, 차량, 차선, 신호등 등 다양한 상황을 담은 이미지 및 센서 데이터를 수집
- 스케치북에 그림을 하나씩 그리듯, 모델이 반복적으로 데이터를 보고 학습
2. 학습 알고리즘 및 모델 (Machine Learning Model)
- CNN, RNN, Transformer 등 다양한 딥러닝 구조를 이용해 패턴을 학습
- 데이터를 바탕으로 각 객체의 특징과 행동을 인식하고 예측하는 규칙을 형성
3. 센서 융합 시스템 (Sensor Fusion)
- 카메라, 라이다, 레이더 등의 센서 데이터를 통합하여 더 정확한 주변 인식 수행
- 다양한 감각(시각, 거리, 속도)을 결합해 복잡한 상황을 다층적으로 분석
4. 추론 및 판단 시스템 (Inference Engine)
- 학습된 모델이 실시간으로 환경을 분석하고, 주행 판단을 내리는 핵심 모듈
- 도로 상황, 객체 행동 예측 등을 기반으로 차량의 이동 경로를 결정
5. 지속적 업데이트 시스템 (Continuous Learning)
- 새로운 데이터나 환경이 등장하면, 다시 학습하여 모델을 최신 상태로 유지
- 도로 구조 변경, 계절 변화, 도시별 교통 습관 등에 적응 가능
🎯 머신러닝 기반 자율주행의 주요 목적
● 복잡한 도로 환경에서도 사람, 사물, 신호 등을 정확히 인식하고 안전하게 판단
● 반복 학습을 통해 인간처럼 상황을 유연하게 이해하고 반응하는 시스템 구현
● 센서 융합 및 패턴 분석을 통해 실시간 위험 예측과 회피 가능
● 다양한 교통 시나리오에 적응하며 지속적으로 발전하는 자율주행 시스템 구축
● 스케치 학습 방식으로 모델이 점점 더 정교해져, 예측 정확도와 안전성 향상
3️⃣ 스케치 학습 체험
머신러닝의 원리를 직접 체험해 보기 위해, 먼저 흰 배경의 종이에 검정색 굵은 마카로 집 모양을 그려보겠습니다.
이후 이 집 그림을 여러 장 촬영해 모델에 학습시키고, 스스로 집 이미지를 인식할 수 있도록 해볼 예정입니다.
먼저, 흰 종이에 그려진 이미지가, 스케치 이미지인지 판단할 수 있는 프로그램을 다운로드하고 실행해보겠습니다.
이미지 참조 : 스케치 예시
💡 Sketch Learning 예시
📍 종이에 그린 그림을 주미 AI의 카메라로 인식하기
● 간단한 실습 예시
종이에 여러 그림을 그리고 AI 카메라가 이를 실시간으로 인식하도록 구성해 머신러닝의 기본 원리를 체험해 봅니다.
● 데이터 양에 따른 인식률 변화 관찰
그림 데이터를 점점 더 많이 추가하며, 인식률이 어떻게 향상되는지 직접 경험할 수 있어 이해가 쉽습니다.
● 학습 동기 및 이해도 증진
이러한 체험 활동은 머신러닝과 자율주행 기술에 대한 흥미를 높이고, 개념을 더 깊이 이해하는 데 도움을 줍니다.
이미지 참조 : 스케치 인식하기 화면
🟨 주미 AI 스케치 인식하기
1. 스케치북에 그리기
배경이 흰색인 종이 위에 굵은 검정 펜을 이용하여 스케치북에 위 그림과 같이 '집 모양' 그림을 그립니다.
2. 인식 프로그램 실행하기
- 아래의 파이썬 예제를 다운로드 받아서 프로그램을 실행 시킵니다.
3. 스케치 인식
- 주미 AI가 정상적으로 연결 되고, 프로그램이 실행 됩니다.
- 처음엔 학습 된 모델이 없기 때문에 아래 그림과 같이 Sketch 로 표시 됩니다.
# 카메라 스트리밍 및 제스처 인식 초기화
zumiAI.camera_stream_start()
zumiAI.sketch_detector_init()
zumiAI..sketch_detector_start()
# 사용자가 인식시키고 싶은 스케치 이름
TARGET_SKETCH_NAME = "my_house"
print(f"[INFO] '{TARGET_SKETCH_NAME}' 스케치 인식 대기 중...")
# 인식 로직 실행
try:
while True:
if zumiAI.is_sketch_detected(name=TARGET_SKETCH_NAME):
sketch_name, confidence = zumiAI.get_sketch_result(name=TARGET_SKETCH_NAME)
print(f"인식됨! 이름: {sketch_name}, 신뢰도: {confidence:.2f}")
if confidence >= 0.7:
print("올바른 그림이 인식되었습니다!")
else:
print("그림이 인식되었지만 신뢰도가 낮습니다. ")
else:
print(" 스케치 인식 대기 중...")
이미지 참조 : 스케치 데이터 인식하기
4️⃣ 스케치 학습 시키기 (머신러닝 원리 실습)
앞서 사용한 프로그램은 스케치 위에 그림이 있는지 없는지 판단하는 기능을 가지고 있었습니다. 이제 본격적으로, 집 모양의 그림을 학습시키고 이를 ‘house’라고 인식할 수 있도록, 아래 설명을 읽고 프로그램을 다운로드 받아 실행해보겠습니다.
🟪 주미 AI 스케치 학습시키기
1. 스케치북에 집 그림을 그려봅니다.
위의 이미지를 참고하여 집 그림을 그려 봅니다.
2. 스케치 데이터 학습 시키기 (=사진 찍기) (키보드 : r키)
- 프로그램이 실행 되면 위의 그림 처럼 집 그림을 보이게 두고 키보드의 r 키를 누릅니다.
- 그림이 유사하고, 많이 촬영 할 수록 인식률이 올라갑니다.
3. 종료 및 저장하기 (키보드 : e키)
- 여러장의 스케치 데이터를 촬영하였다면 e를 눌러 학습을 종료 합니다.
- 학습이 종료되면 바로 인식 프로그램이 켜지므로, 그림을 인식 해봅니다.
# house 이름으로 스케치 학습 모드 시작
zumiAI.sketch_train(name="house")
# 이제 PC 화면을 보면서 'r'키를 눌러 스케치를 학습하고 'e'키로 종료하세요.
print("'house' 스케치 학습 모드가 종료되었습니다.")
TARGET_SKETCH_NAME = "house"
print(f"[INFO] '{TARGET_SKETCH_NAME}' 스케치 인식 대기 중...")
4. 다양한 스케치 이미지도 직접 그려보고 학습시켜 봅니다.
- 집 그림 외에도, 물고기, 모자, 자동차, 공, 음표,나무,하트 등 다양한 모양을 직접 스케치북에 그려보세요.
- 각 이미지도 같은 방식으로 여러 장 촬영해 학습시키면, 모델이 점점 다양한 객체를 구별하고 인식할 수 있게 됩니다.
- 이렇게 여러 이미지를 학습해보면, 머신러닝이 어떻게 패턴을 기억하고 분류하는지 더욱 깊이 이해할 수 있습니다.
이미지 참조 : 다양한 스케치
5️⃣ 스케치 프로그램
앞에서 사용한 1. 스케치 학습하기, 2. 스케치 인식하기, 3. 인식된 모델 삭제하기 기능을 하나의 프로그램으로 통합해보겠습니다. 이를 위해 Python의 GUI 모듈인 tkinter를 활용하여 간단한 사용자 인터페이스를 갖춘 프로그램을 만들어볼 예정이며 이 프로그램을 통해 학습, 인식, 삭제 기능을 보다 직관적으로 사용할 수 있게 됩니다.
이미지 참조 : 주미 스케치 프로그램
위 그림처럼 주미 카메라를 PC에 연결한 뒤, 아래의 프로그램을 다운로드하여 실행하면,tkinter로 제작된 파이썬 프로그램이 실행됩니다. 이제 스케치에 대하여 학습 시키기, 인식하기, 모델 삭제하기 기능을 직관적으로 사용할 수 있으며, 머신러닝으로 학습 된 데이터를 어떻게 관리 하는지 테스트 해볼 수 있습니다.
📁 주미 스케치 파이썬 프로그램 다운로드
# ZumiAI 초기화 및 연결
self.zumiAI = ZumiAI()
self.zumiAI.connect("192.168.0.82")
# 프로그램 시작 시 카메라 스트리밍 시작
self.zumiAI.camera_stream_start()
def open_train_window (self):
# 1. 스케치 학습 시키기
def open_detect_window (self):
# 2. 스케치 인식하기
def open_delete_window (self):
# 3. 학습된 모델 삭제하기
def exit_program (self):
# 4. 프로그램 종료하기
🟦 1. 스케치 학습 시키기
이미지 참조 : 1. 스케치 학습 시키기
‘1. 스케치 학습 시키기’ 버튼을 누르면, 그림처럼 학습할 스케치의 이름을 입력하라는 창이 나타납니다.
스케치 이름을 입력한 뒤 ‘학습 시작’을 누르면 잠시 후 프로그램이 실행되고, 주미 AI의 카메라 화면이 표시됩니다.
이 상태에서 주미의 카메라 화면(ZumiAI stream) 을 클릭하고
r 키를 누르면 이미지가 캡처되고, e 키를 누르면 학습이 종료되며 모델이 저장됩니다.
이미지 참조 : 스케치 학습 과정
🟩 2. 스케치 인식하기
‘2. 스케치 인식하기’ 버튼을 누르면 새로운 창이 뜨고, 여기서 인식 시작을 클릭하면 잠시 후 인식 프로그램이 실행됩니다.
이 프로그램은 이전에 학습한 모델을 기반으로 스케치를 실시간으로 인식하며, 위 그림처럼 학습된 결과에 따라 화면에 결과가 표시됩니다.
이미지 참조 : 스케치 학습 과정
예를 들어, ‘house’라는 이미지를 학습했다면, 단순히 'sketch'로 표시되는 것이 아니라 ‘house’로 정확하게 인식됩니다.
또한, 인식 프로그램이 실행 중일 때는 ‘인식 중지’ 버튼을 눌러 언제든지 인식을 멈출 수 있습니다.
🟥 3. 학습된 모델 삭제하기
‘3. 학습된 모델 삭제하기’ 버튼을 누르면 새로운 창이 뜨고, 삭제할 스케치의 이름을 입력한 뒤 이름으로 삭제 버튼을 누르면
해당 이름을 가진 모델만 삭제 됩니다.
이미지 참조 : 학습 모델 이름으로 삭제
또한 '전체 삭제' 버튼을 누르면, 지금까지 학습 된 모델들을 모두 삭제합니다.
※ 삭제한 데이터가 캐시 형태로 프로그램에 남아 있을 수 있으므로, 보다 정확한 실행을 위해서는 삭제 후 프로그램을 완전히 종료한 뒤 다시 실행하는 것을 권장합니다.
이미지 참조 : 전체 삭제
🛑 프로그램 실행 시 주의사항
● 학습 된 데이터는 스케치 학습 경로에 따라 PC 에 저장 됩니다.
● 스케치 학습을 위해 카메라를 켜고 끌 때 약간의 준비 시간이 소요 될 수 있습니다.
● 학습 데이터는 사용자가 임의적으로 커스텀 할 수도 있습니다.
● 이 기능은 주미 자체의 하드웨어 기능이 아니라, PC 기반 소프트웨어로 처리됩니다.