본문 바로가기

python10

YOLOv3 Pytorch 코드 리뷰 코드 : https://github.com/aladdinpersson/Machine-Learning-Collection/tree/master/ML/Pytorch/object_detection/YOLOv3 1. DarkNet + Multi-scale feature map extracter YOLO v3에서는 DarkNet-53이라는 새로운 Backbone network가 등장한다. 총 53개의 conv layer로 이루어져있다. """ Implementation of YOLOv3 architecture """ import torch import torch.nn as nn """ Information about architecture config: Tuple is structured by (filters, .. 2024. 1. 26.
YOLOv1 Pytorch 코드 리뷰 코드 : https://github.com/aladdinpersson/Machine-Learning-Collection/tree/master/ML/Pytorch/object_detection/YOLO 1. DarkNet DarkNet은 YOLOv1이 feature map을 생성하기 위해 만들어진 독자적인 CNN이다. ## model.py """ Implementation of Yolo (v1) architecture with slight modification with added BatchNorm. """ import torch import torch.nn as nn """ Information about architecture config: Tuple is structured by (kernel_siz.. 2024. 1. 25.
MDGAN : Mask guided Generation Method for Industrial Defect Images with Non-uniform Structures 코드 구현 및 리뷰 논문 : https://www.mdpi.com/2075-1702/10/12/1239 구현 코드 : https://github.com/hits-gold/MDGAN-pytorch/tree/main?tab=readme-ov-file 구현하게 된 배경 인턴으로 근무하던 당시 팀에서 반도체 불량 검출 과제를 하고 있었고, 이 후에도 같은 task를 다수 맡을 예정이었다.이에 '제조업계에서 사용되는 불량 검출 과제'에 선제적 대응을 할 요인을 찾아 대비하는 차원에서 1인 프로젝트를 시작하게 되었다. 선행연구조사를 통해 결함 이미지에 대한 classification이나 segmentation과 같은 task를 진행할 때 일반적으로 결함 이미지가 적어 데이터 불균형이 있다는 것을 알게 되었다. (불량률을 줄이기 위해 .. 2024. 1. 24.
Transformer Pytorch 코드 리뷰 기본 Transformer 구조 Pytorch에는 Transformer가 구현되어 있어, 이를 활용한 기본 구조를 만들면 다음과 같다. # nn모듈을 활용한 Transformer 기본구조 import torch import torch.nn as nn import torch.optim as optim class Transformer(nn.Module): def __init__(self, num_tokens, dim_model, num_heads, num_encoder_layers, num_decoder_layers, dropout_p, ): super().__init__() # Layers self.transformer = nn.Transformer( d_model=dim_model, nhead=num_h.. 2024. 1. 24.
이원분산분석(Two-way ANOVA)(feat.Python) 이원분산분석은 집단의 평균에 영향을 주는 요인이 2개인 경우에 사용한다. 또한 반복이 없는 경우와 반복이 있는 경우로 나뉘는데, 샘플 수가 1개면 반복이 없는 것이고, 2개 이상이면 반복이 있는 것이다. 반복이 없는 경우를 보면 A, B 두가 요인별로 샘플이 하나씩만 있는 것을 알 수 있다. 1. 반복이 없는 경우 이원분산분석은 요인이 2개이므로 가설을 세울 때 요인 별로 따로 세워야해서 2개의 가설을 세워야한다. 또한 이원분산분석의 분산분석표에는 두 번째 요인에 해당하는 값들이 추가된다. 이에 F검정통계량 값도 두 개가 나오고, 이 것으로 두 개의 가설을 검정한다. 여기서 a는 요인A에 의한 집단 수, b는 요인B에 의한 집단 수를 나타낸다. 2. 반복이 있는 경우 반복이 있는 경우는 두 요인에 의한 .. 2024. 1. 23.
일원분산분석 (One-way ANOVA)(feat. Python) 일원분산분석은 평균에 영향을 주는 요인이 1개인 경우에 사용하는 분산분석이다. 예를 들어 4개의 기계별로 생산량을 조사할 때는 집단이 4개이지만 집단 별 영향을 주는 요인은 "기계" 하나이기 때문에 일원분산분석을 사용한다. 만약 기계와 기계를 다루는 작업자 5명을 조사한다고 했을 때는 집단의 수와 상관없이 평균에 영향을 주는 요인은 "기계"와 "작업자"이기 때문에 이원분산분석을 사용한다. 일원분산분석에서는 귀무가설과 대립가설을 세울 때 집단의 수를 맞춰야 한다. 위의 예제처럼 기게가 4대 일 때는 가설을 μ4까지 표현해야한다. 또한 분산분석에서는 여러 계산이 헷갈릴 수 있어 분산분석표를 기준으로 삼아서 하는데, 일원분산분석의 표는 아래와 같다.( 일원분산분석은 크게 "반복이 같은 경우"와 "반복이 다른 .. 2024. 1. 23.
분산분석(ANOVA)의 가정(feat.Python) 분산분석이란 분산분석은 세 집단 이상의 모평균 차이를 검정하고, 표본에서의 차이가 통계적으로 유의한지 검증하기 위해 분산을 이용하는 방법을 말한다. 평균을 비교하는데 분산을 사용하는 이유는, 분산이 클 수록 치우쳐진 정도가 커 평균이 다를 확률이 높아지기 때문이다. 보통 분산분석은 "같다" 또는 "같지 않다"만 파악할 뿐, 다른 가설 검정처럼 "크다", "작다"는 파악하지 않는다. 여러 실험이나 연구에서 집단이 3개 이상인 경우가 많아 분산분석은 나름 활용도가 높다. 분산분석은 각 집단을 나누는 요인이 1개이면 일원분산분석(One-way ANOVA), 분산분석의 가설 설정 일반적인 가설검정에서 "같지 않다"는 방향을 모른다는 표현으로 양측검정을 하지만, 분산분석에서는 "평균이 다르다"는 의미로 쓰여 양측.. 2024. 1. 18.
이표본 검정(Two-sample)(feat.Python) 두 모집단의 가설검정 일표본 검정과 달리, 두 모집단의 가설검정은 집단 각각의 모수가 어떠한 관계에 있는지를 검정한다. 이 때 두 모수의 관계는 보통 =, 이렇게 3가지가 있는데, 서로의 관계를 파악할 때는 주로 뺄셈과 나눗셈을 사용한다. 모평균, 모비율의 비교 - 뺄셈을 사용해, [모수 - 모수]가 0, 음수, 양수 중 어떠한 값을 갖는지 가설로 설정한다. 모분산의 비교 - 나눗셈을 사용해 1, 1보다 큰 수, 1보다 작은 수 중 어떠한 값을 갖는지 가설로 설정한다. 이 때 모분산이 나눗셈을 사용하는 이유는 확률분포 때문인데, 모평균과 모비율은 뺄셈을 해도 정규분포나 t분포를 사용할 수 있지만, 모분산은 뺄셈을 하면 사용할 확률분포가 없기 때문이다. 또한 두 모집단의 두 모수의 크기가 서로 완벽하게 같.. 2024. 1. 17.
일표본(One-sample) 검정(feat.Python) 모평균의 추정과 가설 검정 : Z분포, t분포 1. Z검정 - 표본의 크기가 30 이상이거나 모집단의 분산을 아는 경우 ex) 건전지의 평균 수명이 300일이라고 알려져있을 때, 일부에서 300일이 아니라는 의견이 나오고 있다. 해당 건전지 25개를 표본으로 뽑아 조사하였더니, 평균수명은 310일이 나왔고, 그 동안 수집한 자료를 분석한 결과 표준편차는 30일 이라고 한다. 이 때 어느 의견이 더 타당한지 유의수준 5%에서 검정하라. 원래 평균수명이 300일이라고 알려져있는데, 이것이 맞는지 검정하기 위한 것이므로 평균수명=300일 을 귀무가설로 설정하고, 평균수명은 300일이 아니다를 대립가설로 설정한다. 알려져 있는 표본개수, 모평균과 표본평균을 대입해 검정통계량을 계산하면 1.67이 나온다. 이 때.. 2024. 1. 16.