[네이버커넥트 부스트캠프 AI Tech 4기 CV-19조 최종 프로젝트]
- 동영상으로 입력받은 보행자 시각 정보를 바탕으로 장애물 정보를 추출하여 사용자에게 전달하는 서비스 개발
- 📆 프로젝트 기간 : 2023.01.25. ~ 2023.02.06. / 2주
- 🛠 개발 환경
- 시스템 환경 : Tesla V100, Docker, GCP, Python(3.8.13), PyTorch(1.7.1), FFmpeg(3.4.11 & 5.1)
- 개발 환경 : VSCode, PyCharm, Jupyter Notebook, GPU(Tesla V100)
- 협업 Tools : GitHub, Notion, Zoom
박제원_T4092 |
백하닮_T4103 |
유정호_T4138 |
서성관_T4239 |
팀원 | 역할 |
---|---|
박제원 | Team Leader, Web App(BE & FE), Video Handling w/ FFmpeg, Subtitle Function |
유정호 | Docker w/ TensorRT, Video Handling w/ FFmpeg, TTS(GCP, Audio Mixing) |
백하닮 | AI Modeling (YOLOv8), Detection Result Processing w/ OpenCV |
서성관 | AI Modeling (YOLOv7) |
-
Problem Definition
- 시각장애인을 포함한 통행약자에게 볼라드, 자전거 등 통행에 장애가 되는 요인이 산재
- 동영상 등 시각정보를 바탕으로 이동에 장애가 되는 물체를 식별, 비문자적 수단(음성 등)을 통해 사용자에게 해당 객체에 대한 정보를 전달하여 안전에 도움이 될 수 있는 소프트웨어 개발 필요
-
Application Design
- 인도보행시 충돌위험이 존재하는 이동체와 고정체를 포함한 29종 장애물 탐지
- 식별된 Object들에 대한 위치 정보(Pixel base) 분석
- 장애물과의 충돌 위험 정도를 상기 위치 정보로 구분
- 안전 / 주의 / 위험 3단계의 경고 수준 정의
- 위험 수준의 장애물 정보를 TTS(Text-to-Speech) 활용 비문자 데이터(음성) + 자막으로 전달
-
AI Modeling
- AI-Hub의 인도보행 영상 데이터셋에서 제한된 시간과 자원을 고려, 학습에 유리한 데이터를 선별하여 사용
- 동영상 데이터의 볼륨과 모바일 환경 확장 고려, 낮은 복잡도와 빠른 추론 속도를 제공하는
YOLOv8
중 관심영역(ROI) 내 모든 클래스 탐지에 성공하고 추론속도도 빠른 세부 모델YOLOv8m
선정
-
Product Serving
- 충돌 위험 수준을 3단계로 정의하고, 모델에서 탐지한 결과를 필터링하여
JSON
형태로 TTS, 자막 처리 모듈에 전송 Streamlit
라이브러리를 사용하여 Web Application을 생성하고, 처리된 동영상(음성 포함)과 자막을 웹페이지에 전시하기 위해FastAPI
로 파일 호스팅- 동영상(전처리 및 후처리)과 음성 처리에 사용되는 소프트웨어는
FFmpeg
와OpenCV
,Google Cloud Platform
- 프로세스는 다음과 같음
- 동영상 업로드
- 동영상 전처리
- Object Detection
- Detection Result Processing (
JSON
to TTS & Subtitle) - Data Combining (IMG files + TTS Audio)
- File Hosting
- 동영상 전시
- 충돌 위험 수준을 3단계로 정의하고, 모델에서 탐지한 결과를 필터링하여
final-project-level3-cv-19
├─ app # Web Application Python Code Files
│ ├─ wav # Static TTS(Text-to-Speech) `.wav` files Dir
│ ├─ audio_func.py # JSON Data to Audio Mixing Function
│ ├─ ffmpeg_func.py # Video Data Handler (FFmpeg functions)
│ ├─ subtitle_func.py # JSON Data to Subtitle Converter
│ ├─ gcptts.py # TTS Voice Data Generator
│ ├─ live_server.py # (Result) File Hosting Server
│ └─ main.py # Main Streamlit(FE & BE) file
├─ EDA # Exploratory Data Analysis `.ipynb` files Dir
├─ Model # ML/DL Related files Dir
│ ├─ onnx_tensorrt # TensorRT Ported Implementation
│ ├─ yolov8 # YOLOv8 Weight File Dir
│ └─ detector.py # Main Object Detection Function Python file
├─ Makefile # Web Application Starting File
├─ REAMDME.md # Project Markdown
├─ requirements.txt # Required Libraries (Dependencies)
└─ .gitmodules # Submodules Defined
- Object Detection을 활용한 장애물 식별
- 사용자의 Requests에 기반한 On-Demand Machine Learning
- 사용자 입력 동영상으로 GPU 서버에서 데이터를 처리하는 Application
- TTS(Text To Speech) 기술을 활용한 비문자 정보 전달
데모영상 보러가기 : YouTube Link
- AI-Hub 인도보행 영상 : Link
- Dataset : CC-BY-SA
Streamlit
: Apache 2.0PyTorch
: Copyright on FacebookYOLOv8
: GPL 3.0Pydub
: MITFastAPI
: MITFFmpeg
: GPLv2 | LGPL 2.1
Following Steps are based on the status that
CUDA Toolkit
andCuDNN
has been installed.
You can also use pre-set Docker file on
Model/onnx_tensorrt/Dockerfile
to avoid following messy installation.
-
On Windows
-
On Linux (Ubuntu base)
apt-get install gcc make
-
On Windows
-
On Linux
make step2
cd final-project-level3-cv-19
python -m pip install -r requirements.txt
make run
- This server runs for hosting local Video & Subtitle files to Internet with URL.
make server
Have Fun XD