- เพื่อค้นหาช่วงเวลาที่ต้องการโดยไม่ต้องกลับไปดูวิดีโอปั่นจักรยานจาก GoPro ทั้ง 2,207 คลิปทีละคลิป จึงจัดทำดัชนีและค้นหาวิดีโอด้วย โมเดล ML แบบโลคัล และส่งคลิปที่ดีที่สุดไปยังไทม์ไลน์ DaVinci Resolve ได้ทันที
- ใช้เดสก์ท็อปแอปเวอร์ชันที่ปรับแต่งมาสำหรับ Apple Silicon อย่าง M1 Max โดยสามารถบอกเอเจนต์แบบโต้ตอบให้หาฉากที่ต้องการ แล้วส่งตรงไปยังไทม์ไลน์ตัดต่อได้
- สร้าง ไปป์ไลน์การทำดัชนี ที่ประกอบด้วยการถอดเสียงด้วย OpenAI Whisper, การวิเคราะห์เฟรม (จดจำใบหน้า·ตรวจจับวัตถุ·อ่านข้อความบนหน้าจอ·อธิบายฉาก) และเวกเตอร์ DB embeddings
- การจัดทำดัชนีวิดีโอ 628 คลิป (668.68GB, 15 ชั่วโมง 13 นาที 18 วินาที) ใช้เวลาประมวลผลรวม 67 ชั่วโมง 40 นาที 42 วินาที หรือช้ากว่าเวลาเล่นจริงประมาณ 4.4 เท่า
- ทุกขั้นตอนประมวลผลบน GPU/CPU ในเครื่อง ทำให้ค้นหาคลังวิดีโอขนาดใหญ่ได้ โดยไม่ต้องพึ่งคลาวด์ และโครงการยังอยู่ระหว่างพัฒนา
ภาพรวมและแรงจูงใจของโปรเจกต์
- เก็บ วิดีโอ GoPro 2,207 คลิป ที่ถ่ายจากการเดินทางปั่นจักรยานไว้ใน SSD ลูกเดียว และต้องการค้นหาช่วงเวลาที่น่าประทับใจในนั้น แต่ไม่มีเวลาพอจะดูทั้งหมดซ้ำอีกครั้ง
- แม้จะบันทึกแทบทุกช่วงเวลาด้วย GoPro แต่การหาช่วงที่ดีต้องดูวิดีโอทั้งหมดจนจบ จึงไม่มีประสิทธิภาพ
- ประวัติการปั่น: ปี 2024 Casablanca→Imsouane (5 วัน มากกว่า 470KM), ปี 2023 Kenitra→Tangier (1 วันครึ่ง 220KM), และมีทริปปั่นเสือภูเขาคั่นระหว่างนั้น
- เพื่อแก้ปัญหานี้จึงสร้างโปรเจกต์ edit-mind ขึ้นมาเอง
- GitHub Repo : https://github.com/IliasHad/edit-mind
เหตุผลที่ใช้เดสก์ท็อปแอป
- เลือกใช้เดสก์ท็อปแอปเวอร์ชันที่ ปรับแต่งสำหรับ Apple Silicon ซึ่งสามารถค้นหาช่วงเวลาที่ต้องการผ่านเอเจนต์แบบโต้ตอบ และส่งไปยังไทม์ไลน์ตัดต่อของ DaVinci Resolve ได้โดยตรง
- เวอร์ชัน Docker ไม่สามารถเข้าถึง GPU ของ M1 Max ได้ จึงใช้ประสิทธิภาพ GPU ไม่ได้
- เดสก์ท็อปแอปใช้กระบวนการทำดัชนีคล้ายกับเวอร์ชัน source-available
กระบวนการทำดัชนี
- เมื่อเลือกโฟลเดอร์ในเดสก์ท็อปแอป ระบบจะสแกนเฉพาะ วิดีโอที่ขึ้นต้นด้วย
GXเพื่อแยกจากวิดีโอจากโทรศัพท์มือถือ - หากมีแทร็กเสียง จะถอดเสียงวิดีโอทั้งหมดด้วย โมเดล OpenAI Whisper
- จากนั้นรัน ไปป์ไลน์วิเคราะห์เฟรม โดยแบ่งวิดีโอเป็นฉากย่อยทุก 1 วินาที (1fps)
- รวมปลั๊กอินจดจำใบหน้าที่ใช้ข้อมูลใบหน้าแบบกำหนดเอง, การตรวจจับวัตถุ, ข้อความบนหน้าจอ, ประเภทช็อต, และคำอธิบายฉาก
- นำข้อมูลใบหน้า·บทถอดเสียง·คำอธิบายของแต่ละฉากไป ฝังเวกเตอร์ เป็นข้อความเอกสารและเก็บไว้ใน local vector DB
- เฟรมของฉากจะถูกฝังลงใน visual embedding vector DB collection สำหรับการค้นหารูปภาพ และเสียงของฉากก็ประมวลผลในลักษณะเดียวกัน
- สุดท้ายจะได้ vector DB 3 collections ที่เก็บข้อมูลของวิดีโอ
- รวมถึงเมทาดาทาตำแหน่ง, ชื่อกล้อง, ใบหน้าที่จดจำได้, วัตถุที่ตรวจพบ, ข้อความบนหน้าจอ, บทถอดเสียง, คำอธิบายของแต่ละฉาก เป็นต้น
ตัวชี้วัดประสิทธิภาพ
- เป็นค่าที่วัดจากการจัดทำดัชนีวิดีโอด้วย GPU และ CPU ของอุปกรณ์ และเนื่องจากโครงการยังอยู่ระหว่างพัฒนา ตัวเลขเหล่านี้จึงยังไม่ใช่ค่าขั้นสุดท้าย
-
ตัวเลขรวม
- วิดีโอที่จัดทำดัชนีแล้ว: 628 คลิป
- ขนาดวิดีโอรวม: 668.68 GB
- ความยาววิดีโอรวม: 15 ชั่วโมง 13 นาที 18 วินาที
- เวลาประมวลผลรวม: 67 ชั่วโมง 40 นาที 42 วินาที
- ความเร็วเทียบเวลาเล่น: 0.22 เท่า หรือช้ากว่าเวลาเล่นจริงประมาณ 4.4 เท่า
- จำนวนเฟรมที่วิเคราะห์: 57,537 เฟรม
-
การวิเคราะห์รายขั้นตอน (เวลารวม / ค่าเฉลี่ยต่อวิดีโอ / สัดส่วนการประมวลผล)
- การถอดเสียง (Transcription): 25 ชั่วโมง 12 นาที 54 วินาที / 2 นาที 25 วินาที / 37.3%
- การวิเคราะห์เฟรม (Frame analysis): 24 ชั่วโมง 55 นาที 42 วินาที / 2 นาที 23 วินาที / 36.8%
- การสร้างฉาก (Scene creation): 48 นาที 0 วินาที / 5 วินาที / 1.2%
- การฝังข้อความ (Text embedding): 36 นาที 42 วินาที / 5 วินาที / 0.9%
- การฝังภาพ (Visual embedding): 11 ชั่วโมง 49 นาที 17 วินาที / 1 นาที 9 วินาที / 17.5%
- การฝังเสียง (Audio embedding): 4 ชั่วโมง 18 นาที 7 วินาที / 27 วินาที / 6.4%
ฟังก์ชันการค้นหา
- ชอบใช้ แชตผู้ช่วย เพื่อถามเกี่ยวกับวิดีโอ และมีตัวเลือกให้ส่งผลลัพธ์ไปยังไทม์ไลน์ตัดต่อของ DaVinci Resolve ได้ทันที
- หากใช้โมเดล Qwen2.5-VL-7B-Instruct ในการจัดทำดัชนีโหมดขั้นสูง จะได้ข้อมูลดัชนีที่เข้าใจและบรรยายวิดีโอได้ดีกว่า แต่ความเร็วในการจัดทำดัชนีจะช้าลง
- ด้วยวิธีนี้จึงสามารถจัดทำดัชนีวิดีโอ GoPro, ค้นหาและส่งฉากที่ต้องการ แล้วนำไปสร้างวิดีโอจากคลิปที่ดีได้
การเปรียบเทียบฮาร์ดแวร์และสถานะการพัฒนา
- เมื่อรันบน NVIDIA GPU อย่าง RTX 3060 (VRAM 12GB) จะเร็วกว่า M1 Max
- โปรเจกต์ยังอยู่ระหว่างการพัฒนา และกำลังปรับปรุงทั้งความแม่นยำและความเร็วอย่างต่อเนื่อง
ตัวอย่างพรอมป์ที่ใช้
- "หาคลิปทั้งหมดที่มีเสียงหมาเห่าขณะที่ฉันกำลังปั่นจักรยาน"
- "สร้างไฮไลต์รีลจากช่วงเวลาที่วิวสวยที่สุดและน่าสนใจที่สุดในการทริปจักรยาน"
- "แสดงช่วงเวลาการขี่มุมมองบุคคลที่หนึ่งที่เร็วที่สุดพร้อมเสียงลม แล้วส่งไปยัง DaVinci Resolve โดยลบฉากซ้ำออก"
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
น่าสนใจที่เมื่อไม่กี่วันก่อนก็มีคนทำงานแบบเดียวกันนี้ด้วยเทคนิคคล้ายกันบน เครื่องแทบจะเหมือนกัน และโพสต์นั้นก็ขึ้นหน้าแรกของ HN เหมือนกัน
https://news.ycombinator.com/item?id=48222733
https://blog.simbastack.com/indexed-a-year-of-video-locally/
ไม่เคยเห็นโปรเจ็กต์นี้มาก่อน แต่น่าสนใจดี
ตอนนี้กำลังลองเพิ่มฟีเจอร์เกี่ยวกับรูปภาพให้ Framedex อยู่ เป็นช่วงเวลาที่น่าตื่นเต้นมากเพราะตอนนี้เราทำอะไรแบบโลคัลได้เยอะจริงๆ
ทั้งบทความและตัวโปรเจ็กต์ก็ดีมาก และ โมเดลโลคัล ก็กำลังดีขึ้นเรื่อยๆ
งานแบบนี้น่าจะไปลงที่ LLM แบบโลคัล
คือรัน LLM ที่เร็ว เล็ก และทรงพลังบนเครื่องตัวเองเพื่อทำดัชนีข้อมูลส่วนตัวอย่างรูป วิดีโอ เอกสาร แล้วเสริมข้อมูลกำกับ จากนั้นก็แท็กด้วยเมตะดาต้าที่เสริมแล้ว
ถ้าอยากจัดกลุ่มตามบุคคลก็แค่ค้นจากเมตะดาต้าที่แท็กไว้แล้วจัดกลุ่ม ถ้าอยากหารูปจากคำบรรยายก็ใช้เมตะดาต้าที่แท็กไว้เหมือนกัน ถ้าอยากจัดระเบียบอะไรก็ตามก็ใช้เมตะดาต้าที่แท็กไว้นี่แหละ
หวังว่านี่จะช่วยยุติความโกลาหลของการจัดไฟล์ได้
พอเห็นคำว่า “ถ้ารันเฟรมวิเคราะห์ไปป์ไลน์ มันจะแบ่งวิดีโอออกเป็นฉากแยกกัน (ทุก 1 วินาที หรือ 1fps)” กับ “วิเคราะห์เฟรมไป 57,537 เฟรม” ก็พอเข้าใจได้
ตัวเลขนี้ฟังดูสมจริงกว่า “669GB” มาก และขนาดรวมของเฟรมที่ประมวลผลจริงน่าจะอยู่ราว 10~30GB
ถ้าจะทำเองที่บ้านก็แปลว่าต้องคำนวณความคุ้มค่าในเชิงปฏิบัติเสมอ ไม่ได้จะดูแคลนงานนี้นะ
ถ้า “เวลาในการคำนวณรวม 67 ชั่วโมง 40 นาที 42 วินาที” ก็สงสัยว่ามีตัวเลือกแบบเสียเงินที่ทำให้กระบวนการนี้เร็วขึ้นไหม แค่เช่า GPU instance ก็พอหรือเปล่า?
เท่าที่รู้ การได้ผลลัพธ์ที่แม่นยำไม่ได้จำเป็นต้องใช้คุณภาพต้นฉบับเต็มทั้งหมด และจากการทดลองก็ออกมาแบบนั้น
จนถึงตอนนี้ NVIDIA GPU อย่าง RTX 3060 ที่มี VRAM 12GB เร็วกว่า M1 Max มาก และตอนนี้ก็ยังปรับแต่งทั้งความเร็วและความแม่นยำต่อไปอยู่
ฟีเจอร์ที่สนุกกว่าที่คิดคือ Google Photos กับ Apple Photos ส่ง รูปความทรงจำและชุดรวมภาพ จากช่วงเวลาต่างๆ ในชีวิตของฉันและลูกๆ ตลอด 10 ปีที่ผ่านมา
คิดว่าในอนาคต AI จะทำเป็นวิดีโอรวมสั้นๆ ที่ดูดีได้ง่ายขึ้นเรื่อยๆ เลยค่อนข้างมองบวกกับการถ่ายวิดีโอเด็กๆ ให้มากขึ้น
ฉันลองทดลองเล็กๆ ในการสร้างวิดีโอคล้าย Spotify Wrapped และดูวิดีโอตัวอย่างได้ที่นี่ https://github.com/IliasHad/edit-mind/tree/expirement/year-i...
อีกไม่กี่ปีคงได้เห็นอะไรประมาณ “ดูจักรยานราคาประหยัดรุ่นใหม่ล่าสุดจาก BIKE BRAND สิ จำได้ไหมเมื่อก่อนคุณเคยขี่จักรยานของ BIKE BRAND”
DaVinci 21 มีฟีเจอร์ทำดัชนีในตัวชื่อ AI IntelliSearch
ไม่ได้จะดูแคลนงานนี้นะ แต่ตอนนี้มันเป็นฟีเจอร์ที่ผู้ใช้จำนวนมากเข้าถึงได้แล้ว ชื่อมี AI อยู่ด้วย เลยเดาว่าน่าจะจำกัดเฉพาะผู้ใช้ Studio
แต่สงสัยว่ามันอัปโหลดวิดีโอขึ้นคลาวด์หรือประมวลผลแบบโลคัล
แล้วก็สงสัยว่าสามารถให้ ข้อมูลใบหน้าแบบกำหนดเอง เพื่อช่วยติดป้ายกำกับใบหน้าในวิดีโอได้ไหม
เหมือน Adobe Premiere Pro ก็มีฟีเจอร์คล้ายกัน แต่เท่าที่รู้เป็นการประมวลผลบนคลาวด์
ทำได้ดีมาก
แต่ยังไม่ค่อยเข้าใจว่าผ่านเอเจนต์แล้วมันสร้างรีลอย่างไร
มันเป็นอะไรประมาณ การเรียกใช้เครื่องมือ AI ที่รับลิงก์รูปแล้วไปทำรีลด้วยเครื่องมือตัดต่อวิดีโอตัวไหนสักตัวหรือเปล่า? หรือเป็นการตัดช่วงเวลาก่อนและหลัง timestamp ที่ดึงจากดัชนีด้วยคำค้นเฉพาะแล้วเอามาต่อกัน?
พอส่งคำขอให้เอเจนต์ โมเดล Ollama จะตีความคำขอและใช้เครื่องมือค้นหาที่มีอยู่ โดยค้นได้จากข้อความถอดเสียง ใบหน้า ข้อมูลภาพ เสียง หรือผสมกัน
คล้ายกับที่ Claude หรือ ChatGPT ใช้เครื่องมือค้นเว็บเพื่อหาข้อมูลออนไลน์
จากนั้นก็ใช้ Ollama คัดฉากวิดีโอให้เหลือฉากที่แม่นยำกว่าและซ้ำกันน้อยกว่า แล้วส่งผลลัพธ์นั้นไปที่ DaVinci Resolve API เพื่อสร้างไทม์ไลน์จากคลิปวิดีโอ
ใช้กับการรวมคลิปโป๊ได้ไหม?
หรือไม่ก็ต้องใช้โมเดลปลดเซ็นเซอร์ แต่ไม่รู้ว่าฝั่ง vision ใช้ได้ไหม
อาจอยากเพิ่มอะไรอย่างการ fine-tune YOLO สำหรับตรวจจับฉากและจดจำใบหน้าด้วย
ตอนฉันเอาโปรเจ็กต์ไปลง Reddit ก็โดนถามแบบเดียวกัน
เพราะ DeepSeek รันแบบโลคัลได้ มันจะมีประโยชน์กับงานแบบนี้ไหม?
ฉันเพิ่งรู้แล้วตกใจว่า CPU M1 Max เป็น ARM/SoC และยังพอเทียบกับ Intel i9 Gen 11 ได้
ฉันเข้าใจถูกไหม? แล้ว Windows ARM จะได้ประสิทธิภาพใกล้กันบน CPU แบบนี้หรือเปล่า?
อ้างอิง: https://www.cpubenchmark.net/compare/4585vs4245/Apple-M1-Max...
หนึ่ง มันมีหน่วยความจำแบบ “รวมศูนย์” เลยใช้หน่วยความจำระบบทั้งหมดเป็น VRAM ได้ และสอง มันมีตัวเร่ง AI เฉพาะทางในตัว
ด้วยสองอย่างนี้ Apple Silicon จึงอาจเหนือกว่า CPU ทั่วไปอย่างมากใน เวิร์กโหลดโมเดล AI แบบนี้
ส่วนฝั่ง Windows ARM ทำได้แค่ไหนฉันไม่แน่ใจ แต่รู้ว่าใช้ชิป Qualcomm Snapdragon
M1 Max มีแบนด์วิดท์หน่วยความจำ 400GB/s ส่วน Snapdragon X2 Elite ตัวท็อปล่าสุดยังอยู่ที่ 228GB/s
ด้วยบัสที่กว้างกว่าและ latency ที่ต่ำกว่า มันจึงเทียบกันไม่ติดเลย
เพราะยังไม่เคยลองโปรเจ็กต์นี้บนเครื่อง Windows หรือเครื่องที่คอนฟิกแบบนั้น
https://archive.is/O6CLQ
ฉันพยายามจะอ่านบทความ แต่เว็บไซต์หลักขึ้น Cloudflare error น่าเสียดาย
ลิงก์คือ https://iliashaddad.com/blog/i-indexed-669-gb-of-my-gopro-vi...