variety82 / RecCar

렌터카 파손 탐지 및 관리 서비스

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RecCar 자동차 손상 관리 서비스

프로젝트 진행 기간

2023.02.27(월) ~ 2023.04.07(금)

Team Members

🚦등장 배경

관광지, 휴가 등에서 차량 대여 서비스 이용 후 분쟁을 겪으신 적이 있으신가요?

과도한 위약금, 사고 발생 후 수리비, 면책금 부과까지 다양한 문제들이 서비스 이용자들을 괴롭히곤 합니다.

차량 대여시 꼭 필요한 손상 기록 절차, 하지만 제대로 기록하지 못하는 경우가 많습니다.

당신의 소중한 여행, 휴가가 되도록 저희 RecCar가 지켜드리겠습니다

💭개요

렉카(RecCar)는 AI를 이용한 차량 파손 손상 인식 및 기록 서비스입니다.

손상을 자동으로 캡쳐해주고 캡쳐된 기록을 확인할 수 있게 해줍니다.

이로써 렌트 및 차량대여를 이용하는 소비자들이 수월하게 서비스를 이용할 수 있도록 도와줍니다.

Usage

git clone https://lab.ssafy.com/s08-ai-image-sub2/S08P22A102.git
이후 exec폴더의 포팅메뉴얼을 따라 진행

개발환경 및 기술 스택

개발환경

Product Flow

Product Flow

Service Architecture

Architecture

📂디렉토리 구조

백엔드 디렉토리 구조(Java)
├─main
│  ├─java
│  │  └─com
│  │      └─heros
│  │          ├─api
│  │          │  ├─calendar
│  │          │  │  ├─controller
│  │          │  │  ├─dto
│  │          │  │  │  ├─request
│  │          │  │  │  └─response
│  │          │  │  ├─entity
│  │          │  │  ├─repository
│  │          │  │  └─service
│  │          │  ├─car
│  │          │  │  ├─controller
│  │          │  │  ├─dto
│  │          │  │  │  ├─request
│  │          │  │  │  └─response
│  │          │  │  ├─entity
│  │          │  │  ├─repository
│  │          │  │  └─service
│  │          │  ├─detectionInfo
│  │          │  │  ├─controller
│  │          │  │  ├─dto
│  │          │  │  │  ├─request
│  │          │  │  │  └─response
│  │          │  │  ├─entity
│  │          │  │  ├─repository
│  │          │  │  └─service
│  │          │  ├─example
│  │          │  │  ├─controller
│  │          │  │  └─model
│  │          │  └─user
│  │          │      ├─controller
│  │          │      ├─dto
│  │          │      │  ├─request
│  │          │      │  └─response
│  │          │      ├─entity
│  │          │      ├─repository
│  │          │      └─service
│  │          ├─common
│  │          ├─config
│  │          └─exception
│  │              └─customException
│  └─resources

백엔드 디렉토리 구조(Python)
├─dataset
│  ├─images
│  ├─output_images
│  └─video
├─images
├─models
├─service
├─src
├─app.py
├─inference.py
├─requirements.txt
└─Utils
프론트엔드 디렉토리 구조
├─assets
│  ├─car_video
│  ├─fonts
│  └─images
│      ├─car_damage_img
│      └─loading_img
├─provider
│  └─car_damage_info_provider
├─screens
│  ├─after_check_damage_screen
│  ├─after_recording_screen
│  ├─before_recording_screen
│  ├─calendar_screen
│  ├─check_car_damage_screen
│  ├─check_video_screen
│  ├─detail
│  ├─home
│  ├─login_screen
│  ├─map_screen
│  ├─my_page
│  ├─register
│  ├─splash_screen
│  └─video_recording_screen
├─services
├─utils
└─widgets
    ├─check_car_damage
    ├─common
    ├─detail
    ├─main_page
    ├─my_page
    └─register

Dataset

  • AIHub 개방 데이터셋

Architecture

  • 전체 이미지 개수 : 504,450 장 중 50,000장 사용(Train : 35,000장, Validation : 15,000장)

  • 3 class : 스크래치(Scratch), 찌그러짐(Crushed), 파손(Breakage)

Experiments

Experiments

🚗 차량 파손 Segmentation

Task : 차량 이미지로 부터 각 클래스에 해당하는 영역을 Segmentation

Metric : mIoU

Model Backbone mIoU
Unet ResNet34 0.72

💡 Model Installation Guide

cd APP/modles
Scratch, Breakage, Crushed클래스를 학습한 모델의 pt파일이 존재합니다.

📓 Train Usage

1) 학습할 데이터에 맞춰 json파일을 생성해야 합니다.
학습할 데이터들을 넣고 AI/utils의 make_damage_labeling.ipynb를 실행하여 damage_labeling.csv를 생성합니다.

cd data/datainfo 위치에 앞서 학습할 데이터에 맞게 만들어놓은 damage_labeling.csv를 위치 시킨 후
cd AI위치에서 아래 명령어를 실행합니다.
python code/src/Utils.py --make_cocoformat 1 --task damage

2)Train
cd AI/code로 이동하여 아래 명령어를 실행합니다.
python main.py --train y --task damage --label all

주요기능 및 화면

소셜 로그인(로그인 & 로그아웃(구글OAuth))

  • RecCar의 로그인은 소셜 로그인 방식으로 이루어집니다.
  • 현재 소셜 로그인은 구글 계정으로만 가능합니다.
  • 로그인 완료 시, 자동으로 홈 화면으로 이동합니다.

근처 렌트카존 찾기

  • 화면 하단의 Footer에서 지도 아이콘을 클릭할 시, 렌트카존 찾기 화면으로 이동합니다.
  • 하단의 ‘쏘카존 보기’, ‘그린존 보기’를 클릭할 시 해당 렌트카 존이 어디에 있는지를 시각적으로 확인할 수 있습니다.
  • 상단의 검색 바에 검색어를 입력할 경우, 해당 검색어와 관련된 지점의 정보를 하단의 모달에서 확인할 수 있습니다.
    • 각 항목을 클릭할 시 현재 위치에서 해당 지점까지 도보로 얼마나 걸리는지도 확인이 가능합니다.

일정관리(차량 대여 및 반납 일자)

  • 화면 하단의 Footer에서 캘린더 아이콘을 선택할 시, 일정 관리 화면으로 이동합니다.
  • 일정 관리 화면에서는 현재 날짜에 맞춘 달력과, 각 일자에 따른 일정 목록을 확인할 수 있습니다.
  • 화면 하단 우측의 플로팅 버튼(+)을 클릭할 시, 새롭게 일정을 추가할 수 있습니다.
    • 일정 추가 시, 제목(TITLE)과 해당되는 날짜, 그리고 메모(MEMO)를 입력하게 됩니다.
  • 차량 대여 시, 대여 일정과 반납 일정이 해당 일자에 맞춰 자동으로 추가됩니다.
  • 한 번 등록한 일정은 수정과 삭제가 가능합니다.
    • 단, 차량 대여 시 자동으로 생성된 일정의 경우 삭제가 불가능합니다.

차량 영상 등록

  • 홈 화면 또는 화면 하단 Footer의 카메라 아이콘 버튼을 클릭할 시 차량 손상을 등록하는 것이 가능합니다.
  • AI로 분석할 차량 영상의 경우 직접 촬영하거나, 이미 촬영한 영상을 갤러리에서 선택하여 업로드하는 방법 총 두 가지가 존재합니다.
    • 영상 촬영을 선택했을 경우, 촬영 후 영상 확인이 가능합니다.
  • 영상 촬영 또는 선택 후, 일정 시간 동안 AI를 통한 분석이 진행되며, 분석이 완료되었을 시 차량 손상 확인 페이지로 이동합니다.

차량 손상 확인

  • 차량 손상 확인 페이지에서는 분석에 사용된 영상과, AI가 영상을 분석하여 캡쳐한 사진을 각 목록 별로 확인할 수 있습니다.
  • 각 손상 목록은 ‘추가 전 손상’, ‘추가할 손상’ 두 가지로 나뉩니다. 이 중 추가할 손상만이 서버에 전송되며, 네비게이션 바로 분리해서 확인할 수 있습니다.
  • 등록 전, 각 손상 종류마다 몇 건이나 존재하는지 확인할 수 있습니다.

현재 대여 중인 차량

  • 현재 대여 중인 차량의 정보를 확인 가능하고, 대여 직후, 반납 직전 영상에서 감지된 손상을 네비게이션 바로 분리하여 확인할 수 있습니다.

About

렌터카 파손 탐지 및 관리 서비스


Languages

Language:Jupyter Notebook 47.4%Language:Dart 38.3%Language:Java 7.2%Language:Python 3.8%Language:C++ 1.6%Language:CMake 1.3%Language:Swift 0.2%Language:HTML 0.1%Language:C 0.1%Language:Dockerfile 0.0%Language:Kotlin 0.0%Language:Objective-C 0.0%