PyTorch 참고서 OpenPose 샘플 코드 추가 단편

「만들면서 배운다! PyTorch에 의한 발전 딥 러닝」의 「제4장 자세 추정(OpenPose)」의 「Stage 모듈」의 각 Stage의 출력을 가시화하는 단편을 작성했습니다.

참조 서적



만들면서 배우십시오! PyTorch의 발전 딥 러닝
오가와 유타로

htps // 보오 k. my ゔぃ. jp / e c / p 로즈 cts /에서 원하는 l / i d = 104855
htps : // 기주 b. 코 m / 유타로 오가와 / py와 rch_ 아 d ゔ 센세 d
htps : // m / 곧 / ms / 07253d12b1fc72 16 아바

목적



Stage가 복수 있는 이유의 조사(loss를 복수회 산출하는 이유. 특징량을 복수회 입력하는 이유.).
⇒1단째~6단째로, 추정 결과가 어느 정도 다른가, 육안으로 확인한다.

각 Stage의 출력 시각화 조각



「4-7_OpenPose_inference.ipynb」를 이하와 같이, 수정·추기해 주세요.

셀 수정 전
predicted_outputs, _ = net(x)

셀 수정 후
predicted_outputs, intermediate_outputs = net(x)

셀 추가
def convert_to_numpy_and_resize(val, size, size2):
    # 画像をテンソルからNumPyに変化し、サイズを戻します
    val = val.detach().numpy().transpose(1, 2, 0)
    val = cv2.resize(val, size, interpolation=cv2.INTER_CUBIC)
    val = cv2.resize(val, size2, interpolation=cv2.INTER_CUBIC)
    return val

셀 추가
size2 = (oriImg.shape[1], oriImg.shape[0])
pafs_list = []
heatmaps_list = []
for i in range(6):
    pafs_list.append(convert_to_numpy_and_resize(intermediate_outputs[i*2][0], size, size2))
    heatmaps_list.append(convert_to_numpy_and_resize(intermediate_outputs[i*2+1][0], size, size2))

셀 추가
def display_overlay_img(featImg, oriImg, anoNo, i):
    featImg = featImg[:, :, anoNo]
    featImg = Image.fromarray(np.uint8(cm.jet(featImg)*255))
    featImg = np.asarray(featImg.convert('RGB'))

    # 合成して表示
    blend_img = cv2.addWeighted(oriImg, 0.5, featImg, 0.5, 0)

    plt.subplot(1,3,i+1)
    plt.imshow(blend_img)
    # plt.show()

def display_heatmap_and_paf(heatmaps, pafs, oriImg, anoNos):
    plt.figure(figsize=(6.4*3, 4.3*1))
    display_overlay_img(heatmaps, oriImg, anoNos[0], 0)
    display_overlay_img(heatmaps, oriImg, anoNos[1], 1)
    display_overlay_img(pafs, oriImg, anoNos[2], 2)
    plt.show()

셀 추가
print("左肘heatmap、左手首heatmap、PAF")
for i in range(6):
    print("Stage" + str(i+1))
    display_heatmap_and_paf(heatmaps_list[i], pafs_list[i], oriImg, (6, 7, 24))

셀 추가
print("右膝heatmap、右足首heatmap、PAF")
for i in range(6):
    print("Stage" + str(i+1))
    display_heatmap_and_paf(heatmaps_list[i], pafs_list[i], oriImg, (9, 10, 5))

출력 결과(1례째: 왼쪽 팔꿈치 heatmap, 왼손목 heatmap, PAF)







출력 결과(2례째: 오른쪽 무릎 heatmap, 오른발목 heatmap, PAF)





좋은 웹페이지 즐겨찾기