오랜만에 포스팅이다... 최근 포스팅이 거의 1년전이였던거 같은데
아무튼 많은 일이 있었다. 2020년 작년에는 covid-19의 영향으로 대학교 수업이 모두 온라인으로 진행되었고 2학기부터는 졸업을 위한 졸업작품이 시작되었다.
졸업 작품 주제를 computer vision과 인공지능을 연관해서 최신 트렌드와 함께 하고싶었고 많은 고민 끝에 최근 들어 1인 가구 증가에 따른 배달 서비스 이용 증가와 전동 킥보드와 같은 공유플랫폼 증가로 문제가 생기는 것을 느꼈고 문제를 해결하고 싶었다.
횡단 보도에서는 이륜차와 같은 탈 것들이 원래는 타고 횡단하면 안된다.
도로교통법에 의하면 범칙금 4만원 정도...
도로교통법을 모르는 사람이 대부분이고 요새는 언론 덕분에 아는 사람들이 늘었는데도 불구하고 귀찮아서 그냥 타고 가는 사람들이 많다.( 특히 배달 라이더(?))
그래서 이 문제를 인공지능을 이용해 해결하는 프로그램을 만들었다.
yolo v3를 이용해서 횡단 보도 내에서 오토바이, 전동 킥보드, 자전거가 횡단하는 것을 인식하고 횡단하기 전에 미리 경고음을 이용해 횡단을 예방하는 단순한 시스템이다.
아이디어가 괜찮다는 확신이 있었지만 지도 교수님의 반대가 있었다.
나는 또 이상한 확신과 고집이 있었기 때문에 설득하고 싶었다.
설득하려면 성과가 있어야 해서 바로 관련 공모전을 찾아봤다.
https://www.koti.re.kr/user/bbs/BD_selectBbs.do?q_bbsCode=1004&q_bbscttSn=20200703140906047&q_clCode=-1
< 한국 교통 연구원에서 주최한 '교통사고 제로화를 위한 교통안전 정책 및 법,제도 개선 등 아이디어 공모전>
우리팀은 바로 아이디어 상세화와 제안서를 종합해서 제출을 했다.(실제로 5일만에 제출했다)
그 결과로 ..
가작을 수상하였다.. 2차 평가 당시 기말고사 기간이 겹쳐 상세한 이야기를 준비하지 못했다. 그래서 우리도 예상했던 질문이 들어왔는데 대안을 얘기하지 못했다
우선 이렇게 설득할만한 자료가 생겼고 공모전을 준비하며 상세화된 자료를 교수님께 보여드렸고 특허얘기 등 긍정적인 답변을 얻고 프로그램 제작을 시작하였다.
서론이 길었고 프로그램 제작 설명을 시작하겠다.
우선 구현 기술은 다음과 같이 사용하였다.
@ mk code
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import urllib.request
driver = webdriver.Chrome('/Users/minkyun_seo/Downloads/chromedriver')
driver.get("https://www.google.co.kr/imghp?hl=ko&tab=wi&authuser=0&ogbl")
elem = driver.find_element_by_name("q")
elem.send_keys('전동킥보드 사진') # 구글에 검색할 내용
driver.implicitly_wait(5) # 5초 기다린다.
elem.send_keys(Keys.ENTER) # 엔터키 입력
count =1
images = driver.find_elements_by_css_selector('.rg_i.Q4LuWd')
for image in images:
image.click()
time.sleep(3)
url = driver.find_element_by_css_selector('.n3VNCb').get_attribute("src")
urllib.request.urlretrieve(url, "scooter"+str(count)+".jpg") # 크롤링된 이미지에 번호를 매겨준다.
count+=1
다음과 같은 코드로 send_keys에 "전동킥보드 사진","오토바이 사진".... 과 같이 google에서 수집하는 코드를 작성하여 이미지를 수집했다.
사용법은 인터넷에 많으니 참고!
yolo format은 json인데 default값이 xml로 되어있기 때문에 사진에 PascalVOC를 누르면 yolo로 바뀌는데 이 상태에서 라벨링 해야한다.
실제로 이거 잘못해서 라벨링 작업만 엄청많이한 경험이 있다.. 주의하자
라벨 순서도 맞춰야 한다.
ex) label이름이 오토바이, 자전거, 사람이면 나중에 1,2,3이 순서대로를 뜻한다.
우여곡절끝에 졸업작품을 완성했다.
원래 조원은 3명이였지만 나혼자서 라벨링, yolo모델링, flask서버구축을 다하다보니깐 원했던 퀄리티가 안나왔다.
지금은 인턴도 하고있는중인데 2주동안 매일 카페에서 퇴근후에 작업했다.
다음 포스팅에서 계속...
안녕하세요, Yolo와 Flask를 사용해 웹 api를 만들어보고자 하는 학생입니다. 혹시 Flask 사용에 참고하신 자료나 깃허브를 알 수 있을까요? 감사합니다.