개발자들과 친분을 쌓고
소셜 이력서를 준비하세요 |
모든 서비스는 무료입니다.
가입까지 3초, 바로 시작하세요!


  • Mooda포트폴리오.pptx
  • MoodaFinal.zip
좋아요 0
    댓글 0

    - 내용 요약 : 딥러닝을 활용한 실시간 사람 표정 인식 프로그램 제작

    - 기여한 점 : 핸드폰 카메라 장치(App)와 노트북(Server)의 통신 담당 

    - 사용한 기술 스택 및 지식 : Python, Java, network socket

     - 결과 : 네트워크 통신 속도 개선, 서로 다른 IDE에서 파일 전송 구현, Network socket에 대한 이해 


     외부 카메라 장치를 이용하여 server에 이미지를 전송하면 사람이 존재할 경우, 사람 표정(Happy, sad, angry 등)을 표시해주는 프로그램을 제작했습니다. 

    외부 카메라 장치로는 핸드폰 카메라를 이용하였고, Server로는 노트북을 이용했습니다. 핸드폰 카메라 사용을 위하여 안드로이드 스튜디오로 앱을 제작했습니다.


     앱에서 전송된 이미지 파일을 노트북에서 받아, 표정을 분석하여 결과값을 얼굴 주위에 표시합니다. 이때 앱과 노트북의 통신을 담당하여 개발했습니다. 

    서로 다른 IDE에서 데이터 송수신이 가능하도록 Socket을 이용했고, 세부 설정을 하여 기능을 구현했습니다. 

    성능을 확인해보니 이미지 처리속도가 사진마다 4~5초 이상의 시간 지연이 발생했습니다. 원인을 분석해보니 사용하는 송수신 알고리즘의 문제였습니다. 


     기존 전송 알고리즘 : 

    1장마다 socket open -> 전송 및 수신 -> close 

     socket open을 사진 1장 전송마다 호출하다 보니 시간 지연이 점차 누적되었고, 그 결과 이미지 처리속도에도 시간 지연이 발생했습니다. 


     변경한 전송 알고리즘 : 

    앱 시작 시 socket open -> 이미지 1장의 size 전송 -> size만큼 수신 -> 앱 종료 시 socket close 


     위와 같이 변경하여 사진 전송마다 호출하던 socket open을 최초 앱 실행 시 1회만 호출하여 시간 지연을 해결했습니다. 

    좋아요 0
      댓글 0

      - 내용 요약 : DICOM 포맷 이미지에서 원하는 ROI를 설정하여 TIFF 포맷으로 저장할 수 있는 편집 프로그램 제작

       - 사용한 기술 스택 및 지식 : Python, PyQt5, nibabel, medcon, dcm2nii, DICOM, PNG, JPEG, TIFF 포맷 

      - 결과 : 딥러닝 데이터셋 제작을 위한 이미지 편집 프로그램 제작, 다양한 이미지 포맷(PNG, JPEG, TIFF, DICOM)에 대한 이해, 프로젝트의 설계부터 개발까지 모든 의사 결정을 경험 


       스타트업의 요청으로 딥러닝 연구에 필요한 이미지 편집 프로그램을 개발했습니다.

       DICOM 확장자의 이미지 데이터셋 제작하기 위해서, 기존에 C#으로 제작된 JPEG 편집 프로그램에 DICOM 확장자를 사용할 수 있도록 수정해달라는 요청을 받았습니다. 프로그램이 어떻게 동작하는지 몰랐기 때문에 코드 분석부터 시작했습니다. 코드 흐름을 분석한 후, 수정하기 시작했습니다. 


       C#에서는 DICOM 확장자를 사용할 수 있는 라이브러리가 부족하여 DICOM -> JPEG로 저장했습니다. 결과물을 확인하는 과정에서 원본 데이터의 손실을 발견했습니다. 원인을 분석해보니 이미지 포맷이 변환되서 발생한 문제였습니다.  

      65536 color를 표현하는 DICOM을 256 color를 표현하는 JPEG로 변환하면서 원본 데이터의 손실이 발생한 것이었습니다. 

       이 문제를 해결하기 위해서 조사를 해보니, Python에서 이와 관련된 라이브러리가 많다는 것을 찾았습니다. 

       C#으로 제작된 프로그램을 포기하고, DICOM 포맷을 활용할 수 있는 Python으로 변경하여 처음부터 다시 설계했고, GUI를 위하여 PyQt library를 사용했습니다. 

       DICOM 이미지의 원본 데이터 손실이 없는 이미지 포맷을 조사를 했고,찾은 포맷은 TIFF, PNG 두 가지였습니다. 사용 목적상 웹에서 사용할 일이 없고, 최대한 원본 데이터를 유지하기 위해서 TIFF 확장자를 선택했습니다. 

       원하는 데이터셋을 위해선 CT image와 MRI image가 같은 zoom 비율을 가져야하는 문제가 있었습니다. 이작업을 하기 위해선 python의 ‘nibabel’ library를 사용해야 하는데 이때 nii 포맷이어야 가능했습니다. 그래서 ‘dcm2nii’ 프로그램을 사용하여 DICOM -> nii로 변환을 한 후, zoom 비율을 수정하여 nii 포맷으로 저장했습니다. 저장된 nii 이미지를 다시 DICOM 포맷으로 변환하고, 원하는 축 추출 및 slice를 위해서 ‘medcon’ 프로그램을 사용했습니다.

       라이브러리와 프로그램의 사용은 관련 문서를 보면서 테스트 코드를 작성하여 결과값을 확인 후 사용했습니다. 

       이러한 작업이 모두 끝난 DICOM 이미지를, GUI를 통해서 원하는 좌표를 설정하고, 작업자가 원하는 ROI (600 * 700 / 700 * 800)으로 Crop하여 저장하도록 하는 프로그램을 완성했습니다. 

      좋아요 0
        댓글 0
        6월 18일 14시36분


        좋아요 0
          댓글 0
          5월 31일 02시26분 ·  프로젝트 01


          좋아요 0
            댓글 0
            5월 28일 02시48분 ·  집필활동
            좋아요 0
              댓글 0


              좋아요 0
                댓글 0


                좋아요 0
                  댓글 0


                  좋아요 0
                    댓글 0