복셀 데이터를 파이썬으로 데이터 확장
11242 단어 파이썬scipyDeepLearning
예를 들어 이미지의 경우 원본 이미지를 뒤집거나 수평 및 수직으로 픽셀을 이동하고 노이즈를 픽셀 값에 추가하는 방법이 일반적입니다.
3D 데이터의 일종에는 복셀 데이터(x, y, z의 3차원 격자를 가지는, 2차원 화상 데이터의 확장)가 있어, CAD 모델이나 CT 스캔의 데이터가 이 형식으로 표현되는 일이 있습니다.
이 복셀 데이터를 대상으로 하여 3D CNN에서 분류나 세그멘테이션을 하는 등의 경우에 사용되고 있습니다.
이 기사에서는 Python의 scipy와 numpy를 사용하여 복셀 데이터의 확장 데이터를 생성해 보겠습니다.
(확장 데이터를 사용한 학습은 본 기사에서는 다루지 않습니다.)
확장 소스 데이터
PRINCETON MODELNET의 10 클래스의 것을 사용하고 있습니다.
htp : //모두 l네 t. cs. p 린세 톤. 에즈/
MODELNET의 데이터를 32×32×32의 사이즈의 array형으로 해 사용하고 있습니다.
print(type(data))
# >>> <class 'numpy.ndarray'>
print(data.shape)
# >>> (1, 32, 32, 32)
각 격자는, 0 (물체가 존재하지 않는다) or 1 (물체가 존재한다)의 어느 쪽인가의 정수의 값을 가집니다.
아래 그림은 샘플과 그림에 해당하는 각 축의 방향입니다.


※환경
파이썬 3.6.2
scipy 0.19.1
numpy 1.13.3
반전
각 축 방향으로 반전
import numpy as np
# flip: x axis
np.flip(data, 1)
# flip: y axis
np.flip(data, 2)
# flip: z axis
np.flip(data, 3)

시프트
각 축 정방향으로 1변의 길이의 0.3할씩 시프트
from scipy.ndimage.interpolation import shift
# shift: x axis
shift(data, shift=[0, 0.3, 0, 0], cval=0)
# shift: y axis
shift(data, shift=[0, 0, 0.3, 0], cval=0)
# shift: z axis
shift(data, shift=[0, 0, 0, 0.3], cval=0)

확대·축소
확대
각 축 방향을 1.5배로 확대
from scipy.ndimage.interpolation import zoom
# zoom: x axis
zoom(data, zoom=[1, 1.5, 1, 1], cval=0)
# zoom: y axis
zoom(data, zoom=[1, 1, 1.5, 1], cval=0)
# zoom: z axis
zoom(data, zoom=[1, 1, 1, 1.5], cval=0)
zoom에서 반환되는 데이터는 각 축 방향으로 확대율분 사이즈가 커지므로 32×32×32가 되도록 잘라낸 것이 아래 그림

축소
각 축 방향을 0.5배로 축소
from scipy.ndimage.interpolation import zoom
# zoom: x axis
zoom(data, zoom=[1, 0.5, 1, 1], cval=0)
# zoom: y axis
zoom(data, zoom=[1, 1, 0.5, 1], cval=0)
# zoom: z axis
zoom(data, zoom=[1, 1, 1, 0.5], cval=0)
zoom에서 반환되는 데이터는 각 축 방향으로 축소율분 사이즈가 작아지므로 32×32×32가 되도록 잘라낸 것이 아래 그림

회전
from scipy.ndimage import rotate
# Rotate: x axis
rotate(data, axes=(2,3), angle=45, cval=0.0, reshape=False)
# Rotate: y axis
rotate(data, axes=(3,1), angle=45, cval=0.0, reshape=False)
# Rotate: z axis
rotate(data, axes=(1,2), angle=45, cval=0.0, reshape=False)

이상입니다.
scipy의 다차원 데이터 라이브러리와 numpy를 사용하여 복셀 데이터의 데이터 확장이 가능했습니다!
Reference
이 문제에 관하여(복셀 데이터를 파이썬으로 데이터 확장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hiram/items/5b22830ddb4fb7340f6d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
print(type(data))
# >>> <class 'numpy.ndarray'>
print(data.shape)
# >>> (1, 32, 32, 32)
각 축 방향으로 반전
import numpy as np
# flip: x axis
np.flip(data, 1)
# flip: y axis
np.flip(data, 2)
# flip: z axis
np.flip(data, 3)

시프트
각 축 정방향으로 1변의 길이의 0.3할씩 시프트
from scipy.ndimage.interpolation import shift
# shift: x axis
shift(data, shift=[0, 0.3, 0, 0], cval=0)
# shift: y axis
shift(data, shift=[0, 0, 0.3, 0], cval=0)
# shift: z axis
shift(data, shift=[0, 0, 0, 0.3], cval=0)

확대·축소
확대
각 축 방향을 1.5배로 확대
from scipy.ndimage.interpolation import zoom
# zoom: x axis
zoom(data, zoom=[1, 1.5, 1, 1], cval=0)
# zoom: y axis
zoom(data, zoom=[1, 1, 1.5, 1], cval=0)
# zoom: z axis
zoom(data, zoom=[1, 1, 1, 1.5], cval=0)
zoom에서 반환되는 데이터는 각 축 방향으로 확대율분 사이즈가 커지므로 32×32×32가 되도록 잘라낸 것이 아래 그림

축소
각 축 방향을 0.5배로 축소
from scipy.ndimage.interpolation import zoom
# zoom: x axis
zoom(data, zoom=[1, 0.5, 1, 1], cval=0)
# zoom: y axis
zoom(data, zoom=[1, 1, 0.5, 1], cval=0)
# zoom: z axis
zoom(data, zoom=[1, 1, 1, 0.5], cval=0)
zoom에서 반환되는 데이터는 각 축 방향으로 축소율분 사이즈가 작아지므로 32×32×32가 되도록 잘라낸 것이 아래 그림

회전
from scipy.ndimage import rotate
# Rotate: x axis
rotate(data, axes=(2,3), angle=45, cval=0.0, reshape=False)
# Rotate: y axis
rotate(data, axes=(3,1), angle=45, cval=0.0, reshape=False)
# Rotate: z axis
rotate(data, axes=(1,2), angle=45, cval=0.0, reshape=False)

이상입니다.
scipy의 다차원 데이터 라이브러리와 numpy를 사용하여 복셀 데이터의 데이터 확장이 가능했습니다!
Reference
이 문제에 관하여(복셀 데이터를 파이썬으로 데이터 확장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hiram/items/5b22830ddb4fb7340f6d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from scipy.ndimage.interpolation import shift
# shift: x axis
shift(data, shift=[0, 0.3, 0, 0], cval=0)
# shift: y axis
shift(data, shift=[0, 0, 0.3, 0], cval=0)
# shift: z axis
shift(data, shift=[0, 0, 0, 0.3], cval=0)
확대
각 축 방향을 1.5배로 확대
from scipy.ndimage.interpolation import zoom
# zoom: x axis
zoom(data, zoom=[1, 1.5, 1, 1], cval=0)
# zoom: y axis
zoom(data, zoom=[1, 1, 1.5, 1], cval=0)
# zoom: z axis
zoom(data, zoom=[1, 1, 1, 1.5], cval=0)
zoom에서 반환되는 데이터는 각 축 방향으로 확대율분 사이즈가 커지므로 32×32×32가 되도록 잘라낸 것이 아래 그림

축소
각 축 방향을 0.5배로 축소
from scipy.ndimage.interpolation import zoom
# zoom: x axis
zoom(data, zoom=[1, 0.5, 1, 1], cval=0)
# zoom: y axis
zoom(data, zoom=[1, 1, 0.5, 1], cval=0)
# zoom: z axis
zoom(data, zoom=[1, 1, 1, 0.5], cval=0)
zoom에서 반환되는 데이터는 각 축 방향으로 축소율분 사이즈가 작아지므로 32×32×32가 되도록 잘라낸 것이 아래 그림

회전
from scipy.ndimage import rotate
# Rotate: x axis
rotate(data, axes=(2,3), angle=45, cval=0.0, reshape=False)
# Rotate: y axis
rotate(data, axes=(3,1), angle=45, cval=0.0, reshape=False)
# Rotate: z axis
rotate(data, axes=(1,2), angle=45, cval=0.0, reshape=False)

이상입니다.
scipy의 다차원 데이터 라이브러리와 numpy를 사용하여 복셀 데이터의 데이터 확장이 가능했습니다!
Reference
이 문제에 관하여(복셀 데이터를 파이썬으로 데이터 확장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hiram/items/5b22830ddb4fb7340f6d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from scipy.ndimage import rotate
# Rotate: x axis
rotate(data, axes=(2,3), angle=45, cval=0.0, reshape=False)
# Rotate: y axis
rotate(data, axes=(3,1), angle=45, cval=0.0, reshape=False)
# Rotate: z axis
rotate(data, axes=(1,2), angle=45, cval=0.0, reshape=False)
Reference
이 문제에 관하여(복셀 데이터를 파이썬으로 데이터 확장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hiram/items/5b22830ddb4fb7340f6d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)