1 คะแนน โดย GN⁺ 1 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • คอขวดของคลังวิดีโอไม่ใช่เครื่องมือตัดต่อ แต่คือการค้นหาไม่เจอ จึงโฟกัสที่การเปลี่ยนคลิปไม่มีป้ายกำกับให้กลายเป็นดัชนีที่ค้นถามเป็นภาษาอังกฤษได้
  • ออกแบบแบบ local-first โดยสร้างไฟล์ sidecar .description.md ไว้ข้างแต่ละคลิป และดึง rating, แสง, ตำแหน่ง, ทรานสคริปต์, คีย์เวิร์ด, คำอธิบายแบบร้อยแก้ว ออกจากการเรียก vision เพียงครั้งเดียว
  • ไปป์ไลน์รวม ffprobe, exiftool, Nominatim, ffmpeg, WhisperX, insightface, และโมเดล vision เพื่อสร้าง metadata, GPS, เฟรม, ทรานสคริปต์, และ face embedding
  • MacBook Pro 16 นิ้ว ปี 2021 รุ่น M1 Max 64GB รัน Gemma 4 31B Q4 บน LM Studio และระหว่างประมวลผลจำนวนมาก สวอปพุ่งสูงสุดถึง 50.89GB
  • สคีมาแบบมีโครงสร้างและ ข้อจำกัดแบบ enum ช่วยลด hallucination และทำให้จัดรูปแบบที่ประมวลผลจำนวนมากด้วย 31B แบบโลคัลก่อน แล้วค่อยส่งเฉพาะ 10~20% ที่ยากไปประเมินซ้ำด้วยโมเดลคลาวด์ได้

จุดเริ่มต้นของปัญหา: ค้นหายากกว่าตัดต่อ

  • ระหว่างที่อยู่ Maasai Mara เกือบครึ่งปี วิดีโอที่ถ่ายด้วย iPhone, DJI Pocket, โดรน, Nikon Z8, และ Ray-Ban Meta เพิ่มขึ้นเรื่อย ๆ แต่ส่วนใหญ่ก็ถูกทิ้งไว้โดยไม่เคยเปิดกลับมาดู
  • ช่องโซเชียลของ Mara Hilltop ไม่ได้หยุดไป 3 เดือนเพราะขาดคอนเทนต์ แต่เพราะขาดเวลาตัดต่อ
  • ด้วย Claude Code และ Opus 4.5/4.6 งานพัฒนาสามารถรันเอเจนต์ยาว ๆ และทำงานขนานได้ และพอชนกับการเปิดตัวที่พักแบบเสียเงินแห่งแรกของ KaribuKit เวลาสำหรับตัดต่อวิดีโอยิ่งน้อยลงไปอีก
  • วิธีแก้แรกที่นึกถึงคือสแตก SaaS ราคา $140 ต่อเดือน ที่ประกอบด้วย Eddie AI, Higgsfield MCP, Submagic, และ Buffer แต่สุดท้ายมันไม่ตรงกับคอขวดจริง
  • วิดีโอ generative AI ไม่เข้ากับแบรนด์ท่องเที่ยวจริง และในสถานการณ์ที่ผู้เข้าพักคาดหวังสถานที่จริง ฉาก AI ที่แสดงผิดอาจทำลายความน่าเชื่อถือได้
  • ความถี่การโพสต์ที่เป็นจริงไม่ได้อยู่ที่ 3~5 ชิ้นต่อสัปดาห์ แต่ใกล้กับ 2~3 ชิ้นต่อสัปดาห์มากกว่า ทำให้แผนแรกมีแนวโน้มล้มเหลวตั้งแต่สัปดาห์ที่สอง
  • DaVinci Resolve Studio ที่มีอยู่แล้ว พร้อม IntelliSearch, Smart Bins, และ Voice to Subtitle ใน Resolve 21 ครอบคลุมความสามารถประมาณ 70% ของที่ Eddie ให้ได้
  • องค์ประกอบที่เหลือคือให้ Claude Code ควบคุม Resolve ผ่าน DaVinci Resolve MCP แบบโอเพนซอร์ส และใช้ ElevenLabs ทำ voiceover เฉพาะคลิปเชิงข้อมูล ทำให้ต้นทุนลดลงเหลือ $22 ต่อเดือน

คอขวดที่แท้จริง: ต้องมีดัชนีก่อน AI editor

  • AI video editor ในตลาดมักตั้งสมมติฐานว่าวิดีโอถูกติดป้ายกำกับมาแล้ว แต่คลังจริงกลับกระจัดกระจายด้วยชื่ออย่าง IMG_*.mov, DJI_*.mp4, Mara june 2024 backup final FINAL
  • Eddie ค้นหาจากทรานสคริปต์ได้ แต่ไม่สามารถหาฉากอย่าง “ช้างบนเนินในช่วงแสงทอง” จากคลังที่ไม่มีป้ายกำกับได้
  • ชื่อไฟล์, โฟลเดอร์แม่, พิกัด GPS, และข้อความทรานสคริปต์ เพียงอย่างเดียวไม่สามารถบอกเนื้อหาภาพอย่าง “ไวด์ช็อตพระอาทิตย์ขึ้นที่มียีราฟอยู่ในเฟรม” ได้
  • แรงงัดที่แท้จริงไม่ได้อยู่บนตัว editor แต่อยู่ก่อนหน้านั้น ต้องมีดัชนีที่ทำให้คลังถูกค้นถามเป็นภาษาอังกฤษได้ก่อน

ออกแบบ indexer แบบ local-first

  • โครงสร้างโดยรวมคล้ายกับงาน AI-native build ที่ทำให้ลูกค้าใน SimbaStack แต่เพราะเป็นทั้งลูกค้าและวิศวกรเอง การตัดสินใจจึงเร็วมาก
  • ข้อจำกัด 4 ข้อ

    • ต้องเป็นแบบ local-first
      • คลังของ Mara Hilltop อยู่บน SSD แบบกายภาพ และวิดีโอส่วนตัวอยู่บนโน้ตบุ๊ก การอัปโหลดคลิปขนาดหลาย GB หลายพันรายการขึ้นคลาวด์ไม่เหมาะทั้งด้านต้นทุนและความเป็นส่วนตัว
    • ต้องการ ไฟล์ sidecar มากกว่าฐานข้อมูลศูนย์กลาง
      • วาง .description.md ไว้ข้างแต่ละคลิป เพื่อให้ grep กับข้อความธรรมดาได้
      • ต่อให้ indexer พังในภายหลัง ไฟล์ก็ยังอยู่ และเมื่อย้ายข้ามไดรฟ์ ข้อมูลก็ย้ายไปพร้อมกัน
    • ต้องดึงข้อมูลทุกอย่างที่ต้องใช้จากการเรียก vision ครั้งเดียว
      • เนื่องจาก vision pass บนเฟรมที่ดึงออกมามีต้นทุนสูง จึงออกแบบสคีมาให้กว้างตั้งแต่แรกเพื่อรวมข้อมูลที่อาจอยากรู้ในภายหลังด้วย
      • รายการที่รวมมี rating, technical quality, lighting, time of day, color palette, audio quality, people count, keywords, faces, location, transcript, prose description เป็นต้น
    • ต้องเลือกใช้ vision backend ได้ 3 แบบ
      • ค่าเริ่มต้นคือ CLI ของ Claude Max subscription ซึ่งไม่มีต้นทุนส่วนเพิ่ม
      • เมื่อต้องการความเร็ว ใช้ Anthropic API
      • สำหรับงานจำนวนมาก ใช้ local backend ที่ชี้ไปยัง LM Studio และ local backend ตัวนี้คือหัวใจสำคัญ

ไปป์ไลน์ประมวลผลต่อคลิป

  • อ่านmetadataด้วย ffprobe
  • อ่านละติจูด ลองจิจูด และความสูง GPS ด้วย exiftool ซึ่งทำงานได้เหมือนกันกับวิดีโอจาก iPhone, DJI Pocket, และโดรน
  • ทำ reverse geocoding ด้วย Nominatim ซึ่งฟรี มีการจำกัดความเร็ว และไม่ต้องใช้ API key
  • ใช้ ffmpeg ดึงเฟรมขนาด 1920px จำนวน 5 เฟรมในช่วงห่างเท่า ๆ กัน
  • ถอดเสียงด้วย WhisperX รวมถึงการจัดแนวระดับคำและการแยกผู้พูดด้วย pyannote โดยรองรับ 97 ภาษา เช่น Hindi, English, Swahili
  • ตรวจจับใบหน้าด้วย insightface และเก็บ ArcFace embedding 512 มิติ ลงในฐานข้อมูลใบหน้า SQLite ส่วนกลาง เพื่อให้ค้นหาบุคคลทั้งคลังได้ภายหลัง
  • โมเดล vision อ่านเฟรม บางส่วนของทรานสคริปต์ และบริบทของโฟลเดอร์ แล้วส่งกลับเป็น YAML frontmatter และคำอธิบายแบบร้อยแก้ว
  • ผลลัพธ์สุดท้ายถูกบันทึกเป็น sidecar .description.md ข้างคลิป
  • คลิปจริงของ Mara Hilltop ชื่อ IMG_1103.MOV ไม่สามารถรู้บริบทได้จากชื่อไฟล์ แต่ sidecar ที่ Gemma สร้างมีทั้งการจัดเซ็ตเต็นท์ซาฟารี การแพนกล้องจากภายในออกสู่สะวันนา ประเภทช็อต และกรณีใช้งานอย่าง marketing reel กับ travel vlog B-roll
  • ในระดับโฟลเดอร์ นอกจาก sidecar ข้างแต่ละคลิปแล้ว ยังสร้าง _INDEX.json และ _INDEX.md ด้านบนไว้ใช้สำหรับ grep เร็ว ๆ และส่งต่อให้ LLM
  • การทำงานทั้งหมดอยู่ใน Claude Code skill ที่เป็น Python ราว 1,400 บรรทัด โดย Claude Code เขียนให้เป็นส่วนใหญ่ ส่วนมนุษย์ดูแล architecture, prompt, schema design, และ bug triage

โมเดล 31B แบบโลคัลที่รันบน MacBook รุ่นเก่า

  • MacBook Pro 16 นิ้ว M1 Max RAM 64GB ที่ซื้อในปี 2021 เดิมไม่ได้ตั้งใจไว้สำหรับ LLM แต่เลือกเพื่อให้เปิด Chrome tabs, DaVinci Resolve, Slack, Discord, และ Drive พร้อมกันได้
  • ห้าปีต่อมา โน้ตบุ๊กเครื่องเดิมรัน Gemma 4 31B Q4 บน LM Studio และประมวลผลคลังวิดีโอทั้งปี
  • ใน LM Studio โมเดลขนาด 28.40GB ถูกโหลดขึ้นหน่วยความจำ และ REST API ทำงานที่ 127.0.0.1:1234
  • ระหว่างประมวลผลจำนวนมาก RAM 64GB อย่างเดียวไม่พอ และตาม Activity Monitor ปริมาณสวอปพุ่งขึ้นสูงสุดถึง 50.89GB
  • สภาพนี้ไม่ใช่สิ่งที่อยากปล่อยไว้ตลอดวันทำงานปกติ แต่ถือว่ายอมรับได้สำหรับการโหมงานแรง ๆ ช่วงสุดสัปดาห์
  • โน้ตบุ๊กจะร้อนและพัดลมหมุนดัง แต่ยังสร้าง sidecar ต่อไปได้ในขณะที่ทำงานอย่างอื่น
  • MacBook 16 นิ้ว M1 Max แสดงให้เห็นว่าแม้เป็นฮาร์ดแวร์อายุ 5 ปี ก็ยังมีเผื่อพอจะรันโมเดล 31B parameter ได้ในความเร็วที่ใช้งานได้จริง และหาก local LLM มีประสิทธิภาพขึ้นอีก ก็น่าจะใช้ต่อได้อีก 3~5 ปี

บั๊ก 4 อย่างและบทเรียนที่ได้

  • การเปลี่ยน API ของ speaker diarization ใน WhisperX 3.8

    • ใน WhisperX 3.8 whisperx.DiarizationPipeline ถูกย้ายไปอยู่ในซับโมดูล whisperx.diarize
    • อาร์กิวเมนต์ของ constructor use_auth_token ถูกเปลี่ยนเป็น token ตาม pyannote 3.x
    • วิธีแก้คือ signature introspection
    • สคริปต์จะลอง token= ก่อน แล้วถ้า constructor ส่ง TypeError ค่อย fallback ไป use_auth_token=
    • เวลาต้องเรียกไลบรารี AI ที่เปลี่ยนเร็ว การเรียก constructor แบบป้องกันไว้ก่อนคือประกันราคาถูก
  • Claude CLI ส่ง permission error กลับมาเหมือนเป็นผลลัพธ์สำเร็จ

    • ในการทดสอบ backend ของ CLI ครั้งแรก sidecar ทั้ง 4 ไฟล์คืนข้อความเดียวกันว่า “I need permission to read the image frames...”
    • เนื่องจาก exit code เป็น 0 และ output ไม่ว่าง มันจึงผ่านเช็กความสำเร็จของสคริปต์
    • ในโหมด non-interactive ถ้าไม่มี --permission-mode bypassPermissions Claude CLI จะคืนข้อความปฏิเสธสิทธิ์เป็น response body แทน prompt
    • วิธีแก้คือเพิ่มแฟล็กนั้น และเพิ่ม defensive check ที่ถือว่าคำตอบสั้น ๆ ที่มี “I need permission” เป็นข้อผิดพลาด ไม่ใช่คำอธิบาย
    • เมื่อนำเครื่องมือ AI ไปใช้ในสคริปต์ ความล้มเหลวแบบเงียบซ่อนอยู่ใน flow การขอสิทธิ์แบบ non-interactive
  • Gemma คืนค่า people_count: "many"

    • เนื่องจาก vision prompt สั่งว่า integer or the string "many" if >10 Gemma จึงถือว่าทำตามคำสั่งถูกต้องแล้ว
    • บั๊กไม่ได้อยู่ที่โมเดล แต่อยู่ที่การออกแบบสคีมา
    • หลังแก้แล้ว จึงระบุให้ประมาณค่าเป็นจำนวนเต็ม 0~99 และบังคับแปลงคำตอบ "many" เดิมใน parser
    • ฟิลด์ในสคีมาไม่ควรเป็น union แบบ int หรือ string บางค่า แต่ควรตรึงให้เป็นจำนวนเต็มเสมอหรือสตริงเสมอ เพื่อให้ตัวที่ consume downstream ง่ายขึ้น
  • คลิปมอเตอร์ไซค์สั่นไหวถูกคัดทิ้งผิดพลาด

    • prompt สำหรับ cull รุ่นแรกอิงมาตรฐานพอร์ตโฟลิโอภาพถ่ายมากเกินไป จึงให้คลิปที่มี motion blur หนัก โฟกัสนุ่ม หรือภาพสั่น ได้คะแนนเป็น cull
    • คลิปมอเตอร์ไซค์ถือถ่ายกลางคืนระหว่างทริปสเปนก็ถูกจัดเป็นของควรทิ้ง ทั้งที่ความเบลอนั้นเองคือบรรยากาศของความทรงจำ
    • เกณฑ์ cull จึงถูกเปลี่ยนจาก “ภาพไม่สมบูรณ์” เป็น “สิ่งที่ไม่ใช่บันทึกจริง”
    • สิ่งที่ควรทิ้งจึงแคบลงเหลือคลิปอย่างฝาปิดเลนส์ วิดีโอในกระเป๋า คลิปทดสอบ 2 วินาที หรือภาพที่ overexposed จนใช้ไม่ได้ทั้งหมด
    • คลังภาพถ่ายควร cull แบบเข้ม แต่ความทรงจำในวิดีโอควร cull แบบผ่อนปรน และแม้ใช้สคีมาเดียวกันก็ต้องแยกโหมดให้ชัด

ข้อสรุปจากสคีมาแบบมีโครงสร้างและโมเดลโลคัล

  • ข้อจำกัดแบบ enum ช่วยลด hallucination

    • Gemma 4 E4B เคยอธิบายรูป coworking-space ที่ถ่ายตอนกลางคืนว่า “brightly lit, abundant natural light, floor-to-ceiling windows” ทั้งที่นอกหน้าต่างมืดสนิท
    • แต่เมื่อให้สคีมาแบบมีโครงสร้างกับ 31B และบังคับให้เลือกจาก golden_hour | bright_daylight | overcast | dim_interior | nighttime | mixed | unclear ทั้ง thinking-off และ thinking-on ก็กลับมาตอบ nighttime
    • โมเดลอาจแต่งคำอธิบายเท็จขึ้นมาได้ในร้อยแก้วแบบเปิด แต่ใน enum มันสร้างค่าใหม่ไม่ได้ มีได้แค่เลือกผิด
    • สคีมาปลอดภัยกว่าคำสั่ง
  • local 31B กับ structured prompt ช่วยลดช่องว่างกับคลาวด์

    • Gemma 4 31B Q4 แบบ thinking-off เมื่อใช้ structured schema ให้ผลลัพธ์กับคลิปทดสอบหลายตัวที่แยกจาก Sonnet 4.6 ได้ยาก
    • ส่วนเพิ่มของโมเดลคลาวด์มีคุณค่าในคลิปยาก ๆ ราว 10~20%
    • งานจำนวนมากอย่างการทำดัชนีคลิปหลายพันชิ้นข้ามคืนสามารถรันแบบโลคัลได้ แล้วค่อยส่งเฉพาะคลิปที่โลคัลติดป้าย review ไปประเมินซ้ำบนคลาวด์ เป็นโครงสร้างสองชั้นที่ขยายได้
  • AI video editor กำลังแข่งกันบนเลเยอร์ที่สูงเกินไป

    • เลเยอร์ที่มีค่าจริงไม่ใช่ editor แต่คือดัชนีที่ค้นหาได้
    • ถ้าค้นแบบภาษาธรรมชาติได้ว่า “คลิปถือถ่ายในร่มของ Mara, ช่วงแสงทอง, มีคน, ยาวเกิน 8 วินาที” ตัว editor ที่อยู่ด้านบนก็จะง่ายขึ้น
    • ตลาด AI editor กำลังแข่งกันบนเลเยอร์ผิวหน้าที่อยู่เหนือดัชนีที่ยังไม่มีจริง และข้าม prerequisite อย่างดัชนีไป

ขั้นถัดไปและข้อจำกัด

  • งานถัดไปคือสร้างeditorที่ใช้ Claude Code เป็น orchestrator ใช้ DaVinci Resolve MCP เพื่อตัดคลิป และเพิ่ม voiceover จาก ElevenLabs ให้คลิปเชิงข้อมูล
  • voice clone มีข้อจำกัดชัดเจน
    • ใช้เฉพาะคอนเทนต์เชิง utility เช่น การบอกทาง คำอธิบายห้อง เวอร์ชันหลายภาษา หรือข้อมูลเชิงข้อเท็จจริงที่ปกติจะพูดเองอยู่แล้ว
    • ไม่ใช้กับรีวิวหรือข้อความจากผู้ก่อตั้ง
    • ในปี 2026 กฎหมายเกี่ยวกับภาระการเปิดเผยข้อมูลจะเป็นเรื่องจริง และความน่าเชื่อถือของแบรนด์ hospitality สูญเสียได้ง่าย
  • เมื่อมีดัชนีแล้ว ก็ไม่จำเป็นต้องนั่ง scrub หาไวด์ช็อตพระอาทิตย์ขึ้นเองจากวิดีโอ DJI Pocket ขนาด 47GB
  • ตอนนี้วิดีโอหนึ่งปีของ Mara Hilltop บนโน้ตบุ๊กอายุ 5 ปี กลายเป็นสิ่งที่ค้นถามเป็นภาษาอังกฤษได้แล้ว โดยมีต้นทุนเป็นเวลาช่วงสุดสัปดาห์และสวอป 50GB
  • ปีอื่น ๆ ที่เหลืออยู่บน SSD เก่า ๆ คือเป้าหมายของการประมวลผลถัดไป
  • ช่องโซเชียลของ Mara Hilltop ยังไม่ได้กลับมามีชีวิตอีกครั้ง
    • indexer แก้ได้แค่ปัญหาการหาเจอคลิปที่เหมาะสม
    • editor ที่เปลี่ยนมันให้เป็น reel สำเร็จรูปคืออีกครึ่งหนึ่งที่เหลือ และถ้าสำเร็จก็จะมีบทความต่อ แต่ถ้าล้มเหลวก็จะเขียนถึงสาเหตุ
  • คำตอบที่ถูกต้องอาจเป็นการจ้างคน
    • การหา editor ที่มีเซนส์แบบอบอุ่นและช่างสังเกตให้เข้ากับ Mara Hilltop อาจยากกว่าการเขียน skill เพิ่มอีกตัว
    • reel สไตล์ MTV ที่ตัดเร็วเกินไปไม่ใช่ทิศทางที่ต้องการ
  • โค้ดเปิดเผยไว้ที่ github.com/Simbastack-hq/framedex และเปิดรับ PR กับ issue อยู่

1 ความคิดเห็น

 
GN⁺ 1 시간 전
ความคิดเห็นจาก Hacker News
  • ดูเหมือน Claude จะเลือก URL ที่แชร์ตอนเขียนบทความผิด ถ้าโฮมโฟลเดอร์ไม่ได้ถูกเปิดออกสู่ภายนอก ~/.claude/skills/video-index/ ก็จะเข้าถึงไม่ได้ เลยสงสัยว่าจะช่วยแชร์ ไฟล์ Skill ได้ไหม

    • เหมือนเห็น เวอร์ชันสมัยใหม่ ของสถานการณ์คลาสสิกที่เพื่อนซึ่งเพิ่งเริ่มเขียนโปรแกรมส่งมาว่า “ฉันทำเว็บแอปเสร็จแล้ว อยากดูไหม? อยู่นี่ไง: http://localhost:8080”
    • อ๊ะ ผมพลาดเอง กำลังแก้อยู่ และแชร์ ไฟล์ Skill ได้ด้วย ขอเวลา 5 นาที
  • อัปเดต: รีบสร้างรีโพนี้ขึ้นมาแล้ว - https://github.com/Simbastack-hq/framedex
    ไลเซนส์เป็น MIT และยังไม่ได้ทดสอบอย่างจริงจังหลังทำให้มันใช้งานได้ทั่วไป เดี๋ยวจะกลับไปไล่ดูให้เรียบร้อยและเพิ่มอัปเดตอีก
    TODO ใหญ่มีสองอย่างคือ 1) ใช้อินเด็กซ์นี้ร่วมกับความช่วยเหลือของ Claude เพื่อให้ตัดต่อวิดีโอใน DaVinci Resolve ได้เร็วขึ้น 2) ตอนนี้ประมวลผลแค่วิดีโอ แต่จะขยายให้เข้าใจภาพนิ่งหลายพันภาพในกล้องได้ด้วย

  • ยังไม่ค่อยเข้าใจว่าทำไมต้องมี การสลับหน่วยความจำ เยอะขนาดนั้น พอคิดถึงแบนด์วิดท์หน่วยความจำที่ต้องใช้แล้ว มันอาจทำให้อายุ SSD ลดลงค่อนข้างเร็ว
    โมเดล Gemma 4 31B แบบควอนไทซ์ 4 บิตควรจะอยู่ราว ๆ 19GiB มากกว่า 28.4GiB [1] ผมไม่ได้ป้อนภาพบ่อยนัก เลยไม่แน่ใจว่าตอนใส่เข้า context ต้องใช้หน่วยความจำเพิ่มเท่าไร แต่ไม่น่าน่าจะเกิน 10GiB
    ดูจาก Activity Monitor แล้ว เหมือนมีทั้ง Handy กับ VM สำหรับ Claude Code ที่โหลดโมเดลอยู่ แถมยังมีแอป Electron หลายตัวเปิดอยู่ด้วย ดังนั้นตัวต้นเหตุน่าจะอยู่ฝั่งนั้นมากกว่า ถ้าโน้ตบุ๊กเริ่มถูดิสก์หนัก ๆ แอปพวกนั้นก็คงค้างและใช้งานไม่ได้อยู่ดี
    [1] https://huggingface.co/mlx-community/gemma-4-31b-it-4bit

    • ใช่ ตอนถ่ายสกรีนช็อตผมกำลังทำอย่างอื่นบนโน้ตบุ๊กอยู่ด้วย เลยจัดให้โล่งกว่านี้ได้
      ถึงอย่างนั้นมันก็ยังกระตุกนิดหน่อย แต่ก็น่าประทับใจที่ยังทำงานอย่างอื่นต่อได้ แม้จะเปิดแท็บไว้เยอะในเบราว์เซอร์ Brave
  • ไม่แน่ใจว่าคุณรู้ไหมว่าสิ่งนี้มีอยู่แล้ว ค่อนข้างดี และไม่ได้กิน สว็อป 50GB ด้วย
    https://github.com/iliashad/edit-mind

  • เจ๋งดี อยากมีแรมพอสำหรับรันโมเดลในเครื่องเหมือนกัน ช่วงไม่กี่สัปดาห์ที่ผ่านมา ผมเพิ่งทำอะไรคล้ายกันมาก โดยทำเป็นแอป Electron ในเครื่องที่ใช้ Whisper กับ ffmpeg และเพิ่ม semantic search กับ embedding เพื่อคุยกับวิดีโอ
    ส่วนการวิเคราะห์ภาพ การแท็ก และการแชตกับวิดีโอ ใช้การติดต่อกับ Claude เลยสงสัยว่าโปรเจกต์นี้ส่งแค่ภาพเดียวหรือเปล่า ของผมใช้ อัลกอริทึมตรวจจับฉาก แบบปรับเองเพื่อหาเฟรมหลายภาพที่ต่างกันในแต่ละวิดีโอ แล้วส่งพร้อมซับไตเติลไปให้ Claude ในคำขอเดียว ตรงนี้เป็นส่วนที่แพงที่สุดแน่นอน ถ้าใช้ Sonnet 4.6 สำหรับวิเคราะห์และ Haiku สำหรับแท็ก จะตกประมาณ 1 ดอลลาร์ต่อวิดีโอความยาว 1 ชั่วโมง และถ้าทำในเครื่องก็น่าจะช้า

    • ไม่ใช่ภาพเดียว แต่ส่ง 5 เฟรม ต่อคลิปพร้อมบางส่วนของซับไตเติลในคำขอเดียว ดังนั้นส่วนที่รวมหลายเฟรมกับซับไตเติลในครั้งเดียวก็ทำเหมือนกัน
      แต่จุดอ่อนคือวิธีเลือกเฟรม การตรวจจับฉากน่าจะช่วยได้แน่ และเป็นอันดับหนึ่งในโรดแมป อยากรู้ว่าจะช่วยแชร์วิธีเลือกเฟรมจากการตรวจจับฉากของคุณได้ไหม
      ผมเลือกไม่ใส่ vector search และคงความเรียบง่ายไว้ด้วยไฟล์ Markdown ทั่วไปที่พกพาได้มากกว่า ข้อดีคือย้าย SSD แล้วความรู้ก็ย้ายไปกับไฟล์ ไม่มีอินเด็กซ์ให้ต้องซิงก์ และเป็นข้อความธรรมดาที่อยู่ได้นานกว่าเครื่องมือ แต่แนวทางอีกแบบที่คุณพูดมาก็น่าสำรวจเหมือนกัน
    • ถ้าอยากลดค่าใช้จ่าย ลองใช้โมเดลของ OpenRouter ได้ Gemma 4 31B ราคา 0.12 ดอลลาร์ต่ออินพุต 1 ล้านโทเคน และ 0.37 ดอลลาร์ต่อเอาต์พุต 1 ล้านโทเคน ส่วน Haiku อยู่ที่ 1 ดอลลาร์ต่ออินพุต 1 ล้านโทเคน และ 5 ดอลลาร์ต่อเอาต์พุต 1 ล้านโทเคน
      ยังมีตัวเลือกดี ๆ อื่นอีก Gemini 3.1 Flash Lite ดีมากสำหรับงานแบบนี้ แต่ไม่ใช่ Gemini 3.5 Flash อันนั้นราคาไม่ค่อยคุ้ม
      https://openrouter.ai/google/gemma-4-31b-it
  • มีคำถามสองข้อ

    1. อยากรู้ว่า search index คืออะไร
    2. ในตัวอย่าง description.md มีรายการอย่าง faces -> cluster_id อยู่ อยากรู้ว่ามาจาก face index ของ DaVinci Resolve หรือเปล่า สำหรับคอลเลกชันภาพถ่าย ข้อมูลอย่างใบหน้า+ชื่อ สถานที่ ฯลฯ สำคัญมาก แต่ LLM ทั่วไปจัดการเรื่องพวกนี้ได้ไม่ค่อยดี
      1. มันก็แค่ไฟล์ sidecar แบบข้อความธรรมดา .description.md ที่วางไว้ข้างวิดีโอแต่ละคลิป
        ทีหลังตอนคุยระดมความคิดกับ Claude เช่น “ฉันอยากทำวิดีโอห้องพักหรูของลอดจ์” ก็สามารถให้มันค้นในไฟล์และรู้ได้ว่าวิดีโอไหนน่าจะช่วยได้
        ยังมีไฟล์ระดับรากของโฟลเดอร์ที่รวบรวมคำอธิบายข้อความไว้เพื่อให้ค้นง่ายขึ้นด้วย ผมแปะภาพตัวอย่างไว้ในบล็อกแล้ว - https://blog.simbastack.com/_media/gvcycx2n.png
      2. ไม่ได้ดึงมาจาก DaVinci Resolve เลย Framedex เป็น pipeline แบบสแตนด์อโลน และ Resolve ไม่ได้เกี่ยวข้อง
        เรื่องใบหน้าใช้ insightface ตรวจจับด้วย RetinaFace จากแพ็กโอเพนซอร์ส buffalo_l และรันในเครื่องบน CPU จากนั้นตรวจจับและทำ embedding ใบหน้าจากเฟรมตัวอย่างของแต่ละคลิป แล้วเขียนแถวลงใน ~/.framedex/faces.db
        พูดตามตรง ส่วนนี้ผมรู้แค่ว่ามันกำลังสะสมอยู่ใน DB ในเครื่อง แต่ยังไม่ได้ทดสอบจริงจังว่ามันทำงานดีแค่ไหน เดี๋ยวจะตรวจให้ละเอียดเร็ว ๆ นี้
        มองกว้างกว่านั้น framedex เลยตั้งใจไม่ให้ LLM รับหน้าที่จัดการใบหน้าหรือสถานที่ ใบหน้าถูกจัดการด้วย embedding ของ insightface / ArcFace ทำให้เทียบข้ามคลิปได้แบบชัดเจน ส่วนโมเดลภาพให้แค่จำนวนคนคร่าว ๆ และไม่พยายามระบุว่าเป็นใคร
        สถานที่จัดการด้วย EXIF GPS ผ่าน exiftool และ reverse geocoding ของ Nominatim/OpenStreetMap มันเป็นเมทาดาทาที่แน่น ไม่ใช่การเดา
        LLM ทำเฉพาะสิ่งที่มันถนัด เช่น คำบรรยายฉาก บรรยากาศ ประเภทช็อต คีย์เวิร์ด และคะแนนเก็บ/ทบทวน/ทิ้ง แม้ส่วนคะแนนสุดท้ายจะยังเถียงกันได้อยู่บ้าง
  • ผมเคยลองรัน Gemma บน ThinkPad ปี 2015 เพื่อทำงานคล้าย ๆ กัน โชคดีที่อัปเกรดหน่วยความจำได้ ไม่งั้นคงทรมานพอตัว
    จะไม่โกหกเลย พอรัน llama.cpp แล้วพัดลมหมุนเต็มสปีด แต่ถึงอย่างนั้นมันก็ทำงานได้และงานก็เสร็จ

    • ผมสับสนกับคำว่า “พัดลมหมุนเต็มสปีด” ตลอด ถ้าคุณอยากให้การคำนวณเสร็จเร็วที่สุด สุดท้ายมันก็ต้องสร้างและระบายความร้อนออกมาให้มากขึ้นไม่ใช่หรือ
      บางครั้งดูเหมือนใช้เป็นอุปมาเรื่อง “ใช้ทรัพยากร 100%” และในที่นี้ก็น่าจะหมายถึงแบบนั้น แต่ในบริบทอื่นก็คงมีคนพูดเป็นข้อบ่นจริง ๆ อยู่เหมือนกัน
  • ผมว่าเจ้าของที่พักบน Airbnb ส่วนใหญ่คงไม่เห็นด้วยกับคำพูดที่ว่า “วิดีโอ Generative AI ไม่มีที่ยืนในแบรนด์ท่องเที่ยวของจริง”
    ส่วนคำว่า “ถูกตรึงกางเขนบน TripAdvisor” ผมเองก็ไม่เข้าใจจริง ๆ ว่าโฮสต์ Airbnb ที่ลงที่พักปลอมรอดมาได้อย่างไร

    • พูดตามตรง ผมก็คิดเรื่องนี้หนักเหมือนกัน แม้จะบริหารซาฟารีลอดจ์อยู่ แต่ก็ไม่อยากไปทาง วิดีโอ AI คุณภาพต่ำ
      ขณะเดียวกัน วิดีโอจริงก็ใช้เวลาและทำให้ทั้งกระบวนการช้าลง
  • ผมมองว่าแอป AI แบบ B2C มีข้อจำกัดเชิงโครงสร้าง เพราะสร้าง บริบทที่ปรับให้เป็นส่วนตัว ได้ยาก
    ถ้ามีโมเดลในเครื่องที่เก่งพอจะเก็บบริบท ค้นคว้า แท็ก ฯลฯ แบบตั้งต้นในสเกลใหญ่ได้ นี่อาจเป็นจุดเปลี่ยนสำคัญ

    • ผมทำแอป AI แบบ B2C ที่รันในเครื่องทั้งหมดสำหรับเปลี่ยนชื่อไฟล์ตามบริบท และเปิดให้ใช้ฟรี
      ถ้าใส่สกรีนช็อตหลายภาพเข้าไป มันจะพยายามตั้งชื่ออย่างฉลาดตามสิ่งที่อยู่ในนั้น เช่นเดียวกับวิดีโอ PDF และอื่น ๆ
      แต่ก็อย่างที่คุณว่า ผมไม่ได้พยายามเก็บเงินเลย เพราะรู้สึกว่าเดี๋ยว Apple ก็คงใส่มาเป็นฟีเจอร์เอง
      https://finalfinalreallyfinaluntitleddocumentv3.com/
    • เห็นด้วยเต็มที่ ตรงนี้ผมกับ Claude ระดมความคิดร่วมกันและทำการค้นคว้ากับลองผิดลองถูกนั้นไปแล้ว
      แต่ผมคิดว่าอีกไม่นาน พอเอเจนต์ฉลาดพอ เพื่อนที่ไม่ใช่สายเทคนิคก็แค่พูดว่า “ช่วยจัดระเบียบวิดีโอในโฟลเดอร์นี้ให้ฉันเข้าใจได้หน่อย” แล้วมันจะทำให้ได้เลย
    • ผมสงสัยจริง ๆ ว่า โมเดลในเครื่อง คือสิ่งที่จะแก้ปัญหานี้ได้หรือเปล่า API ของโมเดลที่ไม่เก็บสถานะก็ให้ข้อดีแบบเดียวกันได้ไม่ใช่หรือ? ผมเข้าใจว่ารันในเครื่องอาจ “ถูกกว่า” ตามปริมาณการใช้งาน แต่เราก็จ่ายพรีเมียมเพื่อเช่าพื้นที่เก็บข้อมูลและทรัพยากรประมวลผลบนคลาวด์กันมานานแล้ว