ການນັບຈຳນວນຄົນໃນງານບຸນທາດຫຼວງດ້ວຍ AI
ການນັບຈຳນວນຄົນໃນງານບຸນທາດຫຼວງດ້ວຍ AI: ວິເຄາະຝູງຊົນດ້ວຍ Computer Vision
ງານບຸນທາດຫຼວງ ແມ່ນໜຶ່ງໃນເທດສະການທີ່ຍິ່ງໃຫຍ່ ແລະ ສຳຄັນທີ່ສຸດຂອງປະເທດລາວ. ໃນແຕ່ລະປີ, ມີມວນຊົນຫຼາຍແສນຄົນຫຼັ່ງໄຫຼເຂົ້າມາຮ່ວມງານເພື່ອໄຫວ້ພຣະທາດ, ຊົມການຄົບງັນ, ແລະ ຊື້ເຄື່ອງໃນງານວາງສະແດງສິນຄ້າ. ການຄຸ້ມຄອງຝູງຊົນຈຳນວນມະຫາສານນີ້ ເປັນສິ່ງທ້າທາຍອັນໃຫຍ່ຫຼວງສຳລັບເຈົ້າໜ້າທີ່ຮັກສາຄວາມປອດໄພທັງໃນເລື່ອງການຄຸ້ມຄອງຈະລາຈອນ, ການຈັດການທາງເຂົ້າ-ອອກ, ແລະ ການປ້ອງກັນເຫດການລົ້ມຢຽບກັນ (Stampede).
ໃນບົດຄວາມນີ້, ເຮົາຈະມາເຈາະເລິກວິທີການນຳໃຊ້ເຕັກໂນໂລຊີ Computer Vision (CV) ໂດຍສະເພາະການໃຊ້ໂມເດລ Density Estimation ເຂົ້າມາຊ່ວຍນັບຈຳນວນຄົນ ແລະ ແກ້ໄຂບັນຫາການຈັດການຝູງຊົນໃນງານບຸນທາດຫຼວງຢ່າງມີປະສິດທິພາບ.
ເປັນຫຍັງໂມເດລ Object Detection ທົ່ວໄປຈຶ່ງບໍ່ຕອບໂຈດ?
ສຳລັບນັກພັດທະນາ AI ລະດັບກາງ, ທ່ານອາດຈະຄຸ້ນເຄີຍກັບເຕັກນິກ Object Detection ເຊັ່ນ YOLO ຫຼື Faster R-CNN ໃນການກວດຈັບຄົນໃນຮູບພາບ. ແຕ່ເມື່ອນຳໃຊ້ກັບຝູງຊົນໃນງານບຸນທາດຫຼວງທີ່ມີຄົນຍ່າງເບືຽດສຽດກັນ, ໂມເດລເຫຼົ່ານີ້ມັກຈະພົບບັນຫາ ການບັງກັນ (Occlusion). ເມື່ອຄົນຢືນຊ້ອນກັນຫຼາຍໆ, ໂມເດລຈະບໍ່ສາມາດຕີກອບ Bounding box ໄດ້ຄົບທຸກຄົນ ເຮັດໃຫ້ການນັບຈຳນວນຜິດພາດຢ່າງໜັກ.
ເພື່ອແກ້ໄຂບັນຫານີ້, ວົງການ Computer Vision ຈຶ່ງຫັນມາໃຊ້ເຕັກນິກ Density Estimation (ການປະເມີນຄວາມໜາແໜ້ນ) ແທນ.
ການເຮັດວຽກຂອງ Density Estimation Model
ແທນທີ່ຈະກວດຈັບບຸກຄົນແຕ່ລະຄົນ (Individual detection), Density Estimation Model ຈະຮຽນຮູ້ທີ່ຈະແປງຮູບພາບຝູງຊົນໃຫ້ກາຍເປັນ ແຜນທີ່ຄວາມໜາແໜ້ນ (Density Map).
- ໃນ Density Map, ພື້ນທີ່ທີ່ມີຄົນຫຼາຍຈະມີຄ່າ Pixel ທີ່ສູງ (ປົກກະຕິຈະສະແດງເປັນສີແດງໃນຮູບແບບ Heatmap).
- ພື້ນທີ່ທີ່ຫວ່າງເປົ່າ ຈະມີຄ່າ Pixel ໃກ້ຄຽງກັບ 0.
- ຈຸດສຳຄັນ ຄື: ການເອົາຄ່າຂອງທຸກໆ Pixel ໃນ Density Map ມາບວກລວມກັນ (Summation), ເຮົາຈະໄດ້ “ຈຳນວນຄົນໃນຮູບພາບນັ້ນ” ທັນທີ.
ສະຖາປັດຕະຍະກຳທີ່ນິຍົມໃຊ້ໃນທຸກມື້ນີ້ແມ່ນໂຄງສ້າງແບບ CNN (Convolutional Neural Networks) ທີ່ໃຊ້ Dilated Convolutions ເພື່ອຂະຫຍາຍ Receptive field ໂດຍບໍ່ເຮັດໃຫ້ຄວາມລະອຽດຂອງຮູບພາບຫຼຸດລົງ ເຊັ່ນ ໂມເດລ CSRNet (Congested Scene Recognition Network).
ການຂຽນໂຄ້ດ: ສ້າງລະບົບນັບຈຳນວນຄົນດ້ວຍ PyTorch
ລອງມາເບິ່ງວິທີການເບື້ອງຕົ້ນໃນການນຳໃຊ້ PyTorch ເພື່ອປະມວນຜົນຮູບພາບຈາກກ້ອງ CCTV ທີ່ຕິດຕັ້ງຢູ່ໜ້າປະຕູທາງເຂົ້າຂອງສະໜາມຫຼວງ. ເຮົາຈະສົມມຸດວ່າມີການໂຫຼດໂມເດລ (Pre-trained CSRNet) ທີ່ຖືກຝຶກສອນກັບ Dataset ຝູງຊົນ (ເຊັ່ນ ShanghaiTech Dataset) ມາແລ້ວ.
import cv2
import torch
import numpy as np
from torchvision import transforms
# ສົມມຸດວ່າເຮົາມີໂຄງສ້າງໂມເດລ CSRNet ກຽມໄວ້ໃນໄຟລ໌ models.py
from models import CSRNet
def load_crowd_model(weights_path):
"""ໂຫຼດໂມເດລທີ່ຝຶກມາແລ້ວ"""
model = CSRNet()
model.load_state_dict(torch.load(weights_path, map_location=torch.device('cpu')))
model.eval() # ຕັ້ງຄ່າໂມເດລເປັນ Evaluation mode
return model
def predict_crowd_count(image_path, model):
"""ອ່ານຮູບພາບ ແລະ ທຳນາຍຈຳນວນຄົນ"""
# 1. ອ່ານຮູບພາບຈາກກ້ອງ CCTV ໜ້າວັດທາດຫຼວງ
img = cv2.imread(image_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 2. ຈັດກຽມຮູບພາບ (Image Preprocessing)
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225])
])
img_tensor = transform(img).unsqueeze(0) # ເພີ່ມ Batch dimension
# 3. ປະມວນຜົນຜ່ານ CNN Model ເພື່ອໃຫ້ໄດ້ Density Map
with torch.no_grad():
density_map = model(img_tensor)
# 4. ຄຳນວນຈຳນວນຄົນໂດຍການບວກຄ່າທັງໝົດໃນແຜນທີ່
estimated_count = torch.sum(density_map).item()
return estimated_count, density_map.squeeze().numpy()
# ລອງລັນລະບົບ
if __name__ == "__main__":
model = load_crowd_model('weights/csrnet_best.pth')
image_file = 'data/thatluang_gate_cctv.jpg'
count, output_map = predict_crowd_count(image_file, model)
print(f"ຈຳນວນຄົນທີ່ຄາດຄະເນໄດ້ໃນບໍລິເວນທາງເຂົ້າທາດຫຼວງ ຄື: {int(count)} ຄົນ")
ການສະແດງຜົນໃນຮູບແບບ Heatmap
ເພື່ອໃຫ້ເຈົ້າໜ້າທີ່ສາມາດເບິ່ງເຫັນພາບລວມໄດ້ງ່າຍ, ເຮົາສາມາດນຳເອົາຜົນຮັບ output_map ຈາກໂຄ້ດດ້ານເທິງໄປສ້າງເປັນ Heatmap ດ້ວຍ OpenCV. ສີແດງຄືຈຸດທີ່ມີຄົນໜາແໜ້ນທີ່ສຸດ (ເຊັ່ນ ບໍລິເວນຮ້ານຂາຍປີ້ ຫຼື ຈຸດເຂົ້າປະຕູວັດ). ຂໍ້ມູນທີ່ເຫັນເປັນພາບ (Visual Analytics) ນີ້ ຈະຊ່ວຍໃນການຕັດສິນໃຈໄດ້ເປັນຢ່າງດີ.
ການນຳໃຊ້ຕົວຈິງສຳລັບງານບຸນທາດຫຼວງ (Real-World Application)
ການທີ່ເຮົາມີໂມເດລ AI ທີ່ແກ້ໄຂບັນຫາ (Inference) ໄດ້ໄວ ຊ່ວຍໃຫ້ສາມາດພັດທະນາເປັນລະບົບອັດສະລິຍະດັ່ງນີ້:
- ລະບົບເຕືອນໄພອັດຕະໂນມັດ (Real-time Alerts): ເມື່ອ AI ປະມວນຜົນ CCTV ໃນເຂດເດີ່ນທາດຫຼວງ ແລ້ວພົບວ່າຈຳນວນຄົນຕໍ່ຕາແມັດ (Density level) ເກີນກຳນົດ, ລະບົບສາມາດແຈ້ງເຕືອນຜ່ານແອັບພລິເຄຊັນ ຫຼື ວິທະຍຸສື່ສານ ໃຫ້ເຈົ້າໜ້າທີ່ປິດປະຕູ ຫຼື ລະບາຍຄົນອອກໄປທາງອື່ນ.
- ການວິເຄາະຂໍ້ມູນແຫຼ່ງທ່ອງທ່ຽວ (Analytics Dashboard): ຜູ້ຈັດງານສາມາດຮູ້ໄດ້ວ່າ ຊ່ວງເວລາໃດ (ປົກກະຕິແມ່ນຕອນແລງຂອງມື້ວັນເພັງ) ທີ່ມີຄົນເຂົ້າຮ່ວມງານຫຼາຍທີ່ສຸດ ເພື່ອວາງແຜນການຈັດສັນກຳລັງຕຳຫຼວດ ແລະ ລົດໂຮງໝໍໃນປີຖັດໄປ.
- ການຈັດການຈະລາຈອນຄົນຍ່າງ: ຊ່ວຍວິເຄາະທິດທາງການໄຫຼວຽນ (Flow analysis) ລວມເຖິງການຈັດສັນຮ້ານຄ້າບໍ່ໃຫ້ກີດຂວາງເສັ້ນທາງຍ່າງຫຼັກ ເພື່ອຫຼຸດຜ່ອນຄວາມແອອັດ.
Key Takeaways
- ມີຂໍ້ຈຳກັດສຳລັບ Object Detection: ການໃຊ້ Bounding boxes ບໍ່ແມ່ນວິທີທີ່ດີທີ່ສຸດສຳລັບຮູບພາບທີ່ມີຄົນແອອັດ.
- Density Estimation ຕອບໂຈດຫຼາຍກວ່າ: ການຄາດຄະເນໂດຍການສ້າງ Density Map ເປັນວິທີທີ່ຖືກຕ້ອງ ແລະ ໃຊ້ຊັບພະຍາກອນຄອມພິວເຕີຢ່າງມີປະສິດທິພາບກວ່າ ໃນການນັບຝູງຊົນ.
- PyTorch & CNNs: ສາມາດນຳໃຊ້ສະຖາປັດຕະຍະກຳເຊັ່ນ CSRNet ທີ່ໃຊ້ Dilated convolutions ເພື່ອສະກັດລັກສະນະເດັ່ນຂອງວັດຖຸໃນໄລຍະໄກ ແລະ ໃກ້ໄດ້ຢ່າງແມ່ນຍຳ.
- ການນຳໃຊ້ເຂົ້າໃນໜ້າວຽກຕົວຈິງ: AI ບໍ່ພຽງແຕ່ເປັນເລື່ອງຂອງທິດສະດີ, ແຕ່ສາມາດແກ້ໄຂບັນຫາຕົວຈິງຂອງສັງຄົມລາວ ດັ່ງເຊັ່ນການຄຸ້ມຄອງຄວາມປອດໄພໃນເທດສະການໃຫຍ່ໆລະດັບຊາດໄດ້.
ສະຫຼຸບ
ການນຳໃຊ້ເຕັກໂນໂລຊີ AI ໃນຮູບແບບຂອງ Computer Vision ມາຊ່ວຍນັບຈຳນວນຄົນໃນງານທີ່ຍິ່ງໃຫຍ່ເຊັ່ນ ງານບຸນທາດຫຼວງ ບໍ່ພຽງແຕ່ເປັນການຍົກລະດັບການຈັດການງານເທດສະການໃຫ້ທັນສະໄໝເທົ່ານັ້ນ, ແຕ່ຍັງເປັນການຮັບປະກັນຄວາມສະຫວັດດິພາບ ແລະ ຄວາມປອດໄພຂອງມວນຊົນທີ່ເຂົ້າຮ່ວມ. ການຮຽນຮູ້ ແລະ ພັດທະນາລະບົບ Density Estimation ມື້ນີ້ ຈະເປັນກ້າວສຳຄັນທີ່ນັກພັດທະນາຊາວລາວສາມາດນຳໄປຕໍ່ຍອດໃນຫຼາຍໆສະຖານະການໄດ້ໃນອະນາຄົດ.