IT 54

한진정보통신 인턴 과제 - 안드로이드 카메라 사진 인식 결과가 전처리 되지 않은 문제

안드로이드 앱에 모델을 적용하였으나, output이 location, classes, scores, detections로 나오지 않고, 688,000 개의 raw data로 나왔습니다. 이에 이 데이터를 전처리해야 했습니다.   문제 해결 과정1. 먼저 이 raw 데이터가 각각 어떤 것을 의미하는 지 확인하는 과정을 거쳤습니다. 이를 위해 공식 문서와 issue의 답변을 참고하였습니다.  raw data는 8,400개의 grid가 있고 각 grid 마다 class의 예측 confidence_rate를 나타낸 것이었습니다.  하지만 제가 카메라로 탐지한 마약의 개수는 많아야 10개였는데 어떻게 8,400개의 결과가 나타나는지 알 수 없었습니다. 이에 yolo8 관련 자료들을 찾아보고, detection m..

IT/디버깅 2024.06.06

한진정보통신 인턴 과제 - yolo8 모델을 android 모델로 변환 중 발생한 문제 - android 인식 안됨

yolo8 모델의 학습을 끝내고, 인턴 프로젝트를 더 디벨롭하고 싶었습니다. 이에 카메라 앱에 적용해 실제로 모델을 실시간으로 탐지하도록 프로젝트를 진행하고자 하였습니다. 하지만 이 과정에서 발생한 문제들이 많았고 이를 정리하는 포스팅입니다.  1. Android Studio에서 사용하기 위해 Tflite 모델로 적용 중 발생한 문제   yolo8 모델의 가중치를 tflite모델로 변환하였으나, 안드로이드 스튜디오에서 인식하지 못하는 문제가 발생하였습니다. 문제 해결 과정1. model 변환에 대한 의문 yolo8 공식문서의 예시 segment 모델 가중치를 converting 해보았으나, 이 또한 android studio에서 인식하지 못하였습니다. 이에 최신 기술이기 때문에 변환을 아직 지원하지 않는..

IT/디버깅 2024.06.05

한진정보통신 인턴 과제 - 특정 라벨에 대한 yolo8 모델 정확도 문제 해결 과정 정리

한진정보통신(주)에서 인턴으로 근무하며 공항 마약류 객체 탐지 모델을 학습하는 프로젝트를 진행했습니다. 데이터를 전처리하고 yolo8로 학습을 시켰으나, 특정 라벨에 대한 정확도가 0%인 문제가 발생하였습니다. 이를 해결하던 과정을 정리하려 합니다.    위의 문제를 해결하기 위해  2가지의 해결 방안이 있었습니다.1. 직접 데이터셋을 추가해 진행하는 방안2. 알약 데이터로 가중치를 만들어 파인튜닝하는 방안   두번째 방안을 선택한 이유첫번째 방안은 인턴 기간의 제약 및 약국과의 미팅 시간 문제가 있었습니다. 약국과 연락을 하고 약속을 잡는 시간,  실제로 약국에 가서 마약류 사진을 찍는 시간, 라벨링을 하는 시간 등 최소한 한달이상이 걸리는 문제였습니다. 인턴 기간은 한달이 남지 않았으므로, 기간 내에..

IT/디버깅 2024.06.04

spring security filter exception 처리 이슈 해결

jwt 토큰이 만료되었을 때의 응답을 처리하려고 하였습니다. ExpiredException을 받아 handling하려고 하였으나, global exception을 handling하기 위해 기존에 존재하던 @RestControllerAdvice는 security filter 단에서의 에러를 handling하지 못하였습니다. 이는 sevlet에 들어오기 전에 동작하는 것이었기 때문입니다.이에 이를 해결하는 과정을 포스팅합니다. spring security filter exception 해결 시도 1 아래의 사진에서 보듯 try catch 문을 통해 Exception이 발생한 경우 response writer를 사용해 응답을 반환해주려 하였습니다. 하지만 httpResponse에 wirte이 되지 않아 문제를..

IT/디버깅 2024.02.15

oneToMany가 연속적일 때 failed to lazily initialize a collection of role 에러 해결

member에 ticket이 1:N으로 있고 ticket에 1:N으로 file이 있는 연관관계에서 LazyLoadingException이 발생하여서 문제를 해결하는 과정을 기록합니다. nested fetch를 하려고 하였으나, org.hibernate.loader.MultipleBagFetchException이 발생하여 쿼리를 분리하던 과중에서 생긴 문제입니다. LazyLoading 문제상황 @Override public Member findMemberWithTicketsAndMemberTeamsByMemberId(Long memberId) { Member memberWithTickets = memberRepository.findMemberWithTicketsById(memberId) .orElseThr..

IT/디버깅 2024.01.28

jwt 사용 시 remember me 적용 안되는 이슈

spring version 3.xx 와 jwt를 사용해 login을 구현한 프로젝트에서 remember me 로 로그인 유지를 구현하려고 하는 중 remember me cookie가 생성되지 않아 이를 해결하는 과정을 포스팅합니다. 1. RememberMe가 동작하지 않는지 체크 spring security의 rememberMeAuthenicationFilter는 잘 동작하고 있음을 확인했습니다. 2. 다른 원인에 대한 고민 - Session Cookie SecurityConfig의 SessionCreationPoilicy.STATELESS 사용은 Session을 생성하지 않음을 확인하였고, 쿠키 기반인 remember-me 세션 쿠키가 생성되지 않는 것이 당연한 것이었습니다. 따라서 Security의 ..

IT/디버깅 2024.01.25

@WithMockUser 사용시 요청에 사용되는 User와 MockUser가 다른 경우 발생하는 에러 401

이번 포스팅에서는 realUser로 테스트를 작성해야 하는데 @WithMockUser 로 Authentication을 하게 되면, 인증과 인가의 context가 달라 401 에러가 발생하는 이슈를 해결하는 과정을 설명하고 있습니다. @WithMockUser 코드 @Test @Transactional @WithMockUser ( username = "patient", roles = { "PATIENT" } ) @DisplayName("testDeleteAppointmentRequestsAPI - 성공") public void testDeleteAppointmentRequestsAPI () throws Exception { // given final AppointmentRequestForm appointme..

IT/디버깅 2023.11.11

"query specified join fetching, but the owner of the fetched association was not present in the select list" 에러 원인과 해결

queryDsl을 사용하던 중 query specified join fetching, but the owner of the fetched association was not present in the select list 에러가 발생하여 원인과 해결과정에 대해 정리하는 포스팅입니다. 1. error의 원인 코드 jpaQueryFactory .select(mainPayment.itemImage, mainPayment.itemName, mainPayment.subPayment.pointUse) .from(mainPayment) .join(mainPayment.subPayment, subPayment) .fetchJoin() .fetchOne(); 위의 코드를 살펴보면 subPayment를 join 한 후 N..

IT/디버깅 2023.10.28

한진정보통신 인턴과제 - yolo8 FileNotFoundError: Image Not Found 이슈 해결

이번 포스팅에서는 인턴 ML 과제를 하던 중 발생한 이슈를 해결한 과정에 대해 기록하려고 합니다. 구체적으로는 yolo8에 image 파일이 존재함에도 불구하고 FileNotFound: Image Not Found 이슈가 발생하여 이를 해결하는 과정을 기록하였습니다.  yolo8 FileNotFoundError 원인cv2를 사용할 때  window에서 한글 경로를 읽지 못하기 때문에 발생하였습니다.  * 원인을 찾은 과정정리1. cv2를 사용해 이미지를 가져오는데 이부분에서 에러가 발생하였습니다. print()로 찍어보니 file이 None임을 체크하였고 이와 관련해 구글링을 해보았습니다.    yolo8 FileNotFoundError 해결아래와 같이 convert to Utf8 코드를 작성하여 fil..

IT/디버깅 2023.07.26

한진정보통신 인턴과제 - 구글 코랩 tensorflow light install 이슈 해결

Can't install tflite-model-maker from pip 에러가 발생하여 해결하는 과정을 적었습니다.INFO: pip is looking at multiple versions of tensorflow to determine which version is compatible with other requirements. This could take a while. 이슈   1. tensorflow light 다운로드 이슈 원인Requirement already satisfied: pycocotools in /usr/local/lib/python3.10/dist-packages (from tf-models-nightly->tflite-model-maker) (2.0.6) Collecting ..

IT/디버깅 2023.07.20