2 คะแนน โดย GN⁺ 4 일 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เพื่อค้นหาช่วงเวลาที่ต้องการโดยไม่ต้องกลับไปดูวิดีโอปั่นจักรยานจาก 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 ความคิดเห็น

 
GN⁺ 4 일 전
ความคิดเห็นจาก 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 ก็พอหรือเปล่า?

    • “669GB” คือ ขนาดรวมของฟุตเทจต้นฉบับทั้งหมด ที่ใช้ประมวลผลวิดีโอ และเพื่อให้เร็วขึ้นเลยลดแต่ละเฟรมลงมาเป็น 720p
      เท่าที่รู้ การได้ผลลัพธ์ที่แม่นยำไม่ได้จำเป็นต้องใช้คุณภาพต้นฉบับเต็มทั้งหมด และจากการทดลองก็ออกมาแบบนั้น
      จนถึงตอนนี้ 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...
    • ใช้ทั้ง Android และ iOS เลยเหรอ หรือมีข้อดีอย่างอื่นจากการเก็บมีเดียส่วนตัวไว้ทั้งสองฝั่ง?
    • โอเคเหรอที่ Google เอาข้อมูลเด็กๆ ไปฝึกโมเดลกับ อัลกอริทึมโฆษณา?
      อีกไม่กี่ปีคงได้เห็นอะไรประมาณ “ดูจักรยานราคาประหยัดรุ่นใหม่ล่าสุดจาก BIKE BRAND สิ จำได้ไหมเมื่อก่อนคุณเคยขี่จักรยานของ BIKE BRAND”
  • DaVinci 21 มีฟีเจอร์ทำดัชนีในตัวชื่อ AI IntelliSearch
    ไม่ได้จะดูแคลนงานนี้นะ แต่ตอนนี้มันเป็นฟีเจอร์ที่ผู้ใช้จำนวนมากเข้าถึงได้แล้ว ชื่อมี AI อยู่ด้วย เลยเดาว่าน่าจะจำกัดเฉพาะผู้ใช้ Studio

    • อันนั้นฉันยังไม่ได้ลองดู
      แต่สงสัยว่ามันอัปโหลดวิดีโอขึ้นคลาวด์หรือประมวลผลแบบโลคัล
      แล้วก็สงสัยว่าสามารถให้ ข้อมูลใบหน้าแบบกำหนดเอง เพื่อช่วยติดป้ายกำกับใบหน้าในวิดีโอได้ไหม
      เหมือน Adobe Premiere Pro ก็มีฟีเจอร์คล้ายกัน แต่เท่าที่รู้เป็นการประมวลผลบนคลาวด์
  • ทำได้ดีมาก
    แต่ยังไม่ค่อยเข้าใจว่าผ่านเอเจนต์แล้วมันสร้างรีลอย่างไร
    มันเป็นอะไรประมาณ การเรียกใช้เครื่องมือ AI ที่รับลิงก์รูปแล้วไปทำรีลด้วยเครื่องมือตัดต่อวิดีโอตัวไหนสักตัวหรือเปล่า? หรือเป็นการตัดช่วงเวลาก่อนและหลัง timestamp ที่ดึงจากดัชนีด้วยคำค้นเฉพาะแล้วเอามาต่อกัน?

    • ฉันใช้ RAG และทำดัชนีทุกฉากวิดีโอแยกไว้ใน ฐานข้อมูลเวกเตอร์
      พอส่งคำขอให้เอเจนต์ โมเดล Ollama จะตีความคำขอและใช้เครื่องมือค้นหาที่มีอยู่ โดยค้นได้จากข้อความถอดเสียง ใบหน้า ข้อมูลภาพ เสียง หรือผสมกัน
      คล้ายกับที่ Claude หรือ ChatGPT ใช้เครื่องมือค้นเว็บเพื่อหาข้อมูลออนไลน์
      จากนั้นก็ใช้ Ollama คัดฉากวิดีโอให้เหลือฉากที่แม่นยำกว่าและซ้ำกันน้อยกว่า แล้วส่งผลลัพธ์นั้นไปที่ DaVinci Resolve API เพื่อสร้างไทม์ไลน์จากคลิปวิดีโอ
  • ใช้กับการรวมคลิปโป๊ได้ไหม?

    • ถ้าใช้แบบนั้นน่าจะต้องมี LoRA เพราะระบบปฏิเสธคอนเทนต์โป๊ค่อนข้างแรง
      หรือไม่ก็ต้องใช้โมเดลปลดเซ็นเซอร์ แต่ไม่รู้ว่าฝั่ง vision ใช้ได้ไหม
      อาจอยากเพิ่มอะไรอย่างการ fine-tune YOLO สำหรับตรวจจับฉากและจดจำใบหน้าด้วย
    • เป็นคำถามที่สำคัญนะ
    • ไม่รู้เหมือนกันว่าทำไมถึงมีคำถามนี้ตลอด
      ตอนฉันเอาโปรเจ็กต์ไปลง Reddit ก็โดนถามแบบเดียวกัน
    • ตอนก่อนหน้านี้ที่เคยลองใช้ Whisper มันฟังแค่เสียงตบกับเสียงคราง แต่ดันหลอนสร้างบทสนทนาละเอียดขึ้นมาเอง และใช้เวลาหลายนาทีกว่าจะคายออกมาทีละบรรทัด
    • ไม่แน่ใจว่าพูดประชดหรือเปล่า แต่ฉันว่าก็เป็นคำถามที่น่าสนใจ
      เพราะ 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
    • ถ้าคำว่า “เทียบได้” หมายถึงประสิทธิภาพ single-core ก็อาจพอพูดได้ระดับหนึ่ง แต่ในเรื่อง แบนด์วิดท์หน่วยความจำ M1 Max เร็วกว่าเกือบ 8 เท่า
      ด้วยบัสที่กว้างกว่าและ latency ที่ต่ำกว่า มันจึงเทียบกันไม่ติดเลย
    • สำหรับคำถามนั้น ฉันยังยืนยันหรือปฏิเสธไม่ได้
      เพราะยังไม่เคยลองโปรเจ็กต์นี้บนเครื่อง Windows หรือเครื่องที่คอนฟิกแบบนั้น
  • https://archive.is/O6CLQ
    ฉันพยายามจะอ่านบทความ แต่เว็บไซต์หลักขึ้น Cloudflare error น่าเสียดาย

    • ช่วยเช็กให้อีกทีได้ไหม? ฉันไม่ค่อยแน่ใจว่าทำไมถึงเห็น Cloudflare error
  • ลิงก์คือ https://iliashaddad.com/blog/i-indexed-669-gb-of-my-gopro-vi...