"김진호와아이들"의 두 판 사이의 차이
(→완료작품의 평가) |
(→관련 기술의 현황 및 분석(State of art)) |
||
83번째 줄: | 83번째 줄: | ||
====관련 기술의 현황 및 분석(State of art)==== | ====관련 기술의 현황 및 분석(State of art)==== | ||
*전 세계적인 기술현황 | *전 세계적인 기술현황 | ||
− | + | ||
+ | ◇ 크로스플랫폼 앱 프레임워크 | ||
+ | |||
+ | 크로스플랫폼 개발은 하나의 프로그래밍 언어로 여러 OS에서 작동할 수 있는 앱을 만드는 것을 말한 다. 2022년 4월 기준 IOS와 Android의 모바일 OS 시장점유율은 99퍼센트 이상이기 때문에 모바일 생태계에서의 크로스플랫폼 개발은 IOS와 Android, 이 두개의 OS에서 잘 작동하는 앱을 만드는 것을 말한다. 클로스플랫폼 프레임워크들 중 현재 native 앱과 성능이 가장 비슷하고, 시장점유율이 높은 프레임워크는 React native와 Flutter이다. | ||
+ | |||
+ | ▶ React Native | ||
+ | |||
+ | - 구조 | ||
+ | |||
+ | - Javascript thread와 UI thread | ||
+ | |||
+ | UI thread는 main thread로 동작하며 event가 발생할 경우 bridge를 통해 Javascript thread에 event를 전달, Javascript thread는 event를 처리하고 변경되는 visual update내용이 있다면 이를 bridge를 통해 UI thread로 전달한다. | ||
+ | |||
+ | ▶ Flutter | ||
+ | |||
+ | - 구조 | ||
+ | |||
+ | - UI thread와 GPU thread Flutter는 컴파일 시 native code로 변환된다. Flutter앱이 실행되면 UI thread는 Layer tree를 생성 후 GPU thread로 하여금 렌더링하게 한다. | ||
+ | |||
+ | |||
+ | ◇ 건물 인식 기법 | ||
+ | |||
+ | ▶ 이미지 잡음에 강인한 CNN 기반 건물 인식 방법 | ||
+ | |||
+ | - CNN 모델 사용 | ||
+ | |||
+ | - 건물의 특성을 가장 잘 나타내는 부분 이미지로 데이터셋 구성 | ||
+ | |||
+ | - 가로등, 사람, 날씨 등 외부 환경이 변해도 건물의 특징점으로 건물 인식 용이 | ||
+ | |||
+ | - 건물 전체 이미지로 학습한 모델의 정확도는 70.9%, 부분 이미지 데이터셋 사용 시 84.6% | ||
+ | |||
+ | ▶ 건물 특성 정보를 이용한 딥러닝 기반 건물 인식 강화 방법에 관한 연구 | ||
+ | |||
+ | - CNN 모델 사용 | ||
+ | |||
+ | - 건물의 외장재로 데이터셋 구성 | ||
+ | |||
+ | - 건물을 촬용한 거리가 멀어져도 평균 인식률이 98% | ||
+ | |||
+ | ◇ Yolov5 | ||
+ | YOLO는 객체 인식 알고리즘으로, ‘You only look once’의 약자이다. YOLO는 빠른 속도와 높은 정확도로 객체 인식 알고리즘 중에서 가장 인기 있는 알고리즘이다. | ||
+ | |||
+ | YOLO는 2016년 ‘You Only Look Once: Unified, Real-Time Object Detection’라는 논문으로 처음 세상에 소개된다. 논문에 따르면, YOLO가 등장하기 이전에 존재했던 객체 인식 알고리즘인 DPM 및 R-CNN은 classifier를 객체 인식에 맞게 재구성한 알고리즘이다. 그와 다르게, YOLO는 객체 인식을 regression 문제로 프레임화 한다. 이 덕분에 복잡한 파이프라인을 구축할 필요가 없다. 추가적으로, YOLO는 single network evaluation으로 inference를 할 수 있기 때문에 다른 classifier-based method보다 빠르며, 초당 45개의 프레임을 처리할 수 있다. 또한 다른 리얼타임 시스템과 비교했을 때 mean average precision(mAP)가 2배 이상 높다. | ||
+ | |||
+ | YOLO는 분리되어 있는 객체 인식의 컴포넌트들을 single neural network로 결합했다. YOLO의 network는 전체 이미지의 feature로 각각의 bounding box를 예측하며, 모든 class에 대한 bounding box를 동시에 예측한다. 이러한 YOLO의 시스템은 인풋 이미지를 S x S grid로 나누고, 각 grid는 B개의 bounding box와 1개의 class를 에측한다. YOLO의 이러한 특성 때문에 YOLO는 매우 작은 객체들이 적은 개수의 grid에 포함되어 있을 때 예측에 어려움을 겪는다. | ||
+ | |||
+ | (YOLO 네트워크 구조 | ||
+ | 출처: Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016. p3.) | ||
+ | |||
+ | (다른 Real-Time System과의 비교 | ||
+ | 출처: Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016. p6) | ||
+ | |||
+ | (R-CNN vs YOLO | ||
+ | 출처: Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016. p6) | ||
+ | |||
+ | |||
+ | 우리는 ‘이미지 잡음에 강인한 CNN 기반 건물 인식 방법’이라는 논문을 참고해서, 장애물이 건물을 가리더라도 건물을 인식할 수 있게 하기 위해서 건물의 특징점을 담고 있는 부분 이미지를 활용한 객체 인식 알고리즘으로 건물 인식 모델을 구현하고자 한다. 또한, 부분 이미지로 모델을 학습하기 위해서 하나의 이미지로부터 많은 양의 부분 이미지를 추출해야 하므로, 알고리즘의 처리 속도가 중요하다. 더불어 건물의 특징점들은 보통 크기가 작지 않고 작은 grid에 밀집해있을 가능성이 적으므로, 작은 객체들이 가깝게 모여있을 때 인식에 어려움을 겪는 YOLO의 한계가 부분 이미지로 건물을 인식하는 과정에서는 부정적으로 작용하지 않을 것이라고 판단했다. 따라서 ‘어디시립’의 건물 인식 알고리즘으로 YOLO를 선택하고자 한다. | ||
+ | |||
+ | ◇ Message Queue | ||
+ | ▶ kafka | ||
+ | - Kafka는 이벤트 기반의 메시지큐시스템으로, 메시지를 만드는 producer와 메시지를 사용하는 Consumer의 형태를 가지고있다. Kafka는 다른 메시지 큐와 다르게 높은 처리량과 실시간에 가가운 처리 능력을 가지고 있으며, 생산된 메시지를 잃어버리지 않도록 디스크에 log 형식으로 영속화를 한다. 또한, Topic과 partition을 통해 높은 확장성을 가지고 있다. | ||
+ | - Open source message queue는 Apache Kafka, Rabbit MQ 등 다양한 메시지큐 시스템이 있다. 각자 추구하는 방향이 다르기 때문에 어떤 기술이 최고라고 얘기할 수 없다. 그러나, 우리가 사용하려고하는 Kafka는 현재 LINE이나 LinkedIn 같은 대규모 기업에서도 활발히 사용하고 있다. | ||
+ | |||
+ | ◇ 크롤링 | ||
+ | - 크롤링은 웹 페이지의 HTML 파일을 가져와서 원하는 데이터만 추출하는 기법이다. 대표적으로 Python과 Node를 이용해서 크롤링을 할 수 있다. 현재 파이썬에 존재하는 크롤링 관련 라이브러리는 BeautifulSoup과 Selenium이 있다. | ||
+ | - BeautifulSoup: HTML을 파싱해서 원하는 데이터를 추출하는 방식이다. | ||
+ | - Selenium: 로그인이 필요하거나, CSR과 같은 Client에서 먼저 빈 HTML을 받고, JS를 통해 렌더링 되는 사이트에서 BeautifulSoup로만 해결할 수 없기 때문에, Selenium을 통해 Web Driver를 이용 하여 직접 browser를 조작하는 방식으로 해결한다. | ||
+ | |||
+ | ◇ 관계형 데이터베이스 | ||
+ | - 관계형 데이터베이스는 키(Key)와 값(Value)들의 간단한 관계를 테이블화 시킨 데이터베이스이다. 트랜잭션을 보장하기 위해 원자성, 독립성, 지속성의 기능을 제공하여 데이터의 무결성, 완전성, 정확성을 보장한다. 또한 SQL을 사용하여 데이터에 접근하며 여러 OS에서 사용이 가능하다. 현재 가장 많이 사용하는 RDBMS에는 Oracle과 MySQL이 있다. | ||
+ | - Oracle: 1979년 오라클사에서 만든 유로 상업용 DB이다. 대규모 데이터베이스를 지원하기 때문에 대량의 정보관리를 할 때에 가장 좋은 성능을 보인다. 또한 다른 데이터베이스보다 고성능의 트랜잭 션을 지원한다. | ||
+ | - MySQL: 세계에서 가장 많이 쓰이는 오픈 소스의 관계형 데이터베이스이다. 프로시저를 통한 데이 터 레코드 삽입, 삭제와 같은 단계를 하나로 묶어서 사용할 수 있으며 트리거도 존재한다. 5천건 이 하의 데이터를 다루는데 적합한다. | ||
+ | |||
+ | ◇ 스프링부트 | ||
+ | - 기존 자바 기반의 애플리케이션 프레임워크인 스프링은 DI, IoC 등의 특징을 가지고 있다. 하지만 개발 환경 설정에 어려움이 있었고 이를 보완하기 위해 스프링부트가 만들어지게 되었다. 내장 서버를 갖추고 있어 독립 실행이 가능하며 Spring Initializr의 지원을 통해 설정을 단순화 하였다. 또한 스타터를 통해 자동화된 스프링 설정을 제공함으로써 간단한 설정으로 빠른 실행이 가능하게 되었다. | ||
+ | |||
*특허조사 및 특허 전략 분석 | *특허조사 및 특허 전략 분석 | ||
내용 | 내용 |
2022년 6월 20일 (월) 22:27 판
프로젝트 개요
기술개발 과제
국문 : 00000000..
영문 : 00000000..
과제 팀명
김진호와 아이들
지도교수
정형구 교수님
개발기간
2022년 3월 ~ 2022년 6월 (총 4개월)
구성원 소개
서울시립대학교 컴퓨터과학부 2017920018 김진호(팀장)
서울시립대학교 컴퓨터과학부 2017920044 이관희
서울시립대학교 컴퓨터과학부 2017920052 이필세
서울시립대학교 컴퓨터과학부 2017920062 차현철
서론
개발 과제의 개요
개발 과제 요약
◇ 서울시립대학교 학생을 위한 건물 및 시설 정보, 공지사항을 제공하는 애플리케이션이다.
◇ 건물 사진을 찍으면 건물 사진 인식 모델을 통해 건물을 인식하고 건물 내 부대시설 정보를 제공한다.
◇ 학교, 학과, 시설 공지사항을 모두 통합하여 본인이 설정한 키워드에 맞게 알림을 준다.
◇ 특정 부대시설의 위치 정보를 제공한다.
개발 과제의 배경 및 효과
◇ 교내 정보를 아예 찾을 수가 없다.
◇ 교내 정보의 양이 너무 많아서 나에게 필요한 정보만을 얻기가 힘들다.
◇ 교내 정보가 어디에 있는지 알기 힘들어서 찾기가 힘들다.
◇ 자신에게 필요한 공지사항 정보를 얻기 위해서 매일 홈페이지에 접속해야 하는 게 번거롭다.
◇ 지인을 통해 정보를 얻는 과정에서 시간이 많이 소요된다.
◇ 교내 정보를 얻기 위해서 많은 경로를 거쳐야 한다.
◇ 학교 정보를 제공하는 매체들이 학교에 대한 모든 정보를 다 제공해주지 않는다.
◇ 시설에 대한 정보를 한 곳에서 모아볼 수 있는 서비스가 없다.
◇ 자신이 찾고자 하는 정보가 존재하는지 알 수 없다.
◇ 사용자는 학교 정보를 한 곳에서 볼 수 있다.
◇ 사용자는 맞춤 공지사항 알림 서비스를 제공받을 수 있다.
◇ 사용자는 정보에 접근하기 위한 과정을 줄일 수 있다.
◇ 사용자는 건물 사진을 찍으면 건물에 대한 정보를 제공받을 수 있다.
◇ 사용자는 학교 홈페이지에 있는 공지사항 및 교내 시설 정보를 모두 제공받을 수 있다.
개발 과제의 목표 및 내용
◇ 학교 정보를 한 곳에서 볼 수 있게 한다.
◇ 사용자 맞춤 공지사항 알림 서비스를 제공한다.
◇ 정보에 접근하기 위한 과정을 줄인다.
◇ 건물 사진을 찍으면 건물에 대한 정보를 제공한다.
◇ 학교 홈페이지에 있는 공지사항 및 교내 시설 정보를 전부 가져온다.
관련 기술의 현황
관련 기술의 현황 및 분석(State of art)
- 전 세계적인 기술현황
◇ 크로스플랫폼 앱 프레임워크
크로스플랫폼 개발은 하나의 프로그래밍 언어로 여러 OS에서 작동할 수 있는 앱을 만드는 것을 말한 다. 2022년 4월 기준 IOS와 Android의 모바일 OS 시장점유율은 99퍼센트 이상이기 때문에 모바일 생태계에서의 크로스플랫폼 개발은 IOS와 Android, 이 두개의 OS에서 잘 작동하는 앱을 만드는 것을 말한다. 클로스플랫폼 프레임워크들 중 현재 native 앱과 성능이 가장 비슷하고, 시장점유율이 높은 프레임워크는 React native와 Flutter이다.
▶ React Native
- 구조
- Javascript thread와 UI thread
UI thread는 main thread로 동작하며 event가 발생할 경우 bridge를 통해 Javascript thread에 event를 전달, Javascript thread는 event를 처리하고 변경되는 visual update내용이 있다면 이를 bridge를 통해 UI thread로 전달한다.
▶ Flutter
- 구조
- UI thread와 GPU thread Flutter는 컴파일 시 native code로 변환된다. Flutter앱이 실행되면 UI thread는 Layer tree를 생성 후 GPU thread로 하여금 렌더링하게 한다.
◇ 건물 인식 기법
▶ 이미지 잡음에 강인한 CNN 기반 건물 인식 방법
- CNN 모델 사용
- 건물의 특성을 가장 잘 나타내는 부분 이미지로 데이터셋 구성
- 가로등, 사람, 날씨 등 외부 환경이 변해도 건물의 특징점으로 건물 인식 용이
- 건물 전체 이미지로 학습한 모델의 정확도는 70.9%, 부분 이미지 데이터셋 사용 시 84.6%
▶ 건물 특성 정보를 이용한 딥러닝 기반 건물 인식 강화 방법에 관한 연구
- CNN 모델 사용
- 건물의 외장재로 데이터셋 구성
- 건물을 촬용한 거리가 멀어져도 평균 인식률이 98%
◇ Yolov5
YOLO는 객체 인식 알고리즘으로, ‘You only look once’의 약자이다. YOLO는 빠른 속도와 높은 정확도로 객체 인식 알고리즘 중에서 가장 인기 있는 알고리즘이다.
YOLO는 2016년 ‘You Only Look Once: Unified, Real-Time Object Detection’라는 논문으로 처음 세상에 소개된다. 논문에 따르면, YOLO가 등장하기 이전에 존재했던 객체 인식 알고리즘인 DPM 및 R-CNN은 classifier를 객체 인식에 맞게 재구성한 알고리즘이다. 그와 다르게, YOLO는 객체 인식을 regression 문제로 프레임화 한다. 이 덕분에 복잡한 파이프라인을 구축할 필요가 없다. 추가적으로, YOLO는 single network evaluation으로 inference를 할 수 있기 때문에 다른 classifier-based method보다 빠르며, 초당 45개의 프레임을 처리할 수 있다. 또한 다른 리얼타임 시스템과 비교했을 때 mean average precision(mAP)가 2배 이상 높다.
YOLO는 분리되어 있는 객체 인식의 컴포넌트들을 single neural network로 결합했다. YOLO의 network는 전체 이미지의 feature로 각각의 bounding box를 예측하며, 모든 class에 대한 bounding box를 동시에 예측한다. 이러한 YOLO의 시스템은 인풋 이미지를 S x S grid로 나누고, 각 grid는 B개의 bounding box와 1개의 class를 에측한다. YOLO의 이러한 특성 때문에 YOLO는 매우 작은 객체들이 적은 개수의 grid에 포함되어 있을 때 예측에 어려움을 겪는다.
(YOLO 네트워크 구조 출처: Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016. p3.)
(다른 Real-Time System과의 비교 출처: Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016. p6)
(R-CNN vs YOLO 출처: Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016. p6)
우리는 ‘이미지 잡음에 강인한 CNN 기반 건물 인식 방법’이라는 논문을 참고해서, 장애물이 건물을 가리더라도 건물을 인식할 수 있게 하기 위해서 건물의 특징점을 담고 있는 부분 이미지를 활용한 객체 인식 알고리즘으로 건물 인식 모델을 구현하고자 한다. 또한, 부분 이미지로 모델을 학습하기 위해서 하나의 이미지로부터 많은 양의 부분 이미지를 추출해야 하므로, 알고리즘의 처리 속도가 중요하다. 더불어 건물의 특징점들은 보통 크기가 작지 않고 작은 grid에 밀집해있을 가능성이 적으므로, 작은 객체들이 가깝게 모여있을 때 인식에 어려움을 겪는 YOLO의 한계가 부분 이미지로 건물을 인식하는 과정에서는 부정적으로 작용하지 않을 것이라고 판단했다. 따라서 ‘어디시립’의 건물 인식 알고리즘으로 YOLO를 선택하고자 한다.
◇ Message Queue ▶ kafka - Kafka는 이벤트 기반의 메시지큐시스템으로, 메시지를 만드는 producer와 메시지를 사용하는 Consumer의 형태를 가지고있다. Kafka는 다른 메시지 큐와 다르게 높은 처리량과 실시간에 가가운 처리 능력을 가지고 있으며, 생산된 메시지를 잃어버리지 않도록 디스크에 log 형식으로 영속화를 한다. 또한, Topic과 partition을 통해 높은 확장성을 가지고 있다. - Open source message queue는 Apache Kafka, Rabbit MQ 등 다양한 메시지큐 시스템이 있다. 각자 추구하는 방향이 다르기 때문에 어떤 기술이 최고라고 얘기할 수 없다. 그러나, 우리가 사용하려고하는 Kafka는 현재 LINE이나 LinkedIn 같은 대규모 기업에서도 활발히 사용하고 있다. ◇ 크롤링 - 크롤링은 웹 페이지의 HTML 파일을 가져와서 원하는 데이터만 추출하는 기법이다. 대표적으로 Python과 Node를 이용해서 크롤링을 할 수 있다. 현재 파이썬에 존재하는 크롤링 관련 라이브러리는 BeautifulSoup과 Selenium이 있다. - BeautifulSoup: HTML을 파싱해서 원하는 데이터를 추출하는 방식이다. - Selenium: 로그인이 필요하거나, CSR과 같은 Client에서 먼저 빈 HTML을 받고, JS를 통해 렌더링 되는 사이트에서 BeautifulSoup로만 해결할 수 없기 때문에, Selenium을 통해 Web Driver를 이용 하여 직접 browser를 조작하는 방식으로 해결한다. ◇ 관계형 데이터베이스 - 관계형 데이터베이스는 키(Key)와 값(Value)들의 간단한 관계를 테이블화 시킨 데이터베이스이다. 트랜잭션을 보장하기 위해 원자성, 독립성, 지속성의 기능을 제공하여 데이터의 무결성, 완전성, 정확성을 보장한다. 또한 SQL을 사용하여 데이터에 접근하며 여러 OS에서 사용이 가능하다. 현재 가장 많이 사용하는 RDBMS에는 Oracle과 MySQL이 있다. - Oracle: 1979년 오라클사에서 만든 유로 상업용 DB이다. 대규모 데이터베이스를 지원하기 때문에 대량의 정보관리를 할 때에 가장 좋은 성능을 보인다. 또한 다른 데이터베이스보다 고성능의 트랜잭 션을 지원한다. - MySQL: 세계에서 가장 많이 쓰이는 오픈 소스의 관계형 데이터베이스이다. 프로시저를 통한 데이 터 레코드 삽입, 삭제와 같은 단계를 하나로 묶어서 사용할 수 있으며 트리거도 존재한다. 5천건 이 하의 데이터를 다루는데 적합한다. ◇ 스프링부트 - 기존 자바 기반의 애플리케이션 프레임워크인 스프링은 DI, IoC 등의 특징을 가지고 있다. 하지만 개발 환경 설정에 어려움이 있었고 이를 보완하기 위해 스프링부트가 만들어지게 되었다. 내장 서버를 갖추고 있어 독립 실행이 가능하며 Spring Initializr의 지원을 통해 설정을 단순화 하였다. 또한 스타터를 통해 자동화된 스프링 설정을 제공함으로써 간단한 설정으로 빠른 실행이 가능하게 되었다.
- 특허조사 및 특허 전략 분석
내용
- 기술 로드맵
내용
시장상황에 대한 분석
- 경쟁제품 조사 비교
내용
- 마케팅 전략 제시
내용
개발과제의 기대효과
기술적 기대효과
◇ 기존 교내 건물에 대한 정보를 얻기 위해 걸렸던 과정을 단축시킨다.
◇ 기존 새로운 공지사항을 확인하기 위해 쓰였던 시간을 단축시킨다.
경제적, 사회적 기대 및 파급효과
◇ 공지사항을 빠르게 얻을 수 있기 때문에 선착순, 기한이 정해진 이벤트 참여율이 높아진다.
◇ 학생들이 흩어져있는 공지사항을 한 곳에서 볼 수 있게 되면서 학생들에게 편의성을 제공한다.
◇ 원하는 공지사항의 알림만을 받을 수 있게 해서 불필요한 웹사이트 접속 시간을 줄이는 경제적인 이점을 제공한다.
기술개발 일정 및 추진체계
개발 일정
내용
구성원 및 추진체계
내용
설계
설계사양
제품의 요구사항
내용
설계 사양
내용
개념설계안
내용
이론적 계산 및 시뮬레이션
내용
상세설계 내용
내용
결과 및 평가
완료 작품의 소개
프로토타입 사진 혹은 작동 장면
내용
포스터
내용
관련사업비 내역서
내용
완료작품의 평가
향후계획
◇ 앱 설정 페이지 구현
◇ 건물 이미지 데이터 추가
◇ 부서에 대한 호수나 위치 데이터 추가
◇ 인식 가능한 건물 추가
◇ 배포 프로세스 구축
◇ 서버 비용 문제 해결
◇ 학교 홈페이지로 부터 교내 시설 정보 가져오기
특허 출원 내용
없음.