ການສ້າງໂມເດວ 3 ມິຕິ ຂອງວັດລາວດ້ວຍ AI: ກໍລະນີສຶກສາວັດຊຽງທອງ
ການສ້າງໂມເດວ 3 ມິຕິ ຂອງວັດລາວດ້ວຍ AI: ຈາກພາບ 2 ມິຕິ ຂອງວັດຊຽງທອງ ສູ່ຊັບສິນດິຈິຕອນ 3 ມິຕິ
ວັດຊຽງທອງ, ແກ້ວປະເສີດແຫ່ງເມືອງຫຼວງພະບາງ ທີ່ເຕັມໄປດ້ວຍລວດລາຍສິລະປະກຳ, ຮູບປະດັບແກ້ວສີ “ຕົ້ນໄມ້ແຫ່ງຊີວິດ” (Tree of Life) ແລະ ສະຖາປັດຕະຍະກຳຫຼັງຄາຊ້ອນກັນອັນເປັນເອກະລັກ. ໃນອະດີດການສ້າງໂມເດວ 3 ມິຕິ ຂອງສະຖານທີ່ທາງປະຫວັດສາດແບບນີ້ (Photogrammetry ຫຼື 3D Modeling ດ້ວຍມື) ຕ້ອງໃຊ້ເວລາຫຼາຍເດືອນ ແລະ ເຄື່ອງມືລາຄາແພງ. ແຕ່ມື້ນີ້, ດ້ວຍເຕັກໂນໂລຊີ Generative AI ດ້ານ Computer Vision, ພວກເຮົາສາມາດປ່ຽນຮູບພາບ 2 ມິຕິ ທີ່ຖ່າຍຈາກກ້ອງທຳມະດາ ໃຫ້ກາຍເປັນໂມເດວ 3 ມິຕິ ທີ່ມີຄວາມລະອຽດສູງໄດ້ພາຍໃນບໍ່ເທົ່າໃດຊົ່ວໂມງ.
ໃນບົດຄວາມນີ້, ເຮົາຈະເຈາະເລິກເຖິງວິທີການທາງເຕັກນິກໃນການໃຊ້ໂມເດວ AI ຂັ້ນສູງເຊັ່ນ Neural Radiance Fields (NeRF) ແລະ 3D Gaussian Splatting (3DGS) ເພື່ອປະມວນຜົນຮູບພາບວັດຊຽງທອງ.
ສະຖາປັດຕະຍະກຳເບື້ອງຫຼັງ: NeRF ແລະ 3D Gaussian Splatting
ໃນຖານະນັກພັດທະນາ, ການເຂົ້າໃຈຄະນິດສາດ ແລະ ສະຖາປັດຕະຍະກຳເບື້ອງຫຼັງແມ່ນສິ່ງສຳຄັນ:
- NeRF (Neural Radiance Fields): ເປັນການໃຊ້ Multi-Layer Perceptron (MLP) ເພື່ອຮຽນຮູ້ຟັງຊັນຕໍ່ເນື່ອງແບບ 5 ມິຕິ (5D continuous function). ໂມເດວຈະຮັບຄ່າພິກັດພື້ນທີ່ (x, y, z) ແລະ ທິດທາງການມອງເຫັນ (viewing direction: ), ຈາກນັ້ນຈະສົ່ງອອກຄ່າສີ (RGB) ແລະ ຄວາມໜາແໜ້ນ (Density / Volume opacity: ). NeRF ໃຊ້ເຕັກນິກທີ່ເອີ້ນວ່າ Ray Marching ເພື່ອຄຳນວນແສງທີ່ຜ່ານແຕ່ລະຈຸດ.
- 3D Gaussian Splatting (3DGS): ເປັນເຕັກນິກໃໝ່ທີ່ໄວກວ່າ NeRF. ແທນທີ່ຈະໃຊ້ MLP, ມັນຈະສະແດງພື້ນທີ່ 3 ມິຕິ ດ້ວຍກຸ່ມຂອງ “Gaussians” ທີ່ມີຮູບຊົງ 3 ມິຕິ. ແຕ່ລະ Gaussian ຈະມີຕຳແໜ່ງ (mean), covariance matrix (ກຳນົດຮູບຊົງ/ການຢືດຂະຫຍາຍ), opacity, ແລະ Spherical Harmonics (SH) ເພື່ອຈັດການກັບການສະທ້ອນແສງທີ່ປ່ຽນແປງຕາມມຸມມອງ (view-dependent appearance), ເຊິ່ງຈຳເປັນຫຼາຍສຳລັບການເຣັນເດີລາຍແກ້ວສີສະທ້ອນແສງຂອງວັດຊຽງທອງເທິງຝາສີບົວ.
ຂັ້ນຕອນການກະກຽມຂໍ້ມູນ ແລະ ການປະມວນຜົນດ້ວຍ COLMAP
ກ່ອນທີ່ AI ຈະເຂົ້າໃຈໂຄງສ້າງ 3 ມິຕິ, ເຮົາຕ້ອງຫາຕຳແໜ່ງຂອງກ້ອງ (Camera Poses) ໃນທຸກໆຮູບພາບ. ເຮົາໃຊ້ເຕັກນິກ Structure from Motion (SfM) ຜ່ານໂປຣແກຣມທີ່ຊື່ວ່າ COLMAP.
ຖ້າທ່ານໄດ້ຖ່າຍຮູບຮອບໆວັດຊຽງທອງຫຼາຍຮ້ອຍຮູບ (ຕ້ອງມີ Overlap ກັນຢ່າງໜ້ອຍ 70%), ທ່ານສາມາດໃຊ້ Framework ຍອດຮິດຢ່າງ nerfstudio ໃນການຕຽມຂໍ້ມູນ:
# ຄຳສັ່ງປະມວນຜົນຮູບພາບວັດຊຽງທອງ ເພື່ອສະກັດເອົາ Camera Poses ແລະ Point Cloud ໜ້ອຍໜຶ່ງ
ns-process-data images --data data/wat_xieng_thong/images --output-dir data/wat_xieng_thong/processed_data
ການຂຽນໂຄດ ແລະ ການສ້າງ Rays (Coding & Ray Generation)
ລອງມາເບິ່ງການເຮັດວຽກເບື້ອງຫຼັງຂອງ NeRF ໃນ PyTorch. ຂັ້ນຕອນສຳຄັນແມ່ນການຍິງລັງສີ (Rays) ຈາກຕຳແໜ່ງກ້ອງຜ່ານພິກເຊວເທິງໜ້າຈໍໄປສູ່ໂລກ 3 ມິຕິ. ນີ້ຄື Code Snippet ສຳລັບການຄຳນວນ Ray Origin ແລະ Ray Direction:
import torch
def get_rays(H: int, W: int, K: torch.Tensor, c2w: torch.Tensor):
"""
ຄຳນວນລະບົບລັງສີ (Rays) ສຳລັບກ້ອງຖ່າຍຮູບແຕ່ລະຕົວ.
K: Camera Intrinsics Matrix
c2w: Camera-to-World Transformation Matrix (Extrinsics)
"""
# ສ້າງ Grid ຂອງພິກເຊວ
i, j = torch.meshgrid(
torch.linspace(0, W - 1, W),
torch.linspace(0, H - 1, H),
indexing='ij'
)
i = i.t()
j = j.t()
# ແປງຈາກ Pixel space ເປັນ Camera space
dirs = torch.stack(
[(i - K[0][2]) / K[0][0], -(j - K[1][2]) / K[1][1], -torch.ones_like(i)], -1
)
# ໝູນລັງສີຕາມທິດທາງກ້ອງໄປສູ່ໂລກ 3 ມິຕິ (Camera to World)
rays_d = torch.sum(dirs[..., None, :] * c2w[:3, :3], -1)
# ກຳນົດຈຸດເລີ່ມຕົ້ນຂອງລັງສີ (Camera Origin)
rays_o = c2w[:3, 3].expand(rays_d.shape)
return rays_o, rays_d
# ຕົວຢ່າງການເອີ້ນໃຊ້:
# rays_o, rays_d = get_rays(height, width, intrinsics, camera_pose)
ການປັບແຕ່ງ (Optimization) ສໍາລັບລາຍລະອຽດສະຖາປັດຕະຍະກຳລາວ
ວັດລາວມີຄວາມຊັບຊ້ອນສະເພາະຕົວ ຖ້າເຮົາ Train Model ທຳມະດາ ອາດຈະໄດ້ພາບທີ່ມົວ:
- ລາຍຮູບທອງ (Golden Stenciling) ເທິງພື້ນດຳ:
ລາຍແຕ້ມສີທອງອັນລະອຽດອ່ອນຕາມເສົາ ແລະ ຝາດ້ານໜ້າຂອງວັດຊຽງທອງ ມີລັກສະນະເປັນຄວາມຖີ່ສູງ (High-frequency details). ເພື່ອເກັບລາຍລະອຽດນີ້ໃນ NeRF, ເຮົາຕ້ອງປັບຈູນ Positional Encoding ໂດຍການເພີ່ມ
max_freq_log2(ຄວາມຖີ່ສູງສຸດ). ສຳລັບ 3DGS, ຕ້ອງແນ່ໃຈວ່າການເຮັດ Adaptive Density Control ສາມາດແບ່ງ (Split) Gaussians ໃນບໍລິເວນລາຍທອງນີ້ໄດ້ຢ່າງພຽງພໍ. - ແກ້ວປະດັບ “ຕົ້ນໄມ້ແຫ່ງຊີວິດ” (Specular Highlights): ແກ້ວສີສະທ້ອນແສງແດດຕ່າງກັນເມື່ອເຮົາຍ່າງເບິ່ງຈາກຊ້າຍໄປຂວາ. ເພື່ອໃຫ້ AI ເຂົ້າໃຈສິ່ງນີ້ໃນ 3DGS, ເຮົາຕ້ອງຝຶກສອນ Spherical Harmonics ໃຫ້ຮອດ Degree ທີ່ສູງຂຶ້ນ (ເຊັ່ນ SH degree = 3 ຫຼື 4). ສິ່ງນີ້ຈະຊ່ວຍໃຫ້ໂມເດວຈື່ຈຳຄ່າສີທີ່ປ່ຽນແປງຕາມມຸມມອງ (View-dependence) ໄດ້ເໝືອນຈິງ.
ຂໍ້ຄວນລະວັງ ແລະ ການແກ້ໄຂບັນຫາ (Troubleshooting)
ການເກັບຂໍ້ມູນໃນສະຖານທີ່ຈິງຢູ່ຫຼວງພະບາງ ມີສິ່ງທ້າທາຍດັ່ງນີ້:
- ການລົບກວນຈາກນັກທ່ອງທ່ຽວ (Dynamic Pertainers): ວັດຊຽງທອງມີແຂກໄປມາຕະຫຼອດ. ຖ້າມີຄົນຍ່າງຜ່ານຮູບພາບ, ໂມເດວຈະເກີດມີ “ເງົາຜີ” (Floaters/Artifacts). ການແກ້ໄຂແມ່ນການໃຊ້ AI ອີກຕົວໜຶ່ງ ເຊັ່ນ Segment Anything Model (SAM) ເພື່ອຊອກຫາຄົນໃນຮູບພາບ ແລະ ສ້າງ Masking ອັດຕະໂນມັດ ເພື່ອບໍ່ໃຫ້ NeRF ດຶງຂໍ້ມູນພິກເຊວເຫຼົ່ານັ້ນໄປຄຳນວນ.
- ແສງທີ່ປ່ຽນແປງ (Lighting Variance): ແສງແດດຕອນເຊົ້າ ແລະ ສີແດງສົ້ມໃນຍາມແລງທີ່ຕັດກັບແມ່ນ້ຳຂອງແລະແຍງໃສ່ຕົວວັດ ເຮັດໃຫ້ຮູບແຕ່ລະຮູບມີ Exposure ຕ່າງກັນ. ການໃຊ້ເຕັກນິກ NeRF-W (NeRF in the Wild) ເຊິ່ງມີການເພີ່ມ Appearance Embeddings ຈະຊ່ວຍໃຫ້ໂມເດວຮຽນຮູ້ ແລະ ແຍກແຍະລະຫວ່າງໂຄງສ້າງເດີມຂອງວັດ ກັບ ແສງເງົາທີ່ມາທຳປະຕິກິລິຍາຊົ່ວຄາວໄດ້.
ສິ່ງສຳຄັນທີ່ໄດ້ຮຽນຮູ້
- Generative AI ສຳລັບ 3D ຈຳເປັນຕ້ອງໃຊ້ຂໍ້ມູນທີ່ຊັດເຈນ: ຮູບພາບ 2 ມິຕິ ທີ່ປ້ອນເຂົ້າໄປຄວນມີຄວາມຄົມຊັດ, ມີການວາງມຸມກ້ອງທີ່ທັບຊ້ອນກັນຫຼາຍໆ ແລະ ຫຼີກລ່ຽງການປ່ຽນແປງສະພາບແວດລ້ອມຢ່າງກະທັນຫັນ.
- 3DGS ໄວກວ່າ NeRF: ສຳລັບການ Render ແບບ Real-time ເພື່ອໄປໃຊ້ໃນ WebGL ຫຼື Virtual Reality, 3D Gaussian Splatting ຕອບໂຈດຫຼາຍກວ່າ ເພາະມັນສາມາດປະມວນຜົນໄດ້ຫຼາຍກວ່າ 30 FPS.
- Spherical Harmonics ຄືກຸນແຈສຳລັບມໍລະດົກລາວ: ການສະທ້ອນແສງຂອງລາຍທອງ ແລະ ແກ້ວປະດັບ ແມ່ນຫົວໃຈຫຼັກຂອງສະຖາປັດຕະຍະກຳລາວ ການຈັດການ View-dependent features ຈຶ່ງຂາດບໍ່ໄດ້.
ສະຫຼຸບ
ການຜະສົມຜະສານລະຫວ່າງ Generative AI ກັບວັດທະນະທຳທ້ອງຖິ່ນ ເປີດປະຕູສູ່ຄວາມເປັນໄປໄດ້ໃໝ່ໆ ໃນການອະນຸລັກມໍລະດົກຂອງຊາດ. ການປ່ຽນຈາກພາບຖ່າຍທຳມະດາຂອງທ່ານ ທີ່ໄປຢ້ຽມຢາມຫຼວງພະບາງ ໃຫ້ກາຍເປັນໂມເດວ 3 ມິຕິ ຂອງວັດຊຽງທອງ ທີ່ສາມາດໃຊ້ໃນການສຶກສາ, ວີດີໂອເກມ ຫຼື ໃນຈັກກະວານ Metaverse ບໍ່ແມ່ນເລື່ອງທີ່ໄກຕົວອີກຕໍ່ໄປ. ດ້ວຍຄະນິດສາດຂອງ Neural Networks ແລະ ເຄື່ອງມືເຊັ່ນ NeRF ຫຼື 3D Gaussian Splatting, ນັກພັດທະນາໃນລາວທຸກຄົນກໍສາມາດເປັນສ່ວນໜຶ່ງໃນການນຳເອົາຄວາມງົດງາມທາງປະຫວັດສາດຂອງເຮົາເຂົ້າສູ່ໂລກດິຈິຕອນຂັ້ນສູງໄດ້ຢ່າງສະຫງ່າງາມ.