Computer Vision 기초 서치
기계는 이미지를 픽셀에 저장된 숫자로 인식하고, 텐서플로에서는 격자로 인식하는 듯하다.
이 픽셀값을 정수형으로 할건지 실수형으로 할건지 등에 따라 달라지겠다.
Convert Image to Tensorflow Tensor
In this section, you will learn to implement image to tensor conversion code for both Pytorch and Tensorflow framework.
For your information, the typical axis order for an image tensor in Tensorflow is as follows:
shape=(N, H, W, C)
- N — batch size (number of images per batch)
- H — height of the image
- W — width of the image
- C — number of channels (usually uses 3 channels for RGB)
You can easily load an image file (PNG, JPEG, etc.) with the following code:
import tensorflow as tf
# load image via tf.io
img = tf.io.read_file("golf.png")
# convert to tensor (specify 3 channels explicitly since png files contains additional alpha channel)
# set the dtypes to align with pytorch for comparison since it will use uint8 by default
tensor = tf.io.decode_image(img, channels=3, dtype=tf.dtypes.float32)
# (384, 470, 3)
# resize tensor to 224 x 224
tensor = tf.image.resize(tensor, [224, 224])
# (224, 224, 3)
# add another dimension at the front to get NHWC shape
input_tensor = tf.expand_dims(tensor, axis=0)
# (1, 224, 224, 3)
https://towardsdatascience.com/convert-images-to-tensors-in-pytorch-and-tensorflow-f0ab01383a03
tf.cast(x, dtype, name=None)
텐서를 새로운 자료형으로 변환합니다.
x(Tensor의 경우) 또는 x.values(SparseTensor의 경우)를 dtype형으로 변환합니다.
예시:
# 텐서 `a`는 [1.8, 2.2], 자료형은 tf.float
tf.cast(a, tf.int32) ==> [1, 2] # dtype=tf.int32
인자:
- x: Tensor 또는 SparseTensor.
- dtype: 변환될 자료형.
- name: 오퍼레이션의 명칭. (선택사항)
반환값:
x와 구조(shape)가 같은 int64형의 Tensor 또는 SparseTensor.
예외:
- TypeError: x가 dtype형으로 변환될 수 없는 경우.
https://tensorflowkorea.gitbooks.io/tensorflow-kr/content/g3doc/api_docs/python/array_ops.html
Tensor Ranks, Shapes, and Types
TensorFlow 프로그램은 텐서 데이터 구조를 사용하여 모든 데이터를 나타냅니다. TensorFlow 텐서를 n차원 배열 또는 목록으로 생각할 수 있습니다. 텐서에는 정적 유형과 동적 차원이 있습니다. 계산 그래프의 노드 간에는 텐서만 전달할 수 있습니다.
계급
TensorFlow 시스템에서 텐서는 rank 라는 차원 단위로 설명됩니다 . 텐서 순위는 행렬 순위와 다릅니다. 텐서 순위( 차수 또는 차수 또는 n차원 이라고도 함 )는 텐서의 차원 수입니다. 예를 들어 다음 텐서(Python 목록으로 정의됨)의 순위는 2입니다.
t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
랭크 2 텐서는 우리가 일반적으로 행렬로 생각하는 것이고, 랭크 1 텐서는 벡터입니다. 순위 2 텐서의 경우 구문을 사용하여 모든 요소에 액세스할 수 있습니다 t[i, j]. 랭크 3 텐서의 경우 t[i, j, k].
계급수학 엔터티파이썬 예제
0 | 스칼라(크기만) | s = 483 |
1 | 벡터(크기 및 방향) | v = [1.1, 2.2, 3.3] |
2 | 행렬(숫자의 표) | m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] |
삼 | 3-텐서(숫자의 큐브) | t = [[[2], [4], [6]], [[8], [10], [12]], [[14], [16], [18]]] |
N | n-텐서(아이디어를 얻음) | .... |
모양
TensorFlow 설명서는 텐서 차원을 설명하기 위해 세 가지 표기 규칙(순위, 모양 및 차원 번호)을 사용합니다. 다음 표는 이러한 항목이 서로 어떻게 관련되어 있는지 보여줍니다.
계급모양치수 번호예
0 | [] | 0-D | 0-D 텐서. 스칼라. |
1 | [D0] | 1차원 | 모양이 [5]인 1차원 텐서. |
2 | [D0, D1] | 2차원 | 모양이 [3, 4]인 2차원 텐서. |
삼 | [D0, D1, D2] | 3차원 | 형태가 [1, 4, 3]인 3차원 텐서. |
N | [D0, D1, ...Dn-1] | nD | 모양이 [D0, D1, ... Dn-1]인 텐서. |
TensorShape모양은 Python 목록/정수 튜플을 통해 또는 클래스 를 사용하여 나타낼 수 있습니다 .
데이터 유형
차원 외에도 Tensor에는 데이터 유형이 있습니다. 다음 데이터 유형 중 하나를 텐서에 할당할 수 있습니다.
데이터 형식파이썬 유형설명
DT_FLOAT | tf.float32 | 32비트 부동 소수점. |
DT_DOUBLE | tf.float64 | 64비트 부동 소수점. |
DT_INT8 | tf.int8 | 8비트 부호 있는 정수. |
DT_INT16 | tf.int16 | 16비트 부호 있는 정수. |
DT_INT32 | tf.int32 | 32비트 부호 있는 정수. |
DT_INT64 | tf.int64 | 64비트 부호 있는 정수. |
DT_UINT8 | tf.uint8 | 8비트 부호 없는 정수. |
DT_STRING | tf.string | 가변 길이 바이트 배열. Tensor의 각 요소는 바이트 배열입니다. |
DT_BOOL | tf.bool | 부울. |
DT_COMPLEX64 | tf.complex64 | 두 개의 32비트 부동 소수점으로 구성된 복소수: 실수부와 허수부. |
DT_COMPLEX128 | tf.complex128 | 두 개의 64비트 부동 소수점으로 구성된 복소수: 실수부와 허수부. |
DT_QINT8 | tf.qint8 | 양자화 작업에 사용되는 8비트 부호 있는 정수입니다. |
DT_QINT32 | tf.qint32 | 양자화 작업에 사용되는 32비트 부호 있는 정수입니다. |
DT_QUINT8 | tf.quint8 | 양자화 연산에 사용되는 8비트 부호 없는 정수. |
https://chromium.googlesource.com/external/github.com/tensorflow/tensorflow/+/r0.10/tensorflow/g3doc/resources/dims_types.md