BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU ỨNG DỤNG TRÍ TUỆ NHÂN TẠO TRONG THIẾT KẾ 3D TỪ HÌNH ẢNH 2D NGÀNH KĨ THUẬT CƠ KHÍ GIẢNG VIÊN HƯỚNG DẪN Th S PHẠM BÁ KHIỂN Sinh viên thực hiện MSSV Lớp NGUYỄN THÁI DUY 1711040208 17DCKA2 NGUYỄN QUỐC HUY 1711040179 17DCKA1 LƯU PHÁT HUY 17 11040324 17DCKA2 TP Hồ Chí Minh, tháng 9 năm 2021 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU ỨNG DỤNG TRÍ TUỆ NHÂN TẠO TRONG THIẾT KẾ 3D TỪ H.
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU ỨNG DỤNG TRÍ TUỆ NHÂN TẠO TRONG THIẾT KẾ 3D TỪ HÌNH ẢNH 2D NGÀNH: KĨ THUẬT CƠ KHÍ GIẢNG VIÊN HƯỚNG DẪN: Th.S PHẠM BÁ KHIỂN Sinh viên thực hiện: MSSV : Lớp: NGUYỄN THÁI DUY 1711040208 17DCKA2 NGUYỄN QUỐC HUY 1711040179 17DCKA1 LƯU PHÁT HUY 17 11040324 17DCKA2 TP Hồ Chí Minh, tháng năm 2021 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU ỨNG DỤNG TRÍ TUỆ NHÂN TẠO TRONG THIẾT KẾ 3D TỪ HÌNH ẢNH 2D NGÀNH: KĨ THUẬT CƠ KHÍ GIẢNG VIÊN HƯỚNG DẪN: Th.S PHẠM BÁ KHIỂN Sinh viên thực hiện: MSSV : Lớp: NGUYỄN THÁI DUY 1711040208 17DCKA2 NGUYỄN QUỐC HUY 1711040179 17DCKA1 LƯU PHÁT HUY 17 11040324 17DCKA2 TP Hồ Chí Minh, tháng năm 2021 LỜI CẢM ƠN Chúng em xin gửi lời cảm ơn sâu sắc tới quý thầy cô, anh chị bạn bè hướng dẫn, giúp đỡ, góp ý cho chúng em từ bước đầu chọn đề tài làm khóa luận tới thực đề tài Trước hết chúng em xin chân thành cảm ơn thầy – Phạm Bá Khiển, người hướng dẫn chúng em thực khóa luận Thầy ln quan tâm, giúp đỡ tạo điều kiện tốt để em hồn thành cách trọn vẹn Chúng em xin chúc sức khoẻ thầy gia đình, chúc thầy gặt hái thành cơng cơng việc có nhiều niềm vui sống Chúng em xin gửi lời cảm ơn tới quý thầy Khoa Cơng nghệ Thơng Tin ln tận tình giảng dạy, giúp chúng em có kiến thức từ nhờ chúng em phát triển hồn thành khóa luận Sau cùng, chúng em xin cảm ơn anh chị, bạn bè, người thân quen bên cạnh giúp đỡ, hỗ trợ, để chúng em tiếp cận với đề tài cách trực quan học hỏi nhiều kiến thức bổ ích Tuy nhiên, với điều kiện kinh nghiệm, kiến thức hạn hẹp thời gian hạn chế, q trình làm khóa luận khơng thể tránh khỏi thiếu xót chúng em mong nhận đánh giá, góp ý quý thầy giúp em hồn thiện làm cách tốt nâng cao kiến thức, phục vụ cho công việc sau này, Chúng em xin chân thành cảm ơn! MỤC LỤC LỜI MỞ ĐẦU CHƯƠNG 1: GIỚI THIỆU - 1.1 Mục tiêu đề tài - 1.2 Lý chọn đề tài - CHƯƠNG 2: TỔNG QUAN ĐỀ TÀI 2.1 Tổng quan đề tài 2.2 Tình hình nước - 2.3 Tình hình giới 2.4 Phương pháp nghiên cứu 10 CHƯƠNG 3: 3.1 PHƯƠNG PHÁP GIẢI QUYẾT - 11 AI - 11 3.1.1 Công nghệ AI chia làm loại chính: - 12 3.1.2 AI ứng dụng sống tương lai - 15 3.2 Machine Learning 17 3.3 Deep Learning - 19 3.3.1 Những tiềm đặc biệt Deep Learning 20 3.3.2 Cách thức hoạt động Deep Learning - 22 3.3.3 Các ưu điểm bật Deep Learning - 24 3.3.4 Deep Learning ứng dụng - 25 3.3.5 Một vài ứng dụng thực tế - 27 3.4 Multimedia Deep Learning 30 3.1 Computer Vision - 34 3.2 PyTorch - 35 3.3 OpenCV - 38 3.4 Scikit-image 41 3.5 Convolutional Neural Network 42 3.9.1 Khái niệm 42 3.9.2 Convolutional - 42 3.9.3 Cấu trúc mạng CNN - 44 CHƯƠNG 4: 4.1 QUY TRÌNH THIẾT KẾ 46 Phân tích phương pháp - 46 4.1.1 Dạng gắn chặt (Voxel network) - 47 4.1.2 Dạng hình học 48 4.2 Tiếp cận - 49 4.2.1 Máy tạo cấu trúc 2D - 49 4.2.2 Point Cloud Fusion dung hợp - 50 4.2.3 Pseudo-Renderer - 51 4.2.4 Đào tạo động - 52 4.3 Kết 52 4.4 Phương pháp PifuHD - 53 4.4.1 Giới thiệu 54 4.4.2 Quy trình thực 55 4.4.3 Phương pháp 56 4.4.4 Kết nghiên cứu 62 CHƯƠNG 5: 5.1 THI CÔNG - 64 Chuẩn bị môi trường 64 5.2 Chạy thử sản phẩm 67 5.3 Kết đạt - 67 5.4 Chương trình 73 5.4.1 File code nhận tham số đầu vào cho chương trình 74 5.4.2 File code để thực thi chương trình - 75 CHƯƠNG 6: ĐÁNH GIÁ KẾT QUẢ, KẾT UẬN - 81 6.1 Tổng quan mục tiêu đánh giá - 81 6.2 Kết đạt - 81 6.3 Khó khăn trở ngại 82 6.4 Hướng phát triển - 82 TÀI LIỆU THAM KHẢO 83 PHỤ LỤC - 85 DANH MỤC CÁC TỪ VIẾT TẮT, TỪ TIẾNG ANH AI Artificial Intelligence OpenCV Open Source Computer Vision Library ConvNet / CNNs Convolutional Neural Network Code Chuỗi ngơn ngữ lập trình Project Dự án Platform Nền tảng API Application Programming Interface Real-time Thời gian thực Interactively Tương tác Dataset Tập liệu Dynamic graphs Đồ thị động Model Mơ hình mẫu Deep learning Phương pháp học sâu CPU Central Processing Unit GPU Graphic Proccessing Unit MLP Multi-Layer Perceptron DANH MỤC HÌNH ẢNH Hình 1-1 Một mẫu tái tạo ảnh 3D từ ảnh 2D Hình 1-2 Kết tái tạo đạt phương pháp Pifu Hình 2-1 Công nghệ IBM Waston Mỹ Hình 2-2 Ứng dụng AI tài Mỹ Hình 2-3 Robot thú cưng trang bị trí tuệ nhân tạo .9 Hình 2-4 Máy giặt AI tự động chỉnh Nhật .9 Hình 3-1 AI .11 Hình 3-2 Deep Blue, chương trình tự động chơi cờ vua IBM 12 Hình 3-3 Xe khơng người lái 13 Hình 3-4 Cơng nghệ AI liệu có phức tạp khơng? .14 Hình 3-5 Ứng dụng AI sống 15 Hình 3-6 Mối quan hệ AI, Machine Learning Deep Learning 18 Hình 3-7 Deep Learning gì? 19 Hình 3-8 Trí tuệ nhân tạo 21 Hình 3-9 Cách thức hoạt động thuật toán Deep Learning 22 Hình 3-10 Mạng lưới thần kinh Deep Learning 23 Hình 3-11 Deep Learning giải số vấn đề mà không cần đến người 24 Hình 3-12 Ứng dụng Deep Learning lĩnh vực y tế 26 Hình 3-13 Ứng dụng xe tự động 28 Hình 3-14 Multimedia Deep Learning 31 Hình 3-15 Multiple hidden layers process hierarchical features 32 Hình 3-16 Pytorch .36 Hình 3-17 Workflow PyTorch 37 Hình 3-18 OpenCV 39 Hình 3-19 Scikit-image 41 Hình 3-20 Ma trận Convolutional 42 Hình 3-21 Sử dụng ma trận 3x3 ảnh 43 Hình 3-22 Sử dụng ma trận 5x5 ảnh 44 Hình 4-1 Biểu diễn lệu 3D 46 Hình 4-2 Empty Voxels 47 Hình 4-3 Mật độ biểu diễn voxels thấp .47 Hình 4-4 Point Cloud đại diện cho ghế .48 Hình 4-5 Máy tạo cấu trúc 2D 49 Hình 4-6 Point Cloud Fusion dung hợp 50 Hình 4-7 Pseudo-Renderer .51 Hình 4-8 Đào tạo động 52 Hình 4-9 Kết so sánh hình ảnh .53 Hình 4-10 Kết từ ảnh RBG 53 Hình 4-11 Từ hình ảnh có độ phân giải cao tạo ảnh 3D người độ phân giải 1k 54 Hình 4-12 Hai cấp độ mô đun Pifu 59 Hình 4-13 Ttrường hợp khơng có thơng tin ngữ cảnh nhận biết 3D khơng thể tìm hiểu hình học 3D hợp lý 62 Hình 4-14 So sánh kết phương pháp với thiết kế khác 63 Hình 5-1 Python 64 Hình 5-2 Cài đặt thư viện file requirement .65 Hình 5-3 Chuẩn bị model data cho việc cài đặt 65 Hình 5-4 Các file cần có 66 Hình 5-5 Ảnh đầu vào 66 Hình 5-6 Chạy lệnh thực thi chương trình 67 Hình 5-7 Kết sau thực thi .68 Hình 5-8 Hình ảnh 3D sau hoàn thành 72 Hình 5-9 Sơ đồ luồng hoạt động PiFUHD .73 Hình 5-10 Chú thích sơ đồ 73 Hình 5-11 Code file simple_test.py 74 Hình 5-12 Đoạn code định nghĩa tham số đầu vào 74 Hình 5-13 Code file recon 75 Hình 5-14 Import thư viện cần thiết 76 Hình 5-15 Import file khác 76 Hình 5-16 Các hàm 76 Hình 5-17 Code hàm main hàm reconWrapper 77 Hình 5-18 Code hàm recon .77 Hình 5-19 Khối lệnh test 78 Hình 5-20 Hàm gen_mesh 79 Hình 5-21 Thư mục lib chứa file code để thực thi chức khác 80 Hình 6-1 mơ hình 3D hồn thiện 82 Hình 5-14 Import thư viện cần thiết Ngoài ra, cần import thêm file thư mục lib để hỗ trợ xử lý liệu Hình 5-15 Import file khác 5.4.2 Các hàm đoạn code xử lý ảnh Chương trình có phần chính: hàm main hàm Hình 5-16 Các hàm 76 Các hàm ta có sau: - Hàm main: gọi phương thức hàm file chạy Hình 5-17 Code hàm main hàm reconWrapper - Hàm reconWrapper(): Hàm chứa hàm recon (hàm lồng nhau), gọi đến hàm recon() hàm main gọi - Hàm recon(): hàm xử lý chương trình Hình 5-18 Code hàm recon 77 - Trong hàm recon, khối lệnh dùng để test gọi đến hàm gen_mesh để xử lý hình ảnh nhiều cơng đoạn phức tạp Hình 5-19 Khối lệnh test - Hàm gen_mesh(): Xử lý tham số từ hàm recon truyền qua cho hàm xử lý 78 Hình 5-20 Hàm gen_mesh Tuy nhiên, file recon chưa phải nơi để xử lý toàn trình render hình 3D Nó gọi đến file nằm thư mục lib, nơi chứa cá file thực chức độc lập Việc chia chương trình thành nhiều file nhầm dễ quản lý code dễ bảo trì muốn sửa đổi code dễ dàng hiểu chức chúng thông qua tên thư mục tên file 79 Hình 5-21 Thư mục lib chứa file code để thực thi chức khác 80 CHƯƠNG 6: ĐÁNH GIÁ KẾT QUẢ, KẾT UẬN 6.1 Tổng quan mục tiêu đánh giá Qua thời gian nghiên cứu thực đề tài tụi em thực mơ hình 3D tương đối sắc nét, tái lại khớp xương, nếp nhăn quần áo, khuôn mặt gần giống với ảnh mẫu Tuy nhiên, độ xác cơng trình nghiên cứu chưa cao nên mơ hình 3D cịn đơn sơ chưa chi tiết Để có ảnh 3D siêu thực hay có độ xác tối đa, cần cải tiến thêm nhiều thuật tốn cơng nghệ sử dụng Đề tài với mục tiêu kết xuất ảnh 3D từ ảnh 2D đầu vào dùng công nghệ Deep Learning, cụ thể lĩnh vực Multimedia Deep Learning Từ ảnh 2D có độ phân giải vừa đủ cho ảnh 3D tái trực quan Mặc dù phương pháp Multimedia Deep Learning gần đạt số kết đáng ý, lĩnh vực deep learning cịn nhiều khó khăn, đặc biệt khó khăn việc phải tìm kiếm, thu thập, lưu trữ, xử lý, quản lý lượng liệu khổng lồ đa dạng thật hiệu Do thách thức khó khăn này, lĩnh vực trở thành đề tài nghiên cứu đòi hỏi cao thu hút ý đáng kể chất lượng giá trị mà đề tài mang lại 6.2 Kết đạt Sau làm đồ án, em tích lũy nhiều kiến thức tư nghiên cứu tư logic Có hội tiếp xúc tìm hiểu cơng nghệ AI Machine Learning Đó vừa lợi vừa thử thách hữu ích cho chúng em sau Thêm vào đó, chúng em lượng kiến thức lập trình nói chung Python nói riêng hữu ích đa ngơn ngữ mang lại Còn đồ án, kết đạt ảnh 3D tương đối gần với thực tế từ ảnh 2D đầu vào, ảnh 3D tái đươc chi tiết người khớp xương, nếp gấp quần áo, chi tiết khuôn mặt, 81 Hình 6-1 mơ hình 3D hồn thiện 6.3 Khó khăn trở ngại Bên cạnh đó, thời gian có hạn, đặc biệt dề tài thử thách sinh viên chưa biết lĩnh vực công nghệ thông tin chúng em, chúng em chưa hoàn thành đồ án cách tối đa Việc tự tìm hiểu nghiên cứu giúp chúng em đúc kết nhiều kinh nghiệm cho thân để làm việc cố gắng hoàn thiện đề tài Ngồi ra, cịn vài khó khăn ngành cơng nghệ AI tại, lĩnh vực Multimedia Deep Learning nên ảnh 3D đạt nhiều hạn chế độ phân giải, tính xác so với thực tế chưa tái ảnh 3D hoàn thiện 6.4 Hướng phát triển Vì lý thời gian hạn chế nên đề tài đạt hình ảnh 3D người mức độ bản, chưa xử lý hình ảnh vật Trong thời gian tới, chúng em cố gắng 82 hoàn thành đề tài mức tối đa từ hiểu nhiều cách ứng dụng AI vào ngành Hướng phát triển đề tài: Hoàn thiện mức độ xử lý ảnh cao để nâng độ xác kết lên Bên cạnh phát triển thêm ảnh vật thể khác, cụ thể bàn ghế, vật Hình 6-2 Mơ hình 3D với độ phân giải cao (nguồn internet) 83 TÀI LIỆU THAM KHẢO [1] PIFuHD: Multi-Level Pixel-Aligned Implicit Function for High-Resolution 3D Human Digitization (CVPR 2020); https://shunsukesaito.github.io/PIFuHD [2] Create 3D model from a single 2D image in PyTorch – Phuc Le; https://medium.com/vitalify-asia/create-3d-model-from-a-single-2d-imagein-pytorch-917aca00bb07 [3] Paper PifuHD: https://arxiv.org/pdf/2004.00452.pdf [4] Deep Learning With Pytorch, https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html [5] OpenCV, https://learnopencv.com/ [6] Python Learning, https://www.learnpython.org/ [7] Convolutional Neural Network, https://towardsdatascience.com/acomprehensive-guide-to-convolutional-neural-networks-the-eli5-way3bd2b1164a53 [8] Machine Learning, https://machinelearningcoban.com/2016/12/26/introduce/ [9] Computer Vision https://viblo.asia/p/thi-giac-may-tinh-la-gi-cac-van-de-lien-quan-toi-thi-giacmay-tinh-Az45b4M6ZxY [10] Scikit-image; http://gialaipc.com.vn/python-scikit-image-xu-ly-hinh-anhbang-scikit-image/ [11] Scikit-image; https://en.wikipedia.org/wiki/Scikit-image 84 PHỤ LỤC CODE LẬP TRÌNH PYTHON CỦA DỰ ÁN PIFUHD File simple_test.py from recon import reconWrapper import argparse ############################################################## Setting ############################################################## parser = argparse.ArgumentParser() parser.add_argument('-i', ' input_path', type=str, default='./sample_images')#Ảnh đầu vào parser.add_argument('-o', ' out_path', type=str, default='./results')#Ảnh đầu parser.add_argument('-c', '-ckpt_path', type=str, default='./checkpoints/pifuhd.pt')#Model train sẵn parser.add_argument('-r', ' resolution', type=int, default=512)#Độ phân giải parser.add_argument(' use_rect', action='store_true', help='use rectangle for cropping') args = parser.parse_args() ################################################################################ ############### ## Upper PIFu ################################################################################ ############### resolution = str(args.resolution) start_id = -1 end_id = -1 cmd = [' dataroot', args.input_path, ' results_path', args.out_path,\ ' loadSize', '1024', ' resolution', resolution, ' load_netMR_checkpoint_path', \ args.ckpt_path,\ ' start_id', '%d' % start_id, ' end_id', '%d' % end_id] reconWrapper(cmd, args.use_rect) File recon.py import sys import os sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname( file ), ' '))) ROOT_PATH = os.path.dirname(os.path.dirname(os.path.abspath( file ))) 85 import time import json import numpy as np import cv2 import random import torch import torch.nn as nn from tqdm import tqdm from torch.utils.data import DataLoader import matplotlib.pyplot as plt import matplotlib.cm as cm import matplotlib from numpy.linalg import inv from lib.options import BaseOptions from lib.mesh_util import save_obj_mesh_with_color, reconstruction from lib.data import EvalWPoseDataset, EvalDataset from lib.model import HGPIFuNetwNML, HGPIFuMRNet from lib.geometry import index from PIL import Image parser = BaseOptions() def gen_mesh(res, net, cuda, data, save_path, thresh=0.5, use_octree=True, components=False): image_tensor_global = data['img_512'].to(device=cuda) image_tensor = data['img'].to(device=cuda) calib_tensor = data['calib'].to(device=cuda) net.filter_global(image_tensor_global) net.filter_local(image_tensor[:,None]) try: if net.netG.netF is not None: image_tensor_global = torch.cat([image_tensor_global, net.netG.nmlF], 0) if net.netG.netB is not None: image_tensor_global = torch.cat([image_tensor_global, net.netG.nmlB], 0) except: pass b_min = data['b_min'] b_max = data['b_max'] try: save_img_path = save_path[:-4] + '.png' save_img_list = [] 86 for v in range(image_tensor_global.shape[0]): save_img = (np.transpose(image_tensor_global[v].detach().cpu().numpy(), (1, 2, 0)) * 0.5 + 0.5)[:, :, ::-1] * 255.0 save_img_list.append(save_img) save_img = np.concatenate(save_img_list, axis=1) cv2.imwrite(save_img_path, save_img) verts, faces, _, _ = reconstruction( net, cuda, calib_tensor, res, b_min, b_max, thresh, use_octree=use_octree, num_samples=5 0000) verts_tensor = torch.from_numpy(verts.T).unsqueeze(0).to(device=cuda).float() # if 'calib_world' in data: # calib_world = data['calib_world'].numpy()[0] # verts = np.matmul(np.concatenate([verts, np.ones_like(verts[:,:1])],1), inv(calib_world).T)[ :,:3] color = np.zeros(verts.shape) interval = 50000 for i in range(len(color) // interval + 1): left = i * interval if i == len(color) // interval: right = -1 else: right = (i + 1) * interval net.calc_normal(verts_tensor[:, None, :, left:right], calib_tensor[:,None], calib_tensor) nml = net.nmls.detach().cpu().numpy()[0] * 0.5 + 0.5 color[left:right] = nml.T save_obj_mesh_with_color(save_path, verts, faces, color) except Exception as e: print(e) def gen_mesh_imgColor(res, net, cuda, data, save_path, thresh=0.5, use_octree=True, component s=False): image_tensor_global = data['img_512'].to(device=cuda) image_tensor = data['img'].to(device=cuda) calib_tensor = data['calib'].to(device=cuda) net.filter_global(image_tensor_global) net.filter_local(image_tensor[:,None]) try: if net.netG.netF is not None: image_tensor_global = torch.cat([image_tensor_global, net.netG.nmlF], 0) if net.netG.netB is not None: 87 image_tensor_global = torch.cat([image_tensor_global, net.netG.nmlB], 0) except: pass b_min = data['b_min'] b_max = data['b_max'] try: save_img_path = save_path[:-4] + '.png' save_img_list = [] for v in range(image_tensor_global.shape[0]): save_img = (np.transpose(image_tensor_global[v].detach().cpu().numpy(), (1, 2, 0)) * 0.5 + 0.5)[:, :, ::-1] * 255.0 save_img_list.append(save_img) save_img = np.concatenate(save_img_list, axis=1) cv2.imwrite(save_img_path, save_img) verts, faces, _, _ = reconstruction( net, cuda, calib_tensor, res, b_min, b_max, thresh, use_octree=use_octree, num_samples=1 00000) verts_tensor = torch.from_numpy(verts.T).unsqueeze(0).to(device=cuda).float() # if this returns error, projection must be defined somewhere else xyz_tensor = net.projection(verts_tensor, calib_tensor[:1]) uv = xyz_tensor[:, :2, :] color = index(image_tensor[:1], uv).detach().cpu().numpy()[0].T color = color * 0.5 + 0.5 if 'calib_world' in data: calib_world = data['calib_world'].numpy()[0] verts = np.matmul(np.concatenate([verts, np.ones_like(verts[:,:1])],1), inv(calib_world).T)[:,: 3] save_obj_mesh_with_color(save_path, verts, faces, color) except Exception as e: print(e) def recon(opt, use_rect=False): # load checkpoints state_dict_path = None if opt.load_netMR_checkpoint_path is not None: state_dict_path = opt.load_netMR_checkpoint_path elif opt.resume_epoch < 0: state_dict_path = '%s/%s_train_latest' % (opt.checkpoints_path, opt.name) opt.resume_epoch = 88 else: state_dict_path = '%s/%s_train_epoch_%d' % (opt.checkpoints_path, opt.name, opt.resume_ epoch) start_id = opt.start_id end_id = opt.end_id cuda = torch.device('cuda:%d' % opt.gpu_id if torch.cuda.is_available() else 'cpu') state_dict = None if state_dict_path is not None and os.path.exists(state_dict_path): print('Resuming from ', state_dict_path) state_dict = torch.load(state_dict_path, map_location=cuda) print('Warning: opt is overwritten.') dataroot = opt.dataroot resolution = opt.resolution results_path = opt.results_path loadSize = opt.loadSize opt = state_dict['opt'] opt.dataroot = dataroot opt.resolution = resolution opt.results_path = results_path opt.loadSize = loadSize else: raise Exception('failed loading state dict!', state_dict_path) # parser.print_options(opt) if use_rect: test_dataset = EvalDataset(opt) else: test_dataset = EvalWPoseDataset(opt) print('test data size: ', len(test_dataset)) projection_mode = test_dataset.projection_mode opt_netG = state_dict['opt_netG'] netG = HGPIFuNetwNML(opt_netG, projection_mode).to(device=cuda) netMR = HGPIFuMRNet(opt, netG, projection_mode).to(device=cuda) def set_eval(): netG.eval() # load checkpoints netMR.load_state_dict(state_dict['model_state_dict']) 89 os.makedirs(opt.checkpoints_path, exist_ok=True) os.makedirs(opt.results_path, exist_ok=True) os.makedirs('%s/%s/recon' % (opt.results_path, opt.name), exist_ok=True) if start_id < 0: start_id = if end_id < 0: end_id = len(test_dataset) ## test with torch.no_grad(): set_eval() print('generate mesh (test) ') for i in tqdm(range(start_id, end_id)): if i >= len(test_dataset): break # for multi-person processing, set it to False if True: test_data = test_dataset[i] save_path = '%s/%s/recon/result_%s_%d.obj' % (opt.results_path, opt.name, test_data['n ame'], opt.resolution) print(save_path) gen_mesh(opt.resolution, netMR, cuda, test_data, save_path, components=opt.use_com pose) else: for j in range(test_dataset.get_n_person(i)): test_dataset.person_id = j test_data = test_dataset[i] save_path = '%s/%s/recon/result_%s_%d.obj' % (opt.results_path, opt.name, test_data ['name'], j) gen_mesh(opt.resolution, netMR, cuda, test_data, save_path, components=opt.use_co mpose) def reconWrapper(args=None, use_rect=False): opt = parser.parse(args) recon(opt, use_rect) if name == ' main ': reconWrapper() 90 ... điểm, hỗ trợ nghiên cứu phát triển công nghệ trí tuệ nhân tạo, liên kết nhà nghiên cứu, đầu tư, doanh nghiệp, thúc đẩy nghiên cứu ứng dụng trí tuệ nhân tạo Tại Việt Nam, AI ứng dụng mạnh mẽ nhiều... cho công nghệ in cắt 3D ngày phát triển tối ưu hóa suất Xuất phát từ thực tế nhóm em lựa chọn đề tài là: ? ?Nghiên cứu ứng dụng trí tuệ nhân tạo thiết kế hình ảnh 3D từ hình 2D? ?? CHƯƠNG 2: 2.1 TỔNG... TÀI Tổng quan đề tài Nghiên cứu đạt tiến đáng kể ngày thu hình dạng 3D đẹp từ hình ảnh 2D Thách thức đặt kỹ thuật tạo ảnh 3D từ ảnh 2D phát kiến mẻ phức tạp Làm để tạo ảnh 3D nhanh chóng, có độ