import pylab as plt
import numpy as np
# Sample data
side = np.linspace(-2,2,4) # (최소값, 최대값, 격자 수). side = (-2, 2, 4)인 경우, [-2. -0.66666667 0.66666667 2. ]가 나옴. 즉 차=4, 간=3이니 4/3=1.3333... 차이의 배열이 생김.
X,Y = np.meshgrid(side,side)
print(X)
print(Y)
# Z = np.exp(-((X-1)**2+Y**2)) # 각 격자에 거기에 들어갈 값
Z = X * Y
print(Z)
# Plot the density map using nearest-neighbor interpolation
plt.pcolormesh(X,Y,Z)
plt.show()
[[-2. -0.66666667 0.66666667 2. ]
[-2. -0.66666667 0.66666667 2. ]
[-2. -0.66666667 0.66666667 2. ]
[-2. -0.66666667 0.66666667 2. ]]
[[-2. -2. -2. -2. ]
[-0.66666667 -0.66666667 -0.66666667 -0.66666667]
[ 0.66666667 0.66666667 0.66666667 0.66666667]
[ 2. 2. 2. 2. ]]
[[ 4. 1.33333333 -1.33333333 -4. ]
[ 1.33333333 0.44444444 -0.44444444 -1.33333333]
[-1.33333333 -0.44444444 0.44444444 1.33333333]
[-4. -1.33333333 1.33333333 4. ]]
이를 통해 아래를 획득했고, 샘플이미지는 그 아래이다.
다음으로 대표 확인해야 하는 이미지에선 이걸 획득.
def pcolormesh(pred_map):
# Sample data
Xlen, Ylen = pred_map.shape[3], pred_map.shape[2]
Xside, Yside = np.linspace(0, Xlen -1, Xlen), np.linspace(0, Ylen - 1, Ylen)
X, Y = np.meshgrid(Xside, Yside)
Z = []
for i in range(Ylen-1, 0, -1):
tmp = []
for j in range(Xlen):
try:
tmp.append(pred_map[0][0][i][j])
except:
print(i, j)
Z.append(tmp)
Z = np.array(Z)
# Plot the density map using nearest-neighbor interpolation
plt.pcolormesh(X, Y, Z)
plt.savefig('savefig_sample.png')
pred_map을 얻었을 떄, 위의 코드면 됨.
단, 이 때 pred_map은 (1,1,x,y) 사이즈임.
'버츄얼유튜버' 카테고리의 다른 글
To Choose or to Fuse? Scale Selection for Crowd Counting (2) | 2022.12.02 |
---|---|
Generating High-Quality Crowd Density Maps using Contextual Pyramid CNNs (0) | 2022.12.02 |
DataLoader 이해 - Boosting-Crowd-Counting... 을 기반으로 (0) | 2022.11.29 |
ResNet 관련 링크 (0) | 2022.10.12 |
ViT 코드 (0) | 2022.09.19 |