[Day32] Semantic Segmentation

2021. 3. 9. 23:12·AI/부스트 캠프 AI tech

[Day32] Semantic Segmentation

  • Image classification II

    • https://n-brogrammer.tistory.com/120
  • Semantic segmentation

    • https://n-brogrammer.tistory.com/121

 

 

 

중요

1x1 convolutions

import torch
import torch.nn as nn

# 1x1 convolutions
nn.Conv2d(in_channel,out_channel, kernel_size=1)

1x1 convolutions는 kernel_size=1이다. 이때 input의 channel size를 out_channel로 압축하는 효과를 낸다.

 

 

Upsampling

torch.nn.Upsample(scale_factor=16, mode='bilinear', align_corners=False)

Upsmapling layer는 위와 같이 설정할 수 있다. 이때 scale_factor로 현재의 해상도를 몇배로 크게 키울지를 설정하게 된다.

 

기본적인 개념(Tensor)

패키지의 중심에는 torch.Tensor클래스가 있다. 만약 .reqiures_grad속성을 True로 설정하면, 그 Tensor에서 이뤄진 모든 연산들을 추적(track)하기 시작한다. 계산이 완료된 후 .backward()를 호출하여 모든 변화도(gradient)를 자동으로 계산할 수 있다. 이 Tensor의 변화도는 .grad속성에 누적된다.

 

Tensor가 기록을 추적하는 것을 중단하게 하려면, .detach()를 호출하여 연산 기록으로부터 분리(detach)하여 이후 연산들이 추적되는 것을 방지할 수 있다.

 

기록을 추적하는 것, 메모리를 사용하는 것을 방지하기 위해 코드 블록을 with torch.no_grad():로 감쌀 수 있다. 이는 특히 변화도(gradient)는 필요없지만, requires_grad=True가 설정되어 학습 가능한 매개변수를 갖는 모델을 평가(evaluate)할 때 유용하다.

 

Tensor의 도함수를 계산하기 위해서는 .backward()를 호출하면 된다.

import torch
import torch.nn as nn

A=torch.ones(2,2)

print(A)
>>> tensor([[1., 1.],
        	[1., 1.]])

# requires_grad 속성 지정
A.requires_grad_(True)
>>> tensor([[1., 1.],
        	[1., 1.]], requires_grad=True)

 

 

Tensor 복사

  1. y=x.detach()

    • 이렇게 하면 원래 Tensor에서 gradient를 계산하지 않는 새로운 Tensor가 생성된다.

    • 여기서 x.clone().detach().requires_grad_(True)로 수정하여 requires_grad옵션을 나타낼 수 있다.

       

  2. y=x.data

    • 변수에서 Tensor를 가져오는데 x.data가 사용된다.

    • detach()가 더 나은 방법이다. 왜냐하면 .data메서드로 복사된 Tensor는 update동안에 잘못된 gradient를 사용할 수 있다.

       

  3. y=torch.empty_like(x).copy_(x)

    • 이렇게 하면 원래 Tensor와 동일한 콘텐츠를 가진 새로운 Tensor가 생성된다.

       

  4. y = torch.tensor(x)

     

  5. y = tensor.new_tensor(x)

    • 이 방법으로 require_grad옵션을 나타낼 수 있다.
>>> tensor = torch.ones((2,), dtype=torch.int8)
>>> data = [[0, 1], [2, 3]]
>>> tensor.new_tensor(data)
tensor([[ 0,  1],
        [ 2,  3]], dtype=torch.int8)

 

 

Weight 할당

  1. layer_.weight = torch.nn.Parameter(tensor_)

  2. layer_.wiehgt = torch.Tensor(tensor_)

    • 이 메서드는 초기화 동안에 사용할 수 있다.

 

 

 

피어세션

  • 백준 4811번: 알약 문제를 풀고 토론을 진행하였다.

다이나믹프로그래밍의 전형적인 문제로 먼저 행을 H가 나온 횟수, 열을 W가 나온 횟수로 두고 해당 값은 가능한 문자열의 경우의 수이다.

import sys
# dp['H']['W']
dp=[[0 for j in range(31)] for i in range(31)]
for j in range(31):
    dp[0][j]=1
for i in range(1,31):
    for j in range(i,31):
        dp[i][j]=dp[i-1][j]+dp[i][j-1]

while True:
    N=int(sys.stdin.readline())
    if N==0:
        break
    else:
        print(dp[N][N])

 

'AI > 부스트 캠프 AI tech' 카테고리의 다른 글

[Day37] 시간복잡도 & entropy  (0) 2021.03.16
[Day35] Muti-modal & 3D understanding  (0) 2021.03.12
[Day34] Instance/Panoptic segmentation & Conditional generative model  (0) 2021.03.11
[Day33] Object Detection & CNN Visualization  (0) 2021.03.10
[Day31] Image Classification I & data Augmentation  (0) 2021.03.08
[Day30] AI + ML과 Quant Trading & AI Ethics  (0) 2021.03.05
[Day29] NLP를 위한 언어 모델의 학습, 평가 & AI와 저작권법  (0) 2021.03.04
[Day28] 캐글 경진대회 노하우 & Full Stack ML Engineer  (0) 2021.03.03
'AI/부스트 캠프 AI tech' 카테고리의 다른 글
  • [Day34] Instance/Panoptic segmentation & Conditional generative model
  • [Day33] Object Detection & CNN Visualization
  • [Day31] Image Classification I & data Augmentation
  • [Day30] AI + ML과 Quant Trading & AI Ethics
N-analyst
N-analyst
  • N-analyst
    개발자CuCu
    N-analyst
  • 전체
    오늘
    어제
  • 공지사항

    • 티스토리에서 원하는 글 찾는 방법
    • 분류 전체보기 (140)
      • 티스토리 (4)
      • 알고리즘 (5)
        • 알고리즘 정리 (1)
        • 백준 (4)
      • 마크다운(Typora) (13)
        • 사용법 (13)
      • 에러 (1)
        • 파이썬 (1)
      • 데이터 분석 (5)
        • python_analysis (3)
        • Machine Learning (2)
      • AI (109)
        • 파이토치로 시작하는 딥러닝 기초 (2)
        • 부스트 캠프 AI tech (41)
        • 이론 (66)
      • 파이썬(python) (1)
        • 기타 (1)
      • 웹 프로그래밍 (1)
        • 설정 팁 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.6
N-analyst
[Day32] Semantic Segmentation
상단으로

티스토리툴바