AI 컴퓨터 비전 기반 강건한 UAV 탐지 및 추적 시스템
요약
기술 혁신으로 보안이 최대 현안이 되었습니다. 드론 접근성이 기하급수적으로 늘며 일반 보안에 큰 위협이 되고 있습니다. UAV(무인 항공기) 사용이 최근 몇 년간 급증했습니다. 이러한 보안 이슈를 고려해 해결책을 제안합니다. 첫째, UAV를 탐지하고, 둘째, 그 경로를 추적합니다.
객체 탐지에 컴퓨터 비전 딥러닝 알고리즘이 매우 효과적입니다. 입력은 실시간 객체 탐지 및 추적에 쓰이는 신경망 YOLO(You Only Look Once)가 처리합니다.
2.1 UAV 개념 이해
"컴퓨터 비전을 이용한 UAV 탐지 및 추적"이란 제목대로, UAV(Unmanned Aerial Vehicle, 무인 항공기)는 조종사 없이 원격 제어나 탑재 컴퓨터로 조종 가능한 항공기입니다. 
UAV는 농업, 과학 연구, 기상 예보, 배송, 구조 작업, 의료 등 유익한 목적으로 쓰입니다. 반면 공격, 미사일 공격, 표적 살해 등 유해한 목적으로도 악용될 수 있습니다.
2.2 컴퓨터 비전이란?
컴퓨터 비전은 컴퓨터가 인간 시각처럼 이미지를 보고, 식별하고, 처리해 적절한 출력을 내도록 하는 과학 분야입니다. 컴퓨터 비전은 거의 모든 분야에 쓰입니다:
- 객체·얼굴 탐지
- 로봇 수술 및 의료 진단
- 이미지 처리
- 농업
- 우주 기술 (NASA 화성 탐사선: 지형 모델링, 경로 장애물 탐지, 파노라믹 이미지 스티칭 기능 탑재) 컴퓨터 비전 응용 분야는 그림 1.4 참조
2.3 이미지 처리 기법이란?
이미지 처리 기법은 컴퓨터 비전이 다양한 작업을 수행하는 데 사용됩니다. 이미지로 얻은 스택에 연산과 방법을 적용해 품질을 개선하거나 특정 결과를 얻는 과정을 이미지 처리라 합니다.
이미지 처리는 오늘날 정보 기술에서 가장 빠르게 진화하는 분야 중 하나로, 비즈니스 전 영역에 응용이 확대되고 있습니다. 이미지 처리 응용:
이미지 처리 활용 사례
이미지 처리는 다음 분야에 활용됩니다:
- 로봇공학
- 의료
- 패턴 인식
- 비디오 처리
- 얼굴 탐지
2.4 소프트웨어 요구사항
- Anaconda
- Spyder
- Python
- OpenCV 라이브러리
3. 객체 탐지 알고리즘
객체 탐지 알고리즘은 많습니다. 주요 몇 가지:
- 비올라-존스 (Viola-Jones)
- 합성곱 신경망 (CNN, Convolutional Neural Networks)
- YOLO (You Only Look Once)
- SSD (Single Shot Detector)
- R-CNN (Region Convolutional Neural Networks)
표 3.1: 탐지 알고리즘 비교
| 알고리즘 |
설명 |
강점 |
약점 |
| 비올라-존스 (2001년 폴 비올라·마이클 존스 개발) |
주 목적: 얼굴·객체 탐지. 실시간 탐지 가능. 이미지를 더 작은 하위 영역으로 나누고 각 영역의 특수 특징을 찾아 객체 탐지. 하르 유사 특징(Haar-like features) 사용 |
- 강건함
- 매우 높은 탐지율
- 이미지 각기 다른 부분을 보는 여러 분류기 사용
- 빠름
- 가장자리·선 탐지 우수
|
- 기울어진/회전된 얼굴 탐지 불가
- 조명 조건에 민감
- 움직이는 객체 탐지 불가
|
| CNN (합성곱 신경망) 1980년 후쿠시마 쿠니히코 제안 |
생물학 영감 계층 모델로 다양한 탐지·인식·분할 학습 가능. 딥러닝 알고리즘으로 이미지 입력받아 객체에 학습 가능한 가중치·편향 할당해 서로 구분 |
- 학습으로 특징 결정 (자유도 높음)
- 전체 이미지 보는 단일 분류 사용
- 행렬 연산 적용
- 정확함
|
- 대용량 데이터셋 필요
- 비쌈
|
| YOLO (You Only Look Once) |
실시간 탐지 알고리즘. 이미지에 신경망 알고리즘 적용, S×S 그리드로 나누고 이미지 주위에 경계 상자 생성해 각 경계 상자별 가능성 예측. 회귀(regression) 사용 |
- 동일 이미지 내 다중 객체 탐지 가능
- 실시간 실행
- 초고속
- 고성능
- 배경 오류 없음
|
1. 그리드 셀당 객체 1개만 탐지. 2. 정확도보다 고성능 우선. |
| SSD (Single Shot Detector) |
단일 샷으로 다중 객체 탐지, 매우 빠름. 실시간 구현 설계. 백본(backbone)과 SSD 헤드 두 구성요소 포함 |
- 높은 계산 시간
- 높은 정확도
- 정확도-속도 트레이드오프 보통
|
- 큰 객체엔 잘 작동하나 작은 객체엔 성능 저하
- 엔드투엔드 탐지, 너무 느림
- 계산 비용 비쌈
|
여기서 YOLO 신경망 알고리즘을 사용합니다. 이 알고리즘은 실시간 구현에 매우 빠릅니다. 신경망 알고리즘을 사용해 이미지를 S×S 그리드로 나누고 이미지 주위에 경계를 만들어 각 경계별 가능성을 예측합니다. 탐지 알고리즘은 표 4.4에 나와 있습니다.
3.1 추적 알고리즘
객체 탐지 후 다음 초점은 추적입니다. 탐지된 객체가 연이나 새라면 추적 불필요하지만 드론이라면 대상 추적 필요.
객체 추적용 알고리즘도 많습니다. 하지만 다시 YOLO를 추적에 씁니다. 이 알고리즘이 빠르고 정확하며, 대상이 카메라 범위 밖으로 나갈 때까지 탐지·추적 가능하기 때문입니다.
4. 제안 설계 구현
제안 설계 구현입니다. 프로젝트를 소프트웨어에서 실행하는 데 필요한 모든 단계를 수행합니다.
4.1 초기 단계
- 이미지 처리엔 좋은 CPU/GPU 필요, CPU 선택. 웹사이트에서 아나콘다(Anaconda) 설치. 아나콘다 설치 과정은 그림 4.1 참조

- 아나콘다 네비게이터 설치 후 환경 대화상자로 환경 생성, 파이썬 버전 선택.
- 환경 생성 성공 후 다음 단계: 스파이더(Spyder) 설치(사용 편의성), 이어서 명령어
pip install cv2로 OpenCV 설치. 
4.2 데이터셋 준비
- 드론, 새, 비행기, 헬리콥터, 연, 풍선 등 다양한 공중 객체 이미지 대량 수집.
참고: 데이터셋 제작은 이미지 수집만으로 안 됩니다. 이미지 이름과 각 이미지 내 특정 객체 위치도 라벨링해야 합니다. LabelImg 소프트웨어로 이미지를 텍스트 파일로 변환합니다. 그림 4.6 참조.
- 모든 객체의 텍스트 파일 생성 후, 모든 이미지와 텍스트 파일을 압축 파일로 묶으세요. 포함된 클래스용 이름 파일도 만드세요.

4.3 YOLO 설정
설정 단계:
- 다크넷(Darknet)에 YOLO v3 설치.
- YOLO 설정 위해 darknet/data에 폴더 생성, 앞서 만든 데이터셋의 모든 이미지와 .txt 파일 포함.
- 커스텀 설정 파일 제작: YOLO v3 cfg에서 배치(batch), 서브디비전(subdivisions), 최대 배치(max batches) 등을 클래스와 스텝(steps)에 맞춰 수정.
- 클래스 수 입력 시 YOLO 위 합성곱 레이어 변경. random을 1로 설정. cfg 파라미터는 표 4.1 참조.
표 4.1: CFG 파라미터
| 이름 |
설명 |
| Batch |
순전파(forward pass)에서 기울기 계산과 역전파(backpropagation)로 가중치 업데이트에 사용되는 이미지·라벨 수 |
| Subdivisions |
배치를 여러 '블록'으로 세분화. 블록 내 이미지들은 병렬 실행 |
| Steps |
500, 1000: 500, 1000 배치 후 학습률 조정 |
| Layers (Filters) |
레이어 내 합성곱 커널 수 |
| Layers (Random) |
YOLO 레이어에 입력. 1로 설정 시 몇 배치마다 이미지 크기 조절로 데이터 증강, 객체 크기 일반화에 사용 |
- data/obj.names로 커스텀 객체 폴더 생성, 탐지 원하는 이름들(드론, UAV, 새, 연 등) 기입.
- obj.data에 클래스 수, train.txt, valid, names, weights 폴더 포함 저장.

- train.txt에 모든 데이터와 이미지 이름 저장.

4.4 자체 데이터셋으로 YOLO 학습
커스텀 데이터셋으로 YOLO 학습도 다크넷으로 수행. 다크넷 클론 및 활성화, OpenCV 활성화. 앞서 만든 ZIP 폴더, .cfg 파일, .names 파일, obj.data 파일, train.txt 파일로 다크넷 네트워크 설정해 YOLO v3 학습, 실행 횟수 카운트.
수천 번 반복(CPU 성능 기준 약 2시간 소요) 후 평균 손실(loss)을 알려주며 사용할 준비된 학습 데이터셋 완성.
4.5 이미지·비디오 입력으로 코드 테스트
커스텀 데이터셋으로 학습된 YOLO(YOLO weights)로 코드 테스트 시작. 이 경우 4개 클래스.
다양한 테스트. 큰 가중치(weights)는 정확도엔 좋지만 초당 프레임 수(fps) 낮아 처리 다소 느림. UAV, 새 비디오 만들어 코드 입력. 모든 객체가 주어진 라벨, fps, 임계값(threshold)과 함께 성공적으로 탐지·추적됨.
이제 웹캠 실시간 입력으로 실시간 시나리오 테스트 가능. 카메라 범위 내 UAV 비행하며 결과 기록하면 "UAV 탐지 및 추적" 산출물 확인 가능.
