본문 바로가기

TIL 및 WIL/TIL (Today I Learned)

[TIL] 2022.05.23 (사물인식 머신러닝 - 팀 프로젝트2)

저번 주 금요일과 이어집니다.

 

프로젝트 마감 기한은 점점 다가오는데 완성도 면에서 부족함을 조금씩 느꼈다.

그래서 주말에 시간을 내어 많이 부족했던 지식인 모델에 대해 이해하는 시간을 가져보려고 했다.

 

혹여나 다른 사례들이 있는지 검색을 통해 알아보기로 하였다.

 

tensorflow가 사용된 코드

 

해당 코드는 tensorflow를 사용하여 만든 연예인 닮은꼴 찾기 프로젝트이다.

우리는 pytorch를 사용하여 프로젝트를 진행했기 때문에 실제 우리 프로젝트에 반영되는 일은 없었다.

그래도 다른 사람이 만든 코드를 보며 우리 프로젝트와 비교하면서 이해하는 과정을 밟았고, '다른 사례들은 이렇게 코드를 구현하였구나..' 하며 생각하는 계기가 되었다.

 

해당 코드를 구현한 사람의 Github

Link : https://github.com/kimjinho1/Real-time-face-recognition-and-mosaic-using-deep-learning

 

GitHub - kimjinho1/Real-time-face-recognition-and-mosaic-using-deep-learning: 딥러닝을 이용한 실시간 얼굴 인식과

딥러닝을 이용한 실시간 얼굴 인식과 모자이크 처리. Contribute to kimjinho1/Real-time-face-recognition-and-mosaic-using-deep-learning development by creating an account on GitHub.

github.com

 

이후 월요일이 되었고, 금요일부터 월요일까지 프로젝트에 대한 진행도를 채워갔다.

이 시간 동안 역할 분담이 살짝 달라졌는데, 필자는 회원가입과 로그인에 대한 API 부분을 담당하였다.

저번 시간에 Flask Blueprint를 이용한 API를 나눠주는 작업은 이미 해두었기 때문에 각각 API를 만들면서 프로젝트를 완성해갔다.

다소 부족한 부분이나 모르는 부분이 있다면 화면 공유를 통해 코드를 살펴보고 알아가는 코드 리뷰를 하였다.

이번 프로젝트에서는 다 같이 잘하고자 코드 리뷰 시간을 다소 많이 가졌던 것 같다.

 

회원가입, 로그인 최종

 

처음에는 코드를 구현하면서 오류도 많이 접했다.

조건문에 대한 이해도가 낮았던 탓인지 아니면 Backend와 Frontend 연결 과정에서 어려움을 느꼈던 것인지 시간이 조금은 지체된 것 같다.

그래도 최대한 내가 원하고자 하는 모습으로 구현하고자 노력하였고, 그렇게 회원가입 및 로그인 페이지와 API를 완성시키는 결과를 만들었다.

 

Postman

 

프로젝트에서 Postman을 사용하여 적극적으로 Backend 관리를 해보았고, 문제가 있는지 없는지 빠르게 확인하면서 프로젝트를 진행하였다.

 

Robo 3T, localhost db

 

이후 회원 정보를 사용하여 값을 도출할 것이기 때문에, 로컬 DB에 해당 회원 정보들에 대한 값을 저장하도록 설계하였다.

 

Postman과 로컬 DB 연결에는 문제가 없었으나 해당 기능 이후에 문제가 조금 발생하였다.

 

login alert ?
signup alert ?

 

회원가입과 로그인에 적용시키고자 했던 alert들이 정상적으로 출력되지 않던 것이었다.

 

확인해본 결과 Backend에는 문제가 없었으나, Frontend에 js에 있는 조건문(if)이 정상적으로 작동되지 않던 것이었다.

왜 안되지? 하고 골머리를 썩히다가 결국엔 해결책을 발견하였는데, 이유은 다음과 같았다.

 

const response = await fetch(`${backend_base_url}/signup`, {
	method: ["POST"],
	body: JSON.stringify(signupData)
})

 

해당 코드는 .py 파일을 불러오는 코드이다.

POST 요청 방식으로 입력된 변수 signupData에 있는 user_id, password(signup은 password_check까지) 값을 저장하도록 하였다.

 

response_json = await response.json()

 

이후 저장된 값들이 response에 저장되고, json의 형태로 저장되게끔 해주었다.

그리고 입력된 user_id, password, password_check 값들이 저장되고, 해당 값들을 가져다가 사용할 수 있겠다고 생각했지만 정작 .py에서는 return으로 반환된 값이 'message' : '내용' 밖에 없었다.

 

그래서 Backend는 정상적으로 작동됐지만, Frontend에서는 없는 값들을 계속해서 끌어다가 오는 상황이 됐으니 정상적으로 작동되지 않았던 것이다.

 

그렇기에 js에 적혀 있던 조건문(if)을 다음과 같이 변경하였다.

 

> 변경 전
if (response.status == 200 & response.password == response.password_check) {
	alert("회원가입 완료!")
	window.location.replace(`${frontend_base_url}/login.html`)
} else if (response.status == 401 & response.user_id == "") {
	alert("아이디를 입력해주세요!")

> 변경 후
if (response_json['message'] == 'success') {
	alert("회원가입 완료!")
	window.location.replace(`${frontend_base_url}/login.html`)
} else if (response_json['message'] == 'id none') {
	alert("아이디를 입력해주세요!")

 

return으로 반환된 message 값들이 반환받은 문구와 일치하면 해당 결과인 것이니 조건문을 위와 같이 변경해주었다.

 

이렇게 변경해주니 정상적으로 작동되는 것을 확인하였다!

 

-

 

내 파트의 완성된 API와 UI를 Github에 올려두었고, 이제는 프로젝트에 남은 부분들을 해결해나가야 한다.

 

프로젝트 마감일이 수요일이라 하루밖에 안 남은 상황이지만, 팀원들과 함께 마지막까지 고민하면서 완성시키고자 한다.

어쩔 수 없는 것 같지만 '오늘도 늦게 자겠구나..' 싶다.

 

:T