Doctor AI

Dr. Savath Saypadith

240 ບົດຄວາມ

Edge AI: ການຣັນລະບົບ Computer Vision ເທິງ Raspberry Pi ສໍາລັບພື້ນທີ່ຫ່າງໄກສອກຫຼີກ

ໂພສເມື່ອ # Computer Vision # Edge AI # 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). ຂໍ້ດີທີ່ເຫັນໄດ້ຊັດເຈນໃນບໍລິບົດຂອງປະເທດລາວມີຄື:


ສິ່ງທີ່ຕ້ອງກຽມ (Hardware & Software)

ບົດນີ້ຖືກອອກແບບມາສໍາລັບນັກພັດທະນາລະດັບກາງ (Intermediate) ທີ່ມີພື້ນຖານ Python ການກະກຽມມີດັ່ງນີ້:

Hardware:

  1. Raspberry Pi 4 ຫຼື 5 (ແນະນໍາ RAM 4GB ຂຶ້ນໄປ)
  2. Pi Camera Module ຫຼື ກ້ອງ USB Webcam
  3. 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):

  1. ໂຫຼດໂມເດວ (Load Model): ເຮົາໃຊ້ tflite_runtime ເຊິ່ງເບົາກວ່າການລົງ TensorFlow ໂຕເຕັມຫຼາຍ.
  2. Pre-processing: ກ້ອງອາດຈະປ້ອນພາບລະດັບ HD ມາໃຫ້, ແຕ່ໂມເດວ CV ສ່ວນຫຼາຍມັກຈະຮັບພາບຂະໜາດນ້ອຍ (ເຊັ່ນ 224x224 ຫຼື 640x640). ເຮົາຕ້ອງ cv2.resize ເພື່ອບໍ່ໃຫ້ໂມເດວラー.
  3. Inference: ຄືຂັ້ນຕອນທີ່ AI ເຮັດການຄິດໄລ່. ການໃຊ້ TFLite ຈະຊ່ວຍໃຫ້ CPU ຂອງ Pi ເຮັດວຽກໄດ້ລື່ນໄຫຼ.

ເທັກນິກການເພີ່ມຄວາມໄວ (Optimization Tips ສໍາລັບ Raspberry Pi)

ການໃຫ້ Raspberry Pi ຣັນ CV ຍ່ອມມີຂໍ້ຈໍາກັດດ້ານຄວາມແຮງ ຖ້າ FPS (Frame Per Second) ຍັງຕໍ່າຢູ່, ລອງນໍາໃຊ້ເທັກນິກເຫຼົ່ານີ້:


Key Takeaways

ການພັດທະນາ Edge AI ໃນປະເທດລາວ ເປັນການເປີດປະຕູສູ່ການແກ້ໄຂບັນຫາທີ່ແທ້ຈິງຂອງທ້ອງຖິ່ນ ບໍ່ວ່າຈະເປັນດ້ານກະສິກໍາ, ການອະນຸລັກທໍາມະຊາດພູມສັນຖານ ຫຼື ການຈັດການການຈະລາຈອນໃນເມືອງ. ບອດນ້ອຍໆໜຶ່ງອັນ ກັບໂຄດ Python ບໍ່ເທົ່າໃດແຖວ ກໍສາມາດສ້າງຄວາມປ່ຽນແປງທີ່ຍິ່ງໃຫຍ່ໄດ້ແລ້ວ!