컴퓨터 비전 + YOLO · 학년별 3개 과정
AI 사물 인식의 원리를배우고 직접 경험합니다
물체 사진을 모으고 정답 상자를 표시해 YOLO를 학습한 뒤, 웹캠으로 결과를 확인합니다.
이 과정은 Ultralytics의 공개 저장소와 공식 문서를 참고해 CIT가 독립적으로 설계했습니다. Ultralytics가 공식 운영하거나 인증·공동 개발한 과정은 아닙니다.

AI의 인식 과정
다섯 역할이 함께 움직이는 AI 시스템
모든 회차에서 입력, 기억, 처리, 출력, 제어를 따로 떼지 않고 한 단위로 연결합니다. 결과를 확인한 제어 단계는 다음 입력, 기억, 처리 중 한 가지를 바꾸고 다시 실행하게 합니다.
학생이 고른 물체 사진이나 웹캠 화면이 시스템 안으로 들어옵니다.
cupcar학습 흐름
사진 한 장이 물체 탐지 결과가 되기까지
사진 수집, 정답 표시, 데이터 분리, 학습, 검증, 웹캠 사용까지 한눈에 볼 수 있습니다. 로봇으로 확장할 때 필요한 안전 경계도 함께 표시했습니다.
학년별 과정
학년에 따라 깊어지는 YOLO 과정
물체 탐정: YOLO 컴퓨터 비전
그림 속 물체를 찾는 AI를 살펴보고 교실 물체 두세 가지의 사진에 정답 상자를 표시해 작은 YOLO 모델을 학습합니다.
- 수업 시간
- 8회 × 90분
- 시작 전 준비
- 파일을 열고 저장할 수 있고 표에서 두 행을 비교할 수 있으면 시작할 수 있습니다. 파이썬 경험은 필요하지 않습니다. 강사가 학습 명령을 실행하면 학생은 데이터와 예측 결과, 오류를 설명합니다. 웹캠에는 장난감과 교실 물체만 비추며 얼굴과 개인 공간은 촬영하지 않습니다.
- 최종 결과물
- 물체 데이터 카드, 학습 전후 비교표, 웹캠 물체 탐지 시연, 어린이용 모델 설명서(모델 카드)
01사진을 이루는 숫자, 픽셀
사람이 장난감 자동차를 볼 때와 컴퓨터가 사진을 받을 때 무엇이 다를까요?
결과물사람의 설명과 픽셀 입력을 구분한 네 칸 관찰 카드
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 사람이 장난감 자동차를 볼 때와 컴퓨터가 사진을 받을 때 무엇이 다를까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 같은 물체를 밝기, 거리, 방향을 바꾸어 촬영한 관찰 보드
- 처리Process
같은 장난감의 밝은 사진과 어두운 사진을 비교합니다. 컴퓨터가 받는 입력과 사람이 붙이는 이름을 따로 적습니다.
- 출력Output
사람의 설명과 픽셀 입력을 구분한 네 칸 관찰 카드
- 제어Control
처음 보는 각도에서 무엇이 어려울지 예측합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
02물체 이름과 위치 찾기
사진에 자동차가 있다는 말과 자동차가 어디 있는지 찾는 일은 어떻게 다를까요?
결과물분류와 탐지를 그림으로 비교한 설명 카드
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 사진에 자동차가 있다는 말과 자동차가 어디 있는지 찾는 일은 어떻게 다를까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 고정 사진에서 pretrained YOLO의 상자, 이름, 확신도를 읽는 탐지 기록지
- 처리Process
각 상자가 어떤 물체를 감싸는지 확인합니다. 상자가 너무 크거나 작은 예를 한 개 찾습니다.
- 출력Output
분류와 탐지를 그림으로 비교한 설명 카드
- 제어Control
확신도가 높아도 틀릴 수 있는 이유를 말합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
03여러 조건을 담은 사진 모음
왜 같은 파란 자동차의 정면 사진만 많이 찍으면 충분하지 않을까요?
결과물촬영할 대상과 제외할 대상을 정리한 물체 데이터 카드
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 왜 같은 파란 자동차의 정면 사진만 많이 찍으면 충분하지 않을까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 두세 가지 물체의 각도, 크기, 배경, 가림을 포함한 안전한 촬영 계획
- 처리Process
각 범주에 필요한 다른 각도와 배경을 카드로 정합니다. 사람 얼굴, 이름표, 화면이 들어간 사진을 제외합니다.
- 출력Output
촬영할 대상과 제외할 대상을 정리한 물체 데이터 카드
- 제어Control
빠진 조건을 짝과 교환해 찾아냅니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
04일관된 정답 상자
물체의 절반만 상자에 넣으면 AI는 어떤 정답을 배우게 될까요?
결과물세 가지 표시 규칙에 따라 짝과 함께 확인한 정답 상자 모음
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 물체의 절반만 상자에 넣으면 AI는 어떤 정답을 배우게 될까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 제공 labeling 도구에서 같은 기준으로 그린 정답 상자 묶음
- 처리Process
일부 가려진 물체에도 같은 포함 규칙을 적용합니다. class 이름의 철자와 순서를 확인합니다.
- 출력Output
세 가지 표시 규칙에 따라 짝과 함께 확인한 정답 상자 모음
- 제어Control
짝의 상자 두 개를 규칙표로 검사하고 수정합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
05학습용·시험용 사진 분리
답을 이미 본 사진으로 시험하면 왜 공정한 시험이 아닐까요?
결과물학습용·검증용·시험용 사진의 역할을 설명한 데이터 분리 지도
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 답을 이미 본 사진으로 시험하면 왜 공정한 시험이 아닐까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 같은 연속 촬영 묶음이 여러 split에 섞이지 않은 색 카드 데이터 분할
- 처리Process
먼저 보관할 test 묶음을 고르고 뒤집어 둡니다. 나머지를 train과 validation으로 나눕니다.
- 출력Output
학습용·검증용·시험용 사진의 역할을 설명한 데이터 분리 지도
- 제어Control
거의 같은 사진이 양쪽에 없는지 다시 확인합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
06예측을 고쳐 가는 YOLO 학습
한 번 틀린 예측을 본 YOLO는 다음 반복에서 무엇을 바꿀까요?
결과물예측, 정답, 차이, 모델 수정 과정을 연결한 학습 순환 그림
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 한 번 틀린 예측을 본 YOLO는 다음 반복에서 무엇을 바꿀까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 튜터가 실행하는 nano model 학습에서 초기와 후기 예측을 저장한 비교 보드
- 처리Process
튜터가 검토된 작은 dataset으로 bounded training을 시작합니다. 몇 번의 반복 뒤 validation 예측을 다시 저장합니다.
- 출력Output
예측, 정답, 차이, 모델 수정 과정을 연결한 학습 순환 그림
- 제어Control
좋아진 점과 새로 생긴 오류를 각각 한 개 찾습니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
07웹캠으로 처음 보는 물체 시험
밝은 책상에서는 찾던 물체를 어두운 배경에서 놓치면 무엇을 더 시험해야 할까요?
결과물성공 장면과 실패 장면을 담은 웹캠 시험 기록지
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 밝은 책상에서는 찾던 물체를 어두운 배경에서 놓치면 무엇을 더 시험해야 할까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 밝기, 거리, 가림을 한 번씩 바꾼 webcam object test
- 처리Process
학습된 모델로 기본 밝기 장면을 시험합니다. 거리, 밝기, 가림 중 하나씩만 바꿉니다.
- 출력Output
성공 장면과 실패 장면을 담은 웹캠 시험 기록지
- 제어Control
놓침과 잘못 찾은 상자를 실패 표에 붙입니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
08모델의 강점과 한계 설명
내 모델이 잘 찾는 조건과 아직 어려워하는 조건을 어떻게 보여 줄까요?
결과물어린이용 모델 설명서와 3분 실시간 시연
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 내 모델이 잘 찾는 조건과 아직 어려워하는 조건을 어떻게 보여 줄까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 사진 모음, 라벨 규칙, 학습 그림, webcam test를 연결한 Object Detective 전시
- 처리Process
가장 잘 찾은 장면과 가장 어려운 장면을 고릅니다. 실패하면 다시 데이터로 돌아가는 화살표를 붙입니다.
- 출력Output
어린이용 모델 설명서와 3분 실시간 시연
- 제어Control
가족에게 보여 줄 3분 시연과 한계 문장을 연습합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
YOLO 물체 탐지 프로젝트
공식 GitHub 저장소를 읽고 사전 학습된 모델을 실행한 뒤, 세 가지 물체를 찾는 맞춤형 탐지 모델을 학습하고 평가합니다.
- 수업 시간
- 12회 × 105분
- 시작 전 준비
- 파이썬의 변수·조건문·반복문을 읽고 터미널에서 한 줄 명령어를 실행할 수 있으면 좋습니다. 코딩 경험이 적으면 제공된 실습용 노트북 파일과 고정 데이터셋으로 시작합니다. 얼굴·이름표·개인 공간은 데이터에 넣지 않으며 웹캠은 물체 전용 구역에서만 사용합니다.
- 최종 결과물
- 다른 사람이 다시 실행할 수 있는 GitHub 저장소, 맞춤형 YOLO 모델, 오류 분석표, 웹캠 시연, 모델 설명서(모델 카드)
01물체 탐지 문제 정의
분류, 물체 탐지, 영역 분할(segmentation) 가운데 우리 과제에는 왜 물체 탐지가 알맞을까요?
결과물세 가지 물체를 찾는 탐지 문제 정의와 성공·실패 예시
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 분류, 물체 탐지, 영역 분할(segmentation) 가운데 우리 과제에는 왜 물체 탐지가 알맞을까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 세 가지 vision task의 입력과 출력을 비교한 problem canvas
- 처리Process
실시간 위치가 필요한 미션을 한 문장으로 씁니다. 찾을 세 범주와 찾지 않을 대상을 정합니다.
- 출력Output
세 가지 물체를 찾는 탐지 문제 정의와 성공·실패 예시
- 제어Control
성공 사례와 경계 사례를 각각 두 개 만듭니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
02사전 학습된 YOLO 재현
학습하기 전에 공식 예제를 그대로 재현하면 어떤 문제를 미리 찾을 수 있을까요?
결과물명령어, 버전, 입력값, 출력 경로를 적은 재현 기록
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 학습하기 전에 공식 예제를 그대로 재현하면 어떤 문제를 미리 찾을 수 있을까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 고정 이미지와 짧은 영상에서 같은 모델을 실행한 baseline run
- 처리Process
공식 예제 이미지를 nano model로 예측합니다. 출력 폴더와 상자, 이름, confidence를 찾습니다.
- 출력Output
명령어, 버전, 입력값, 출력 경로를 적은 재현 기록
- 제어Control
같은 입력을 다시 실행해 경로와 결과 구조를 비교합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
03GitHub 저장소 구조 읽기
README, 공식 문서, 소스 코드, 이슈, 라이선스는 각각 어떤 질문에 답할까요?
결과물고정된 커밋 링크와 최신 문서 확인 목록
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: README, 공식 문서, 소스 코드, 이슈, 라이선스는 각각 어떤 질문에 답할까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 공식 저장소의 다섯 구역과 수업에서 확인할 질문을 연결한 repo map
- 처리Process
README에서 설치와 task 목록을 찾습니다. ultralytics source 폴더와 docs 폴더의 역할을 구분합니다.
- 출력Output
고정된 커밋 링크와 최신 문서 확인 목록
- 제어Control
issue, release, license를 열고 수업 전 다시 확인할 항목을 적습니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
04물체 범주와 경계 사례 정의
비슷한 물체 두 개를 서로 다른 범주로 나눌 때 어떤 기준이 필요할까요?
결과물범주 이름·정의·경계 사례를 정리한 데이터 계획
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 비슷한 물체 두 개를 서로 다른 범주로 나눌 때 어떤 기준이 필요할까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 세 범주의 포함, 제외, 애매한 예를 적은 class rule sheet
- 처리Process
각 범주의 포함 예시와 제외 예시를 씁니다. 두 사람이 다르게 부를 수 있는 경계 사례를 찾습니다.
- 출력Output
범주 이름·정의·경계 사례를 정리한 데이터 계획
- 제어Control
한 가지 일관된 판정 규칙을 기록합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
05배경과 가림을 바꾼 사진 수집
사진 수보다 조건의 다양성이 중요한 이유를 어떻게 시험할까요?
결과물조건별 사진 수와 제외 이유를 적은 데이터 카드
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 사진 수보다 조건의 다양성이 중요한 이유를 어떻게 시험할까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 밝기, 배경, 거리, 방향, 가림을 고르게 포함한 object-only image set
- 처리Process
조건표에 따라 같은 물체를 다른 배경과 거리에서 촬영합니다. 얼굴, 이름표, 개인 화면이 들어간 frame을 즉시 제외합니다.
- 출력Output
조건별 사진 수와 제외 이유를 적은 데이터 카드
- 제어Control
각 조건이 최소 한 번 포함되는지 coverage 표로 확인합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
06YOLO 정답 형식과 품질 검사
정답 상자 좌표를 0과 1 사이 숫자로 저장하는 이유는 무엇일까요?
결과물상자 범위, 범주 번호, 누락·불필요 표시를 확인한 품질 검사 기록
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 정답 상자 좌표를 0과 1 사이 숫자로 저장하는 이유는 무엇일까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: label txt 한 줄을 그림으로 되돌려 확인하는 annotation audit
- 처리Process
image 크기로 나누어 normalized 좌표를 계산합니다. 저장된 txt 한 줄을 다시 그림에 표시합니다.
- 출력Output
상자 범위, 범주 번호, 누락·불필요 표시를 확인한 품질 검사 기록
- 제어Control
무작위 표본을 짝과 교환해 누락과 잘못된 class를 수정합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
07데이터 누수 없는 학습·시험 분리
연속 촬영한 비슷한 사진이 학습용과 시험용에 나뉘어 들어가면 점수가 왜 실제보다 높아질까요?
결과물데이터 분리 기준과 중복 검사 결과를 담은 설정 파일(dataset.yaml)
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 연속 촬영한 비슷한 사진이 학습용과 시험용에 나뉘어 들어가면 점수가 왜 실제보다 높아질까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 촬영 세션 단위로 묶은 train, validation, test directory
- 처리Process
한 그룹 전체를 하나의 split에만 넣습니다. dataset YAML의 path, train, val, test, names를 씁니다.
- 출력Output
데이터 분리 기준과 중복 검사 결과를 담은 설정 파일(dataset.yaml)
- 제어Control
각 split의 범주와 조건 coverage를 비교합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
08소형 맞춤 모델 학습
처음부터 학습하지 않고 사전 학습된 가중치에서 시작하는 이유는 무엇일까요?
결과물best.pt 파일, 결과 그래프, 설정표, 재실행 명령어
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 처음부터 학습하지 않고 사전 학습된 가중치에서 시작하는 이유는 무엇일까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: version, model, data YAML, epochs, image size가 기록된 첫 custom training run
- 처리Process
pretrained nano model로 bounded training을 실행합니다. train과 validation 결과가 저장되는 폴더를 확인합니다.
- 출력Output
best.pt 파일, 결과 그래프, 설정표, 재실행 명령어
- 제어Control
best.pt와 last.pt의 역할을 구분하고 hash를 기록합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
09정밀도·재현율·mAP와 실제 오류
잘못 찾는 경우가 많은 모델과 물체를 자주 놓치는 모델을 어떤 지표로 구분할까요?
결과물범주별 지표와 대표 오류 이미지를 정리한 평가 카드
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 잘못 찾는 경우가 많은 모델과 물체를 자주 놓치는 모델을 어떤 지표로 구분할까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 고정 test set의 metric과 실제 false positive, false negative 예시를 연결한 평가 보드
- 처리Process
precision과 recall을 false positive, miss에 연결합니다. IoU가 낮은 box 예시를 한 개 찾습니다.
- 출력Output
범주별 지표와 대표 오류 이미지를 정리한 평가 카드
- 제어Control
평균 점수와 class별 약점을 분리해 적습니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
10한 번에 한 변수만 바꾸는 실험
데이터, 판단 기준, 학습 횟수를 한꺼번에 바꾸면 무엇이 효과가 있었는지 알 수 있을까요?
결과물가설, 한 변수, 고정 조건, 결과와 반례가 있는 실험 기록
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 데이터, 판단 기준, 학습 횟수를 한꺼번에 바꾸면 무엇이 효과가 있었는지 알 수 있을까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 가림 또는 어두운 배경 한 slice를 고른 before-after experiment
- 처리Process
가장 약한 slice 한 개를 고르고 이유를 예측합니다. 추가 데이터 또는 한 설정 중 하나만 바꿉니다.
- 출력Output
가설, 한 변수, 고정 조건, 결과와 반례가 있는 실험 기록
- 제어Control
같은 test slice에서 baseline과 새 run을 비교합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
11웹캠 탐지 점수와 처리 속도 비교
탐지 기준 점수를 올리면 잘못 찾는 경우와 놓치는 경우가 각각 어떻게 달라질까요?
결과물탐지 기준을 정한 근거, 처리 시간, 실패 장면을 담은 시연 기록지
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 탐지 기준 점수를 올리면 잘못 찾는 경우와 놓치는 경우가 각각 어떻게 달라질까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: object-only zone에서 threshold 두 값을 비교하는 live webcam demo
- 처리Process
custom best.pt를 webcam source 0에서 실행합니다. 같은 물체 배치에서 낮은 threshold와 높은 threshold를 비교합니다.
- 출력Output
탐지 기준을 정한 근거, 처리 시간, 실패 장면을 담은 시연 기록지
- 제어Control
false alarm, miss, 지연을 함께 기록하고 종료합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
12다른 사람이 재현할 수 있는 공개 기록
코드와 best.pt 파일만 올리면 다른 사람이 같은 결과를 만들 수 있을까요?
결과물다른 사람이 재현할 수 있는 저장소, 웹캠 시연, 5분 기술 설명
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 코드와 best.pt 파일만 올리면 다른 사람이 같은 결과를 만들 수 있을까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 설치, 데이터 경계, 실행, 평가, 실패와 license 확인이 있는 GitHub project
- 처리Process
dataset을 공개할 수 있는지와 제외한 정보를 data card에 씁니다. 학습과 예측 명령, 대표 성공과 실패를 model card에 넣습니다.
- 출력Output
다른 사람이 재현할 수 있는 저장소, 웹캠 시연, 5분 기술 설명
- 제어Control
친구가 새 환경에서 한 명령을 재현하고 막힌 부분을 issue로 남깁니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
YOLO 컴퓨터 비전 연구 과정
맞춤형 탐지 모델을 같은 환경에서 재현하고 mAP·조건별 오류·변수 제거 실험(ablation)·처리 시간으로 결과를 검증합니다. 데이터 누수와 라이선스도 함께 확인합니다.
- 수업 시간
- 16회 × 120분
- 시작 전 준비
- 파이썬 함수와 클래스, 가상환경, Git 커밋, CSV나 표 데이터를 분석한 경험을 권장합니다. 비율·좌표·평균·혼동 행렬(confusion matrix)을 읽을 수 있어야 합니다. 사람을 식별하거나 생체 정보를 추론하지 않으며 동의 없이 촬영하지 않습니다. 개인정보가 없는 물체만 사용합니다.
- 최종 결과물
- 버전을 고정한 저장소, 맞춤형 탐지 모델, 실험표, 조건이 달라져도 안정적인지 분석한 보고서(강건성 보고서), 웹캠 응용 프로그램, 모델 설명서, 기술 발표와 질의응답
01실행 환경과 소스 코드 고정
오늘 실행한 결과를 한 달 뒤 다른 컴퓨터에서 재현하려면 무엇을 기록해야 할까요?
결과물새 가상환경 설치 확인 기록과 첫 Git 커밋
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 오늘 실행한 결과를 한 달 뒤 다른 컴퓨터에서 재현하려면 무엇을 기록해야 할까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: Python, ultralytics, model, device와 source commit을 기록한 environment manifest
- 처리Process
검토된 ultralytics package version을 설치합니다. package import와 CLI help를 실행해 설치를 확인합니다.
- 출력Output
새 가상환경 설치 확인 기록과 첫 Git 커밋
- 제어Control
source commit, model alias, device 정보를 manifest에 저장합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
02공개 API와 내부 구조 구분
수업에서 안정적으로 사용할 명령줄 도구(CLI), 파이썬 API와 바뀔 수 있는 내부 코드를 어떻게 구분할까요?
결과물CLI·파이썬 API·설정·내부 소스 코드의 변경 위험표
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 수업에서 안정적으로 사용할 명령줄 도구(CLI), 파이썬 API와 바뀔 수 있는 내부 코드를 어떻게 구분할까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: README와 docs에서 public entry point를 찾고 source 폴더에 연결한 repository map
- 처리Process
predict와 train의 CLI 예제를 Python API 예제와 대응합니다. cfg 기본값과 source implementation을 서로 다른 층으로 표시합니다.
- 출력Output
CLI·파이썬 API·설정·내부 소스 코드의 변경 위험표
- 제어Control
수업 코드가 public API만 의존하는지 검사합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
03측정 가능한 비교 기준(baseline)
한 번 잘 나온 시연 화면이 아니라 입력별 정확도와 처리 시간을 비교하려면 어떤 기록이 필요할까요?
결과물입력, 장치, 이미지 크기, 탐지 기준, 예열 조건과 결과를 정리한 기준표
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 한 번 잘 나온 시연 화면이 아니라 입력별 정확도와 처리 시간을 비교하려면 어떤 기록이 필요할까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 고정 image set에서 prediction output과 속도 정보를 저장하는 baseline script
- 처리Process
첫 실행과 반복 실행의 timing을 분리합니다. conf와 imgsz를 고정하고 device 정보를 기록합니다.
- 출력Output
입력, 장치, 이미지 크기, 탐지 기준, 예열 조건과 결과를 정리한 기준표
- 제어Control
오탐, 누락, box 위치 오류와 latency를 함께 저장합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
04문제 정의·비교 기준·데이터 범위 확정
YOLO를 쓰기 전에 간단한 규칙이나 사전 학습 모델만으로 충분한지 어떻게 판단할까요?
결과물강사가 승인한 프로젝트 계획서와 물체 전용 데이터 계획
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: YOLO를 쓰기 전에 간단한 규칙이나 사전 학습 모델만으로 충분한지 어떻게 판단할까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 목표, 사용자, 오용, 비AI baseline, 성공 metric과 중단 조건을 담은 project charter
- 처리Process
색 또는 크기 규칙과 pretrained model을 baseline 후보로 실행합니다. 수집하지 않을 사람, 얼굴, 이름표, 개인 공간을 명시합니다.
- 출력Output
강사가 승인한 프로젝트 계획서와 물체 전용 데이터 계획
- 제어Control
성공, 실패, 중단 조건을 승인표로 결정합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
05물체 범주 체계와 모호한 사례
사람마다 다르게 판단할 수 있는 경계 사례를 숨기지 않고 데이터 규칙에 어떻게 넣을까요?
결과물두 명의 표시 결과와 의견 차이를 정리한 기록
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 사람마다 다르게 판단할 수 있는 경계 사례를 숨기지 않고 데이터 규칙에 어떻게 넣을까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: class 정의, 포함과 제외, 모호성 처리, unknown 정책이 있는 annotation guide
- 처리Process
각 class의 positive, hard negative, ambiguous 예를 고릅니다. 두 사람이 같은 pilot image를 독립 annotation합니다.
- 출력Output
두 명의 표시 결과와 의견 차이를 정리한 기록
- 제어Control
불일치를 규칙 변경 또는 unknown 처리로 해결하고 기록합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
06YOLO 상자 좌표와 정답 표시 오류
상자 중심 좌표를 0과 1 사이 값으로 바꾸는 과정이 잘못되면 이미지 크기를 조정한 뒤 상자가 어떻게 어긋날까요?
결과물잘못된 좌표·누락된 표시·불필요한 표시·범주 불일치 보고서
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 상자 중심 좌표를 0과 1 사이 값으로 바꾸는 과정이 잘못되면 이미지 크기를 조정한 뒤 상자가 어떻게 어긋날까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: label txt를 image 위에 다시 그려 범위와 class를 검사하는 audit script
- 처리Process
모든 좌표가 0과 1 범위인지 자동 검사합니다. 무작위 image-label pair에 box를 다시 그립니다.
- 출력Output
잘못된 좌표·누락된 표시·불필요한 표시·범주 불일치 보고서
- 제어Control
오류 유형별 개수와 수정 commit을 저장합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
07그룹 단위 분리로 데이터 누수 방지
같은 물체와 연속 촬영 프레임을 어떤 단위로 묶어야 새 데이터 성능을 정직하게 볼 수 있을까요?
결과물데이터 분리 목록, 난수 시드(seed), 범주·조건 분포, 누수 검사 결과
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 같은 물체와 연속 촬영 프레임을 어떤 단위로 묶어야 새 데이터 성능을 정직하게 볼 수 있을까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: capture session과 object instance를 group key로 사용하는 deterministic split script
- 처리Process
group 단위로 deterministic split을 실행합니다. perceptual duplicate 후보가 split을 넘는지 검사합니다.
- 출력Output
데이터 분리 목록, 난수 시드(seed), 범주·조건 분포, 누수 검사 결과
- 제어Control
class와 condition 분포를 비교하고 test는 봉인합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
08실제 데이터와 데이터 증강 분리 검토
직접 모은 사진의 다양성과 컴퓨터로 변형한 데이터 증강을 같은 근거로 보면 어떤 한계가 생길까요?
결과물데이터에 부족한 조건 목록과 승인된 데이터 증강 가설
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 직접 모은 사진의 다양성과 컴퓨터로 변형한 데이터 증강을 같은 근거로 보면 어떤 한계가 생길까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: class, 배경, 밝기, scale, occlusion coverage와 augmentation 계획을 분리한 audit
- 처리Process
imbalance와 실제로 비어 있는 조건을 구분합니다. 한 augmentation이 어떤 실제 변화와 닮았는지 가설을 씁니다.
- 출력Output
데이터에 부족한 조건 목록과 승인된 데이터 증강 가설
- 제어Control
test set에는 augmentation을 적용하지 않는 이유를 검사합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
09전이 학습 실험 사전 등록
결과를 보기 전에 모델, 학습 횟수, 이미지 크기, 평가지표와 비교 기준을 어떻게 고정할까요?
결과물실행 전 시간을 기록한 실험 계획서
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 결과를 보기 전에 모델, 학습 횟수, 이미지 크기, 평가지표와 비교 기준을 어떻게 고정할까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: baseline과 한 개 후속 run의 model, data, seed, epoch, imgsz, metric 계획
- 처리Process
data YAML, seed, epochs, imgsz, device를 고정합니다. primary metric과 error slice를 실행 전에 씁니다.
- 출력Output
실행 전 시간을 기록한 실험 계획서
- 제어Control
후속 run에서 바꿀 수 있는 변수 한 개만 승인합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
10학습 실행과 결과물 추적
best.pt 파일만이 아니라 설정, 기록, 그래프, 코드 커밋을 함께 보존해야 하는 이유는 무엇일까요?
결과물기준 학습의 설정·기록·그래프·모델 파일 묶음과 재실행 확인
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: best.pt 파일만이 아니라 설정, 기록, 그래프, 코드 커밋을 함께 보존해야 하는 이유는 무엇일까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: run name, source commit, data hash, args와 output hash를 연결하는 experiment ledger
- 처리Process
args, results, train batch, validation prediction을 보존합니다. best.pt와 data manifest의 hash를 기록합니다.
- 출력Output
기준 학습의 설정·기록·그래프·모델 파일 묶음과 재실행 확인
- 제어Control
다른 폴더에서 명령을 다시 실행해 경로 의존성을 찾습니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
11mAP·정밀도-재현율 곡선과 실제 오류
mAP50-95가 높아도 특정 범주나 작은 물체를 놓칠 수 있는 이유는 무엇일까요?
결과물평가지표 정의, 판단 기준, 대표 오탐(FP)·미탐(FN)·위치 오류를 담은 평가 보고서
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: mAP50-95가 높아도 특정 범주나 작은 물체를 놓칠 수 있는 이유는 무엇일까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: global metric, class별 metric, size와 condition slice를 연결한 evaluation notebook
- 처리Process
mAP50과 mAP50-95 차이를 localization 엄격성과 연결합니다. class별 precision과 recall, confusion matrix를 확인합니다.
- 출력Output
평가지표 정의, 판단 기준, 대표 오탐(FP)·미탐(FN)·위치 오류를 담은 평가 보고서
- 제어Control
각 metric 약점을 실제 image error 두 개로 설명합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
12조건별 오류 분석
평균 점수에 가려진 조명·가림·크기·배경별 실패를 어떻게 찾을까요?
결과물우선순위를 정한 주요 실패 조건과 반례 이미지
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 평균 점수에 가려진 조명·가림·크기·배경별 실패를 어떻게 찾을까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: 오류를 class, size, light, occlusion, background와 원인 가설로 묶는 failure browser
- 처리Process
각 오류에 condition tag를 붙입니다. 빈도가 높거나 위험한 slice를 두 개 고릅니다.
- 출력Output
우선순위를 정한 주요 실패 조건과 반례 이미지
- 제어Control
model 문제와 dataset 문제의 대안 설명을 각각 적습니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
13변수 제거 실험으로 한 가지 주장 검증
데이터 양, 이미지 크기, 데이터 증강 가운데 한 조건이 특정 실패를 줄였다고 어떻게 확인할까요?
결과물평가지표, 실패 조건, 처리 시간, 부작용, 결론을 정리한 비교표
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 데이터 양, 이미지 크기, 데이터 증강 가운데 한 조건이 특정 실패를 줄였다고 어떻게 확인할까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: baseline과 한 변수만 다른 run을 같은 test와 latency 조건에서 비교한 ablation
- 처리Process
data coverage, imgsz, augmentation 중 한 변수만 바꿉니다. 같은 seed, split, epochs, evaluation을 유지해 새 run을 실행합니다.
- 출력Output
평가지표, 실패 조건, 처리 시간, 부작용, 결론을 정리한 비교표
- 제어Control
전체 metric, target slice, latency와 새 오류를 함께 비교합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
14웹캠 추론 과정과 처리 시간
촬영, 전처리, 추론, 후처리, 화면 표시 중 어느 단계가 느린지 어떻게 나누어 측정할까요?
결과물단계별 처리 시간, 탐지 기준, 프레임 처리 원칙, 실시간 시연
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 촬영, 전처리, 추론, 후처리, 화면 표시 중 어느 단계가 느린지 어떻게 나누어 측정할까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: object-only webcam에서 단계별 timing과 오래된 frame 처리 정책이 있는 Python application
- 처리Process
capture부터 display까지 단계별 시간을 기록합니다. 처리가 느릴 때 오래된 frame을 쌓을지 버릴지 결정합니다.
- 출력Output
단계별 처리 시간, 탐지 기준, 프레임 처리 원칙, 실시간 시연
- 제어Control
conf와 imgsz 한 값을 바꾸어 error-latency trade-off를 비교합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
15공개 전 안정성·개인정보·라이선스 확인
시연이 작동해도 공개하거나 다른 시스템에 넣기 전에 어떤 실패 조건과 사용 권리를 확인해야 할까요?
결과물강건성 보고서, 개인정보 보호 범위, 모델 설명서, 공개 여부 결정
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 시연이 작동해도 공개하거나 다른 시스템에 넣기 전에 어떤 실패 조건과 사용 권리를 확인해야 할까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: blur, glare, occlusion, unknown object test와 data-model-code license checklist
- 처리Process
fail-open이 아니라 detection 없음 또는 사람 확인으로 종료되는지 검사합니다. dataset, weights, code의 source와 license를 따로 기록합니다.
- 출력Output
강건성 보고서, 개인정보 보호 범위, 모델 설명서, 공개 여부 결정
- 제어Control
AGPL-3.0 또는 다른 요구를 만족하는지 담당자 검토 전 release를 보류합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
16기술 발표와 미래 로봇 연결 기준
웹캠 탐지 결과를 나중에 Tello나 RoboMaster에 연결하되 탐지가 곧바로 움직임으로 이어지지 않게 하려면 무엇이 필요할까요?
결과물재현 가능한 저장소, 실시간 시연, 포스터, 모델 설명서, 한계 설명, 로봇을 연결하지 않은 인터페이스 시험
- 입력Input
오늘의 질문과 개인정보 없는 고정 예시: 웹캠 탐지 결과를 나중에 Tello나 RoboMaster에 연결하되 탐지가 곧바로 움직임으로 이어지지 않게 하려면 무엇이 필요할까요?
- 기억Memory
다음 단계에 다시 쓸 기준과 중간 결과: detection event, confidence, timestamp, no-detection 상태와 별도 safety controller를 정의한 future adapter contract
- 처리Process
오래된 event, 낮은 confidence, 사람 승인 없음에서 stop을 반환하는 mock gate를 만듭니다. 실물 robot 없이 recorded event fixture로 interface를 시험합니다.
- 출력Output
재현 가능한 저장소, 실시간 시연, 포스터, 모델 설명서, 한계 설명, 로봇을 연결하지 않은 인터페이스 시험
- 제어Control
질문, source, data, training, evaluation, latency, limits를 8분 동안 방어합니다. 결과를 보고 다음 입력, 기억, 처리 중 한 가지만 바꿔 다시 시험합니다.
공식 저장소
YOLO 공식 GitHub 저장소 읽기
GitHub 저장소에는 실행 코드와 함께 README, 공식 문서, 소스 코드, 이슈, 배포 기록, 라이선스가 있습니다. 학생은 이 자료에서 모델의 출처와 다시 실행하는 방법을 확인합니다.
GitHub · ultralytics/ultralytics ↗확인한 버전763f47e0e5b6Ultralytics 8.4.123yolo26n.pt
- README
프로젝트 소개와 시작 방법
- docs
공식 사용 방법과 최신 명령어
- ultralytics/
모델과 작업을 구현한 소스 코드
- issues · releases
알려진 문제와 변경 기록
- LICENSE
재사용·배포 전 확인할 조건

표시 · 분리 · 학습 · 확인
작은 데이터셋 학습과 과정 기록
사진 개수보다 먼저 물체 범주 기준, 촬영 조건, 정답 상자의 일관성, 학습용·검증용 데이터 분리를 확인합니다. 사용한 명령어, 프로그램 버전, 모델, data.yaml 파일, 결과 폴더도 함께 기록합니다.
pip install ultralytics==8.4.123
yolo detect train model=yolo26n.pt \
data=data.yaml epochs=40 imgsz=640아래 명령어는 2026-08-20 공식 문서에서 확인했습니다. 수업 전 최신 문서를 다시 확인합니다.
탐지부터, 움직임은 나중에
웹캠 탐지부터, 로봇 제어는 다음 단계
이번 과정에서는 웹캠 화면에서 물체를 찾아 상자로 표시하는 단계까지 다룹니다. Tello나 RoboMaster로 확장할 때는 탐지 결과가 곧바로 움직임으로 이어지지 않도록 별도의 판단 단계와 안전 제어 장치를 둡니다.

개인정보 보호 설계
사람을 촬영하지 않는 컴퓨터 비전 수업
학생이 고른 물체와 고정된 촬영 도구를 사용하고 웹캠은 물체 전용 구역만 비춥니다. 얼굴, 실명, 집 안 배경, 개인 메시지는 데이터에 넣지 않습니다.
- 웹캠 켜기·끄기를 학생이 직접 통제
- 얼굴 대신 개인정보가 없는 물체 사용
- 데이터·모델·소스 코드의 라이선스를 각각 확인
수업 안내
자주 묻는 질문
초등학생도 YOLO 모델을 직접 학습하나요?
학생이 사진을 고르고 정답 상자 기준을 정하면 강사가 학습 범위와 횟수를 정해 명령을 실행합니다. 학생은 결과를 예상하고 잘못 찾거나 놓친 장면을 비교합니다.
꼭 GPU가 필요한가요?
아닙니다. 작은 모델과 제한된 데이터로 학습합니다. 컴퓨터가 느리면 미리 검증한 결과 파일을 사용해 같은 분석을 진행합니다.
GitHub 코드를 그대로 복사하나요?
먼저 공식 시작 예제를 같은 환경에서 실행해 봅니다. 사용한 버전, 출처, 라이선스, 수정 내용을 기록하고 한 번에 한 조건씩 바꿔 결과를 비교합니다.
Tello나 RoboMaster를 바로 움직이나요?
아닙니다. 이번 과정은 웹캠에서 물체를 찾는 단계까지 진행합니다. 로봇 연결은 모의 신호와 안전 장치를 먼저 설계하고 실제 로봇을 움직이는 수업은 별도 안전 검토 후 진행합니다.
온라인 수업만 가능한가요?
아닙니다. 오프라인 수업과 강사가 진행하는 온라인 수업을 모두 운영합니다. 개별 수업과 소규모 그룹 수업은 학생의 준비도와 시간표에 맞춰 정합니다.
시작 단계 안내
학생에게 맞는 시작 단계
학년, 코딩 경험, 만들고 싶은 프로젝트를 알려 주시면 알맞은 시작 단계를 안내합니다.
수업 상담