Edge AI: ການຣັນລະບົບ Computer Vision ເທິງ Raspberry Pi ສໍາລັບພື້ນທີ່ຫ່າງໄກສອກຫຼີກ
Edge AI: ການຣັນລະບົບ Computer Vision ເທິງ Raspberry Pi
ລອງຈິນຕະນາການເບິ່ງວ່າ: ທ່ານຕ້ອງການສ້າງລະບົບ AI ເພື່ອກວດຈັບພະຍາດພືດ ຫຼື ຕິດຕາມຄົນລັກລອບເຂົ້າສວນກາເຟຢູ່ເມືອງປາກຊ່ອງ ແຂວງຈໍາປາສັກ. ບັນຫາທີ່ໃຫຍ່ທີ່ສຸດບໍ່ແມ່ນການຂຽນໂຄດ, ແຕ່ແມ່ນ “ສັນຍານອິນເຕີເນັດ”. ໃນພື້ນທີ່ຫ່າງໄກສອກຫຼີກທີ່ສັນຍານ 4G/5G ບໍ່ໝັ້ນຄົງ, ການສົ່ງພາບວິດີໂອຂຶ້ນໄປປະມວນຜົນເທິງ Cloud AI ເປັນເລື່ອງທີ່ເປັນໄປບໍ່ໄດ້ເລີຍ.
ນີ້ຄືຈຸດທີ່ Edge AI ແລະ ອຸປະກອນລາຄາປະຢັດຢ່າງ Raspberry Pi ກາຍມາເປັນພະເອກ. ໃນບົດຄວາມນີ້, ເຮົາຈະມາເຈາະເລິກວິທີການນໍາເອົາໂມເດວ Computer Vision (CV) ມາຣັນຢູ່ໜ້າງານ (Edge) ແບບບໍ່ຕ້ອງງໍ້ອິນເຕີເນັດ.
ເປັນຫຍັງຕ້ອງໃຊ້ Edge AI?
Edge AI ໝາຍເຖິງການນໍາເອົາໂມເດວ AI ມາປະມວນຜົນເທິງອຸປະກອນປາຍທາງ (Edge Devices) ເຊັ່ນ: Raspberry Pi, ໂທລະສັບມືຖື ຫຼື ເຊັນເຊີ IoT ໂດຍບໍ່ຕ້ອງສົ່ງຂໍ້ມູນໄປທີ່ເຊີເວີ (Server/Cloud). ຂໍ້ດີທີ່ເຫັນໄດ້ຊັດເຈນໃນບໍລິບົດຂອງປະເທດລາວມີຄື:
- ເຮັດວຽກໄດ້ໂດຍບໍ່ມີອິນເຕີເນັດ: ເໝາະຫຼາຍສໍາລັບສວນກະສິກໍາ ຫຼື ດ່ານປ່າໄມ້ໃນເຂດພູດອຍ.
- ເວລາຕອບສະໜອງໄວ (Low Latency): ບໍ່ຕ້ອງລໍຖ້າການອັບໂຫຼດ/ດາວໂຫຼດ.
- ຄວາມເປັນສ່ວນຕົວ (Privacy): ຂໍ້ມູນພາບຈະຖືກປະມວນຜົນແລ້ວລຶບຖິ້ມ ບໍ່ມີການສົ່ງຫຼຸດອອກໄປພາຍນອກ.
ສິ່ງທີ່ຕ້ອງກຽມ (Hardware & Software)
ບົດນີ້ຖືກອອກແບບມາສໍາລັບນັກພັດທະນາລະດັບກາງ (Intermediate) ທີ່ມີພື້ນຖານ Python ການກະກຽມມີດັ່ງນີ້:
Hardware:
- Raspberry Pi 4 ຫຼື 5 (ແນະນໍາ RAM 4GB ຂຶ້ນໄປ)
- Pi Camera Module ຫຼື ກ້ອງ USB Webcam
- MicroSD Card (16GB+) ທີ່ລົງລະບົບປະຕິບັດການ Raspberry Pi OS ແລ້ວ
Software Stack: ເຮົາຈະໃຊ້ TensorFlow Lite (TFLite) ເຊິ່ງເປັນເຕັກໂນໂລຊີການບີບອັດໂມເດວໃຫ້ເບົາ ແລະ ສາມາດຣັນເທິງ CPU ຂອງ Raspberry Pi ໄດ້ຢ່າງມີປະສິດທິພາບ ຮ່ວມກັບ OpenCV.
ຂັ້ນຕອນການຕິດຕັ້ງ ແລະ ຂຽນໂຄດ (Step-by-Step)
1. ການຕິດຕັ້ງ Library ທີ່ຈໍາເປັນ
ເປີດ Terminal ເທິງ Raspberry Pi ແລ້ວພິມຄໍາສັ່ງລຸ່ມນີ້ ເພື່ອຕິດຕັ້ງ OpenCV ແລະ TFLite Runtime:
sudo apt update
sudo apt install libopencv-dev
pip install opencv-python-headless numpy
pip install tflite-runtime
2. ໂຄດ Python ສໍາລັບການຣັນ Object Detection
ໃນຕົວຢ່າງນີ້, ເຮົາສົມມຸດວ່າທ່ານໄດ້ທໍາການແປງໂມເດວ (ເຊັ່ນ YOLO ຫຼື MobileNet) ມາເປັນຟາຍ detect_model.tflite ຮຽບຮ້ອຍແລ້ວ. ນີ້ຄືໂຄດ app.py ສໍາລັບດຶງພາບຈາກກ້ອງ ແລະ ທຳນາຍຜົນ:
import cv2
import numpy as np
from tflite_runtime.interpreter import Interpreter
import time
# 1. ໂຫຼດໂມເດວ TensorFlow Lite
model_path = "detect_model.tflite"
interpreter = Interpreter(model_path=model_path)
interpreter.allocate_tensors()
# ດຶງຄ່າ Input ແລະ Output ຂອງໂມເດວ
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
input_shape = input_details[0]['shape'] # ປົກກະຕິຈະເປັນ (1, 224, 224, 3)
# 2. ເປີດກ້ອງ (0 ຄືກ້ອງຕົວທໍາອິດ)
cap = cv2.VideoCapture(0)
print("ເລີ່ມຕົ້ນການກວດຈັບ (Edge AI ສວນກາເຟປາກຊ່ອງ)...")
while True:
start_time = time.time()
ret, frame = cap.read()
if not ret:
break
# 3. Pre-processing: ປັບຂະໜາດຮູບໃຫ້ກົງກັບໂມເດວ
img_resized = cv2.resize(frame, (input_shape[1], input_shape[2]))
img_expanded = np.expand_dims(img_resized, axis=0).astype(np.float32)
# Normalize ຖ້າໂມເດວຂອງທ່ານຝຶກມາແບບ [0, 1]
# img_expanded = img_expanded / 255.0
# 4. Inference: ປ້ອນຂໍ້ມູນເຂົ້າໂມເດວ ແລະ ສັ່ງປະມວນຜົນ
interpreter.set_tensor(input_details[0]['index'], img_expanded)
interpreter.invoke()
# 5. Post-processing: ຮັບຄ່າຜົນລັບ
predictions = interpreter.get_tensor(output_details[0]['index'])
class_id = np.argmax(predictions)
confidence = np.max(predictions)
# 6. ສະແດງຜົນເທິງໜ້າຈໍ
fps = 1.0 / (time.time() - start_time)
cv2.putText(frame, f"Class: {class_id} ({confidence:.2f})", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
cv2.putText(frame, f"FPS: {fps:.1f}", (10, 70), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2)
cv2.imshow("Paksong Farm Monitor", frame)
# ກົດ 'q' ເພື່ອອອກຈາກໂປຣແກຣມ
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
ອະທິບາຍໂຄດ (Architecture Breakdown):
- ໂຫຼດໂມເດວ (Load Model): ເຮົາໃຊ້
tflite_runtimeເຊິ່ງເບົາກວ່າການລົງ TensorFlow ໂຕເຕັມຫຼາຍ. - Pre-processing: ກ້ອງອາດຈະປ້ອນພາບລະດັບ HD ມາໃຫ້, ແຕ່ໂມເດວ CV ສ່ວນຫຼາຍມັກຈະຮັບພາບຂະໜາດນ້ອຍ (ເຊັ່ນ 224x224 ຫຼື 640x640). ເຮົາຕ້ອງ
cv2.resizeເພື່ອບໍ່ໃຫ້ໂມເດວラー. - Inference: ຄືຂັ້ນຕອນທີ່ AI ເຮັດການຄິດໄລ່. ການໃຊ້ TFLite ຈະຊ່ວຍໃຫ້ CPU ຂອງ Pi ເຮັດວຽກໄດ້ລື່ນໄຫຼ.
ເທັກນິກການເພີ່ມຄວາມໄວ (Optimization Tips ສໍາລັບ Raspberry Pi)
ການໃຫ້ Raspberry Pi ຣັນ CV ຍ່ອມມີຂໍ້ຈໍາກັດດ້ານຄວາມແຮງ ຖ້າ FPS (Frame Per Second) ຍັງຕໍ່າຢູ່, ລອງນໍາໃຊ້ເທັກນິກເຫຼົ່ານີ້:
- Quantization (INT8): ແທນທີ່ຈະໃຊ້ໂມເດວປະເພດ Float32 (ເຊິ່ງກິນຊັບພະຍາກອນ), ໃຫ້ແປງໂມເດວລົງມາເປັນ INT8 (Integer 8-bit). ຄວາມແມ່ນຍໍາອາດຈະລຸດລົງໜ້ອຍໜຶ່ງ ແຕ່ຄວາມໄວອາດເພີ່ມຂຶ້ນເຖິງ 3-4 ເທົ່າ.
- Skip Frames: ສຳລັບການເຝົ້າລະວັງສັດຕູພືດ ຫຼື ປ່າໄມ້ ການປ່ຽນແປງບໍ່ໄດ້ເກີດຂຶ້ນທຸກໆວິນາທີ. ທ່ານບໍ່ຈຳເປັນຕ້ອງປະມວນຜົນທຸກໆ 30 ເຟຣມຕໍ່ວິນາທີ. ສາມາດຕັ້ງໂຄດໃຫ້ມັນ Inference ພຽງ 1 ຫຼື 2 ເຟຣມຕໍ່ວິນາທີກໍພຽງພໍ.
- Downsample Resolution: ປັບຄວາມລະອຽດຂອງກ້ອງ (Camera Capture) ໃຫ້ຕໍ່າລົງຕັ້ງແຕ່ຕົ້ນເພື່ອປະຢັດ CPU.
Key Takeaways
- Edge AI ຊ່ວຍຕັດບັນຫາເລື່ອງອິນເຕີເນັດ ແລະ ການຕອບສະໜອງຊ້າ ອະນຸຍາດໃຫ້ເຮົາເອົາ AI ໄປຕັ້ງໄວ້ໃສກໍໄດ້ໃນປະເທດລາວ.
- Raspberry Pi ຮ່ວມກັບ TensorFlow Lite ແມ່ນຄູ່ຫູທີ່ສົມບູນແບບສໍາລັບການເລີ່ມຕົ້ນໂຄງການ Computer Vision ໃນລາຄາທີ່ຈັບຕ້ອງໄດ້.
- ການຄຸ້ມຄອງຊັບພະຍາກອນເຊັ່ນ: ການເຮັດ Model Quantization (INT8) ແລະ Pre-processing ພາບ ແມ່ນຫົວໃຈສໍາຄັນທີ່ເຮັດໃຫ້ລະບົບຣັນໄດ້ລື່ນໄຫຼ.
ການພັດທະນາ Edge AI ໃນປະເທດລາວ ເປັນການເປີດປະຕູສູ່ການແກ້ໄຂບັນຫາທີ່ແທ້ຈິງຂອງທ້ອງຖິ່ນ ບໍ່ວ່າຈະເປັນດ້ານກະສິກໍາ, ການອະນຸລັກທໍາມະຊາດພູມສັນຖານ ຫຼື ການຈັດການການຈະລາຈອນໃນເມືອງ. ບອດນ້ອຍໆໜຶ່ງອັນ ກັບໂຄດ Python ບໍ່ເທົ່າໃດແຖວ ກໍສາມາດສ້າງຄວາມປ່ຽນແປງທີ່ຍິ່ງໃຫຍ່ໄດ້ແລ້ວ!