
- MRCNN 학습 툴 프로그램의 기능에 대해 간단히 설명한 후 개발 과정을 소개하도록 하겠습니다.
- – 좌측 상단 Loss Show Box : 학습 진행률 표시창으로 학습을 진행할 때 현재 Epoch와 전체 Loss, bbox Loss, Mask loss 등의 학습, 진행 정보를 보여주며, 상단 버튼을 통해 학습 중지, 학습 진행, 출력 메시지 전체 보기 등의 기능을 실행할 수 있습니다.- 왼쪽 Trainig Ready Box: Training에 대한 준비가 모두 완료되었는지 Training 진행 시 사용되는 JSON 파일에 대한 정보 등을 표시해 주며, Training에 대한 loss를 Tensorboard를 이용해 보고 싶다면 학습 시 Show Tensor 버튼이 활성화 되어 있는데, google chrome.좌지우지라는 Validation Ready: 학습 후 학습이 잘 이루어졌는지 검증해보고 싶을 때 사용할 수 있는 검증 Image, 학습을 통해 나온 Weight 파일, Configuration 값을 설정하고 검증을 진행하는 수가 있습니다.-상단 Attribute Class:학습 시 요구되는 정보이며, MRCNN을 사용하는 Resnet 모델은 영상의 물체를 Annotation 후 나오는 파일인 JSON 파일을 해석하여 영상 이미지에 대한 정보를 읽습니다. 따라서 JSON 파일을 호출할 때 JSON 파일을 읽은 후 분류되는 Class에 대한 정보를 자동으로 띄워서 Attribute Class로 Class 분류 정보를 수정할 수도 있습니다.- 중 JSON File : 댓글 처리된 영상 데이터에 대한 정보를 가지고 있는 JSON 파일을 가져오는 칸입니다.하단 Image File : 학습에 사용되는 이미지를 불러오는 기능을 합니다.우측 Config : 학습 시 적용되는 Configuration(정확도, Epoch, Batch 개수, Backbone 선택, Learning Rate, Train/Val 비율 등)을 설정할 수 있는 창입니다. 또한 하단의 단축버튼을 통해서도 수정이 가능합니다.* Tensorboard 사용 시 Chromedriver.exe가 필요하며 이는 사용자 환경의 Chrome 버전과 일치해야 하므로 사용자 환경에서 사용 중인 Chrome browser 버전에 맞추어 직접 Chrome Driver를 다운로드 해 주어야 합니다.해당 툴에 적용된 Driver 버전은 80.0.3987.163입니다. ( 2020 / 2 月 基準 Version ) https://chromedriver.chromium.org/downloadsWebDriver for Chromechromedriver.chromium.org
- 아래는학습진행예시예요.

- 학습 진행 (1)

- 학습진행 (2)
- 그러면, 프로그램 작성의 주된 소스와 절차에 대해서 소개합니다.프로그램을 만들기 위해 먼저 틀을 잡는 것이 우선이었습니다. 그래서 위와 같은 프로그램 틀을 만들기 위해서 PyQt5를 사용했고, Designer로 위젯의 위치를 조정해서 디자인을 했습니다.PyQt5의 사용법은 아래의 링크를 참조해 주시면 좋겠습니다.https://blog.naver.com/jinwoo6612/221850583518#Python #Anaconda #Designer #GUI #Programming 진우 중에서 진우를 담당하고 있는 진우… blog.naver.com 학습을 위해서는 Config 설정 값, JSON 파일, Image 파일, Annotation 정보를 가지고 있기 때문에 위젯을 구성하고 다음과 같은 GUI 틀을 구성했습니다.
- 아래 소스는 컴파일 시 최상단에서 실행되는 Main Window를 구성하는 파트입니다.* 사용되지 않는 함수도 있습니다.다음은 Central Widget으로 GUI 화면 틀을 구성해 놓기 위한 소스입니다.위와 같은 틀을 완성했다면, 이제 본격적으로 각 기능을 구현하는 방법들을 주요 파트별로 소개하도록 하겠습니다.
- Dataset을 가져오는 소스를 먼저 소개하고 나머지는 다음 포스팅을 통해서 계속 진행하겠습니다.*참고로 Training에 필요한 정보는 Dictionary 형식으로 전달하고 Configuration 정보는 오버라이딩하며, Training Image와 JSON 파일정보는 해당 Dir위치를 전달하여 Training 시작 전에 Image와 JSON을 불러와서 전처리를 합니다.
- 아래는 Data Widget 함수의 Dataset을 불러오는 소스입니다.위 소스에서 선택된 Directory내 모든 파일에 대한 정보를 불러오고 format으로 선언해 놓은 확장자 파일만 구분합니다.이제 가져온 파일을 실제로 사용자가 확인할 수 있도록 Update 함수를 사용합니다.list View_2에 이미지 파일의 Dir/파일 이름 정보를 set Model()을 사용하여 입력합니다.만약 이미지가 있으면 TrainReady위젯의 TrainReady에 ‘dataset’ or ‘no_dataset’ String을 전달함으로써 Dataset 준비에 대해서 Signal이라고 전송을 합니다. 만약 이미 JSON 파일이 업로드 되어 있는지 확인 후 JSON 파일이 업로드 되어 있지 않은 상태라면 json_exist() 함수를 실행합니다.
- 아래는 이미지의 Dataset을 가져올 때 JSON 파일이 업로드 되어 있지 않으면 JSON 파일을 AUTODetect(Dataset의 Directory 안에 json 파일이 존재하는 경우)하는 함수입니다. 주석을 통해 설명을 대체합니다. 아래는 JSON 파일에 저장된 Annotation 내용 중 일부와 extract_class 함수의 구현부입니다.


이상으로 Dataset을 불러오는 기능의 소스 구현 방법을 소개해 드렸습니다.다음 포스팅에서는 나머지 기능에 대한 소스들을 소개하고 점차 Training을 위해 전달할 수 있는 정보와 Tensorflow와 Keras를 통해 학습이 진행되는 과정에서 중지, 중단 등의 기능을 구현하기 위해 변경된 Keras 내 함수들을 차례로 소개하겠습니다.읽어주셔서 감사합니다