본문 바로가기

분류 전체보기113

# 2. [Util] QTableWidgetUtils from collections import OrderedDict from qgis.PyQt.QtCore import Qt from PyQt5.QtWidgets import QTableWidget from PyQt5.QtWidgets import QTableWidgetItem from siqms_src.utils.ui_utils import UIUtils class QTableFormat: def __init__(self): self._form = OrderedDict() def __len__(self): return len(self._form) def __sub__(self, row: tuple): self._form.pop(row) def __getitem__(self, key): if key in s.. 2021. 5. 6.
# 1. QSplitter 필자는 위젯을 배치하여 유연하게 사이즈를 조절하는 법이 궁금했다.. 현재 두개의 QTableWidget을 QMainWindow에 생성한 상태이다. 정렬할 위젯들을 복수 선택한다. 위의 빨간 버튼을 클릭하면 가로든 세로든 유연하게 배치할 수 있다. QSplitter 안에 위젯들이 정렬된 것을 확인할 수 있다. 이는 실행되는 상태에서도 마우스를 통해 위젯의 크기를 조절할 수 있다. 2021. 5. 6.
# 2. Convolution Neural Network (CNN) - Code 지난 포스트에서는 CNN의 개념에 대해 살펴보았다. 이번 포스트에서는 CNN을 실제로 구현 및 학습하는 코드를 직접 작성해본다. 코드는 Pytorch를 기반으로 작성했다. 1. 필요한 모듈 import import torch import torchvision import torchvision.transforms as transforms 필자는 시각데이터(이미지)를 다룰 것이기 때문에 torchvision 모듈을 택했다. 2. transform 정의 transform = transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))] ) 이미지를 텐서형태로, 평균은 0.5, 표준편차도 0.5로.. 2021. 5. 6.
# 1. Convolution Neural Network (CNN) - Theory 이번 포스트에서는 합성곱(Convolution) 연산을 기반으로 이미지에서 특징을 검출하는데에 적합한 신경망인 CNN에 대해 알아본다. 먼저 CNN의 전체적인 구조에 대해 살펴보자. Input으로 이미지가 들어오면 Convolution, Activation function, Pooling 세 가지의 레이어가 반복적으로 나타난다. 이 과정은 이미지로부터 작은 특징들부터 조합하여 점점 큰 특징들을 검출하는 과정이다. 그 후에는 Flatten 과정을 통해 검출한 특징들에 대한 이미지(feature map)를 일렬로 펼치는 작업을 수행한다. 마지막으로 Fully Connected 레이어를 통해 모든 클래스에 대해 일치할 확률을 출력한다. CNN의 구조에 나오는 기본용어에 대해서 간략하게 정리해보자. 그전에, 이.. 2021. 5. 3.
# 0. ILSVRC 2012 Dataset 이 포스트를 작성시간 기준으로 ImageNet의 서버가 동작하지 않아 다른 방법으로 데이터세트를 얻는 방법을 포스팅한다. (기존 방법) Training Set (138GB) wget http://www.image-net.org/challenges/LSVRC/2012/nnoupb/ILSVRC2012_img_train.tar Validation Set (6GB) wget http://www.image-net.org/challenges/LSVRC/2012/nnoupb/ILSVRC2012_img_val.tar (해당 포스트에서 진행하는 방법) academictorrents.com/collection/imagenet-2012 지금은 토렌트를 사용하여 위 링크에서 데이터 세트를 얻어야 한다. 토렌트로 받은 압축파일.. 2021. 4. 29.
# 5. QgsLayerTree root: QgsLayerTree = QgsProject().instance().layerTreeRoot() QgsLayerTree 클래스는 QgsLayerTreeNode클래스 기반이므로 child()와 parent() 메소드를 통해 부모, 자식 노드를 반환할 수 있다. 이는 계층형 UI의 model을 구현할 때 용이하다. """ /*************************************************************************** begin : email : ***************************************************************************/ """ from qgis.gui import QgsLayerTreeView .. 2021. 4. 21.