บทนำ: ทำไมต้อง Edge AI สำหรับร้านค้าอัตโนมัติ

จากประสบการณ์ที่ผมเคยพัฒนาระบบ Smart Vending Machine ให้กับห้างสรรพสินค้าในไทย พบว่าการใช้ AI วิเคราะห์สินค้าบนเซิร์ฟเวอร์แบบเดิมนั้นมีความหน่วง (Latency) สูงถึง 2-3 วินาที ทำให้ลูกค้ารอนานและประสบการณ์การซื้อของแย่ลง การประมวลผล AI บนอุปกรณ์ Edge (Edge AI) ช่วยให้ระบบตอบสนองได้ภายใน 50 มิลลิวินาที เหมาะสำหรับร้านค้าไร้พนักงานที่ต้องการความเร็วสูง ระบบสามารถระบุสินค้าที่ลูกค้าหยิบ และอัปเดตจำนวนสินค้าคงคลังอัตโนมัติได้ทันที ในบทความนี้ผมจะสอนทุกขั้นตอนตั้งแต่การตั้งค่า API ไปจนถึงการนำไปใช้งานจริง พร้อมโค้ดที่พร้อมรันได้ทันที

Edge AI คืออะไร และทำงานอย่างไร

Edge AI หมายถึงการนำ AI ไปประมวลผลบนอุปกรณ์ใกล้ผู้ใช้งาน แทนที่จะส่งข้อมูลไปประมวลผลบนคลาวด์ เหมาะสำหรับร้านค้าไร้พนักงานเพราะ: - ความหน่วงต่ำกว่า 50 มิลลิวินาที - ไม่ต้องพึ่งพาอินเทอร์เน็ตตลอดเวลา - ข้อมูลสินค้าถูกประมวลผลในเครื่อง ไม่ต้องส่งรูปภาพออกไปนอกร้าน - ประหยัดค่าใช้จ่ายดาต้าอินเทอร์เน็ต

ขั้นตอนที่ 1: สมัคร API Key จาก HolySheep AI

ก่อนจะเริ่มเขียนโค้ด คุณต้องมี API Key ก่อน ผมแนะนำ สมัครที่นี่ เพราะราคาถูกมากเมื่อเทียบกับผู้ให้บริการอื่น โดยคิดเพียง ¥1 ต่อ $1 (ประหยัดได้ถึง 85%+) รองรับการชำระเงินผ่าน WeChat และ Alipay มีความหน่วงต่ำกว่า 50 มิลลิวินาที และให้เครดิตฟรีเมื่อลงทะเบียน วิธีสมัคร: 1. เข้าไปที่ https://www.holysheep.ai/register 2. กรอกอีเมลและรหัสผ่าน 3. ยืนยันอีเมล 4. ไปที่หน้า Dashboard > API Keys 5. กดปุ่มสร้าง Key ใหม่ 6. คัดลอก Key ที่ได้ (จะเริ่มต้นด้วย hsa-...)

ขั้นตอนที่ 2: ติดตั้ง Python และไลบรารีที่จำเป็น

คุณต้องติดตั้ง Python เวอร์ชัน 3.8 ขึ้นไปก่อน จากนั้นติดตั้งไลบรารีที่จำเป็น:
pip install requests pillow opencv-python numpy
หากติดตั้งบน Raspberry Pi หรืออุปกรณ์ Edge ให้ใช้คำสั่ง:
pip3 install requests pillow opencv-python-headless numpy
สำหรับระบบปฏิบัติการ Ubuntu อาจต้องติดตั้ง dependencies เพิ่มเติม:
sudo apt-get update
sudo apt-get install libgl1-mesa-glx libglib2.0-0

ขั้นตอนที่ 3: เชื่อมต่อ API สำหรับวิเคราะห์รูปภาพสินค้า

หลังจากได้ API Key แล้ว มาลองเชื่อมต่อ API กัน ผมจะสอนโค้ดทีละส่วนเพื่อให้เข้าใจง่าย

3.1 โค้ดพื้นฐานสำหรับเรียก API

import requests
import base64
from PIL import Image
import io

ตั้งค่า API Key และ Endpoint

API_KEY = "YOUR_HOLYSHEEP_API_KEY" BASE_URL = "https://api.holysheep.ai/v1" def analyze_product_image(image_path): """ ฟังก์ชันสำหรับวิเคราะห์รูปภาพสินค้าผ่าน API """ # เปิดรูปภาพและแปลงเป็น Base64 with Image.open(image_path) as img: # แปลงรูปภาพเป็น RGB (กรณีรูปภาพมี 4 ช่อง) if img.mode == 'RGBA': img = img.convert('RGB') # บีบอัดรูปภาพเพื่อลดขนาด img = img.resize((512, 512), Image.Resampling.LANCZOS) # แปลงเป็น Base64 buffer = io.BytesIO() img.save(buffer, format="JPEG", quality=85) image_base64 = base64.b64encode(buffer.getvalue()).decode("utf-8") # ส่งคำขอไปยัง API headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } payload = { "model": "gpt-4o", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "วิเคราะห์รูปภาพสินค้านี้ ระบุ: 1) ชื่อสินค้า 2) ประเภทสินค้า 3) ราคาโดยประมาณ (บาท) 4) จำนวนชิ้นในภาพ" }, { "type": "image_url", "image_url": { "url": f"data:image/jpeg;base64,{image_base64}" } } ] } ], "max_tokens": 500 } response = requests.post( f"{BASE_URL}/chat/completions", headers=headers, json=payload, timeout=30 ) if response.status_code == 200: result = response.json() return result["choices"][0]["message"]["content"] else: print(f"เกิดข้อผิดพลาด: {response.status_code}") print(response.text) return None

ทดสอบการทำงาน

result = analyze_product_image("product.jpg") print(result)

3.2 โค้ดสำหรับระบบจัดการสินค้าคงคลัง

import requests
import json
from datetime import datetime

ตั้งค่าการเชื่อมต่อ

API_KEY = "YOUR_HOLYSHEEP_API_KEY" BASE_URL = "https://api.holysheep.ai/v1" class InventoryManager: """ คลาสสำหรับจัดการสินค้าคงคลังในร้านค้าไร้พนักงาน """ def __init__(self): self.inventory = {} self.load_inventory() def load_inventory(self): """โหลดข้อมูลสินค้าคงคลังจากไฟล์""" try: with open("inventory.json", "r", encoding="utf-8") as f: self.inventory = json.load(f) print(f"โหลดข้อมูลสินค้าคงคลังสำเร็จ: {len(self.inventory)} รายการ") except FileNotFoundError: print("ไม่พบไฟล์ข้อมูล จะเริ่มต้นใหม่") self.inventory = {} def save_inventory(self): """บันทึกข้อมูลสินค้าคงคลังลงไฟล์""" with open("inventory.json", "w", encoding="utf-8") as f: json.dump(self.inventory, f, ensure_ascii=False, indent=2) print("บันทึกข้อมูลสินค้าคงคลังแล้ว") def add_product(self, product_id, name, price, quantity): """เพิ่มสินค้าใหม่""" self.inventory[product_id] = { "name": name, "price": price, "quantity": quantity, "last_updated": datetime.now().isoformat() } self.save_inventory() print(f"เพิ่มสินค้า {name} จำนวน {quantity} ชิ้น เรียบร้อย") def update_stock(self, product_id, change): """อัปเดตจำนวนสินค้า (เพิ่มหรือลด)""" if product_id in self.inventory: old_qty = self.inventory[product_id]["quantity"] self.inventory[product_id]["quantity"] += change self.inventory[product_id]["last_updated"] = datetime.now().isoformat() new_qty = self.inventory[product_id]["quantity"] self.save_inventory() status = "เพิ่ม" if change > 0 else "ลด" print(f"{status}สต็อก {self.inventory[product_id]['name']}: {old_qty} -> {new_qty}") return True else: print(f"ไม่พบสินค้ารหัส {product_id}") return False def get_stock(self, product_id): """ดูจำนวนสินค้าคงเหลือ""" if product_id in self.inventory: return self.inventory[product_id] return None def check_low_stock(self, threshold=5): """ตรวจสอบสินค้าใกล้หมด""" low_stock = [] for pid, data in self.inventory.items(): if data["quantity"] <= threshold: low_stock.append({ "id": pid, "name": data["name"], "quantity": data["quantity"] }) return low_stock def generate_restock_report(self): """สร้างรายงานสินค้าที่ต้องสั่งเพิ่ม""" low_stock = self.check_low_stock() if not low_stock: return "สินค้าคงคลังเพียงพอ ไม่ต้องสั่งเพิ่ม" report = "รายงานสินค้าที่ต้องสั่งเพิ่ม:\n" report += "=" * 40 + "\n" for item in low_stock: report += f"- {item['name']}: เหลือ {item['quantity']} ชิ้น\n" return report

ทดสอบการใช้งาน

manager = InventoryManager()

เพิ่มสินค้าตัวอย่าง

manager.add_product("P001", "น้ำดื่ม 500ml", 10, 50) manager.add_product("P002", "ขนมปังแซนด์วิช", 25, 20) manager.add_product("P003", "กาแฟกระป๋อง", 18, 30)

จำลองการซื้อสินค้า

manager.update_stock("P001", -1) # ลูกค้าซื้อน้ำดื่ม 1 ขวด manager.update_stock("P003", -2) # ลูกค้าซื้อกาแฟ 2 กระป๋อง

ดูรายงานสินค้าใกล้หมด

print(manager.generate_restock_report())

3.3 โค้ดสำหรับระบบหยิบสินค้าอัตโนมัติ

import cv2
import requests
import base64
import time
import threading
from collections import Counter

ตั้งค่าการเชื่อมต่อ

API_KEY = "YOUR_HOLYSHEEP_API_KEY" BASE_URL = "https://api.holysheep.ai/v1" class SmartCheckoutSystem: """ ระบบเช็คเอาท์อัจฉริยะสำหรับร้านค้าไร้พนักงาน ตรวจจับสินค้าที่ลูกค้าหยิบและคำนวณราคารวม """ def __init__(self): self.cart = [] self.camera = None