paint-brush
Gelişmiş Video Arama Oluşturma: Çerçeve Aramaya Karşı Çok Modlu Yerleştirmelerby@datastax
278

Gelişmiş Video Arama Oluşturma: Çerçeve Aramaya Karşı Çok Modlu Yerleştirmeler

DataStax10m2024/07/10
Read on Terminal Reader

Çok modlu gömme ve çerçeve aramaya bir bakış, iki gelişmiş video arama tekniği
featured image - Gelişmiş Video Arama Oluşturma: Çerçeve Aramaya Karşı Çok Modlu Yerleştirmeler
DataStax HackerNoon profile picture

Vahşi yaşamın davranışlarını inceleyen, uzak bir ormandaki kameralardan alınan yüzlerce saatlik video görüntüsünü analiz eden bir veri bilimcisini hayal edin. Veya yeni stratejiler geliştirmek için tüm sezonun maçlarından önemli oyunları belirlemesi gereken bir spor koçu. Alternatif olarak, bir belgeselin parçalarını bir araya getirmek için devasa bir video galerisinde belirli sahneleri arayan bir film yapımcısını düşünün.


Geleneksel olarak bu uzmanların tümü, saatlerce süren çekimleri manuel olarak sıralamanın zaman alıcı, hataya açık ve ezici zorluğuyla karşı karşıyadır.


Ancak yapay zeka ve makine öğrenimindeki ilerlemeler, video arama uygulamalarını önemli ölçüde dönüştürdü. Bu teknolojiler artık geniş video veri kümeleri içindeki belirli nesneleri ve olayları inanılmaz bir gelişmişlikle aramamıza olanak sağlıyor. Veri bilimcileri ve araştırmacılar, ilgili video bölümlerinin yerini olağanüstü bir hassasiyet ve verimlilikle belirleyebilir.


OpenOrigins Medya içeriğinin kaynağını belirlemek ve kullanıcıların bu içeriğin orijinalliğini tespit etmesini sağlamak için araçlar oluşturur. Birleşik Krallık merkezli şirket, tekliflerini artırmak amacıyla arşivcilerin dijital medya arşivlerindeki ilgili videoları hızlı ve verimli bir şekilde bulmalarına yönelik bir platform geliştirmeye başladı.


Amaç, gelişmiş arama yetenekleri sunarak araştırma sürecini basitleştirmek, kullanıcıların son derece büyük video veri kümelerinden belirli içerik veya özelliklere sahip görüntüleri kolayca bulmasını sağlamaktı.


OpenOrigins, gelişmiş arama algoritmaları ve kullanıcı dostu bir arayüz kullanarak platformu bu topluluk için önemli bir araç haline getirmeyi amaçladı.


OpenOrigins, bu video arama teklifini oluştururken iki teknolojik yaklaşımı değerlendirdi: görüntü yerleştirmeleri ve çok modlu yerleştirmeleri kullanarak çerçeve arama. Her seçeneğe bir göz atalım.

Video İçeriği Üzerinde Anlamsal Arama

"Geyikleri doğal ortamlarında gösteren kaç dakikalık video içeriği var?" gibi karmaşık soruları yanıtlamak için video üzerinde anlamsal aramayı etkinleştirme. temel anahtar kelime meta veri eşleşmesinin ötesinde videoların içeriğini anlayabilen ve yorumlayabilen gelişmiş arama yetenekleri gerektirir. Bunu başarmanın anahtarı? Çok modlu gömmeler.

Çok modlu yerleştirme modelleri ve çok modlu büyük dil modelleri (LLM'ler) benzer çözümler olarak görülebilir. CLIP ve Google'ın çok modlu yerleştirmeleri gibi modeller metin, resim ve video gibi veri türleri için yerleştirmeler oluşturarak anlamsal anlamı yakalayan yüksek boyutlu vektörler oluşturur. Bu, anlamsal arama, içerik alma ve benzerlik tespiti gibi uygulamalara olanak tanır.


Öte yandan, GPT-4 (çok modlu yeteneklere sahip), Flamingo ve Gemini gibi çok modlu LLM'ler, farklı veri türlerindeki içeriği anlamak ve oluşturmak için tasarlanmıştır.


Bu modeller, çok modlu girdileri (örneğin metin ve resimler) kullanarak ve çok modlu çıktılar üreterek konuşmaya dayalı yapay zeka ve içerik oluşturma gibi karmaşık görevlerde iyi performans göstererek anlamlı ve bağlamsal açıdan zengin yanıtlar sağlar.


Yerleştirme modelleri verimli arama ve erişime odaklanırken, çok modlu LLM'ler çeşitli içeriklerin oluşturulması ve anlaşılması için uygundur ve bu da onları sohbet robotları, etkileşimli asistanlar ve çok modlu etkileşimler için ideal kılar.


MultiModal Gömme Modelleri

Çok Modlu Büyük Dil Modelleri (LLM'ler)

Ana amaç

Metin ve resim gibi farklı veri yöntemlerinde arama ve almayı etkinleştirin

Birden fazla yöntemle içerik oluşturun ve anlayın

Temel Kullanım Durumu

Anlamsal arama, içerik alma ve benzerlik

Konuşmaya dayalı yapay zeka, içerik oluşturma ve diyalog sistemleri

Örnek Modeller

CLIP, Google Çok Modlu Yerleştirme Modeli

GPT-4 (multimodal özelliklere sahip), Llava, Gemini, Flamingo, LaMDA

Arama ve Alma

Hızlı, doğru arama ve benzerlik için optimize edildi

Farklı veri türlerinde kapsamlı anlayış ve üretim için optimize edilmiştir.

Uygulamalar

İçerik denetimi, öneri sistemleri, anlamsal arama

Konuşma aracıları, içerik oluşturma, çok modlu etkileşimler

Yaklaşım 1: Görüntü Yerleştirmelerle Çerçeve Arama

OpenOrigins'in incelediği ilk yöntem, görüntü yerleştirmeleri kullanarak videoların kare kare analizini içeriyordu. Bu yaklaşım, videoyu ayrı karelere böler ve bunların her biri, kullanılarak bir vektör yerleştirmeye dönüştürülür. KLİPS modelleri yerleştirme.



Şekil 1: Yaklaşım diyagramının özeti (“Learning Transferable Visual Models From Natural Language Supervision”dan uyarlanmıştır). Standart görüntü modelleri, bazı etiketleri tahmin etmek için bir görüntü özelliği çıkarıcıyı ve doğrusal bir sınıflandırıcıyı birlikte eğitirken, CLIP, bir grup (görüntü, metin) eğitim örneklerinin doğru eşleşmelerini tahmin etmek için bir görüntü kodlayıcıyı ve bir metin kodlayıcıyı birlikte eğitir. Test zamanında öğrenilen metin kodlayıcı, hedef veri kümesinin sınıflarının adlarını veya açıklamalarını yerleştirerek sıfır atışlı bir doğrusal sınıflandırıcıyı sentezler.


OpenAI tarafından geliştirilen CLIP , özel olarak etiketlenmiş görüntülere dayanan geleneksel modellerin aksine, görüntüleri doğal dil aracılığıyla anlamayı öğrenen bir yapay zeka modelidir.


CLIP, milyonlarca web görüntüsünü açıklamalarıyla birlikte inceleyerek görsel kavramları, insanların dünyayı algılama ve tanımlama biçimine benzer bir şekilde kavrar. Eğitimi, görüntüleri doğru tanımlarıyla eşleştirmeyi öğrendiği "karşılaştırmalı öğrenmeyi" içerir; bu, ona gördüklerimiz ile kullandığımız kelimeler arasındaki bağlantıyı anlayarak çeşitli görevleri yerine getirme konusunda benzersiz bir yetenek kazandırır.


Bu, CLIP'i son derece uyarlanabilir hale getirir ve görüntülerin ve dilin birlikte derinlemesine anlaşılmasını gerektiren uygulamalar için kullanışlı kılar.


Bu yerleştirmeler, semantik benzerliğe dayalı olarak metni metinle, metni görüntüyle veya görüntüyü görüntüyle eşleştirerek hızlı ve doğru aramalara olanak tanıyan bir vektör veritabanında depolanır.


Kare çıkarma, videoları belirli aralıklarla karelere ayırır. Her kare, yüksek boyutlu bir vektör temsili oluşturmak için bir görüntü yerleştirme modeli aracılığıyla işlenir. Bu vektörler, verimli benzerlik aramalarına olanak tanıyan DataStax Astra DB gibi bir vektör deposunda saklanır.


Bu yöntem, çok modlu anlamsal aramada yüksek doğruluk sunar ve belirli nesnelerin veya sahnelerin aranması için çok uygundur. Ancak özellikle uzun videolar için hesaplama açısından yoğundur ve zamansal bağlamı veya kareler arasındaki değişiklikleri kaçırabilir.

Yaklaşım 2: Google Çok Modlu Yerleştirme Nodeli ile Çok Modlu Yerleştirmeler

İkinci yaklaşım, özellikle Google'ın kullandığı çok modlu yerleştirmelerle en yeni üretken yapay zeka teknolojisinden yararlanıyor. çok modlu gömme modeli . Bu yenilikçi yöntem, kullanıcıların resim, metin veya video kullanarak video aramasına olanak tanıyarak tüm girdileri ortak bir yerleştirme alanına dönüştürür. Model, çeşitli giriş türleri için yerleştirmeler oluşturur ve bunları paylaşılan bir vektör uzayına eşler. Kullanıcılar aynı boyutlu yerleştirmelere dönüştürülmüş farklı yöntemleri kullanarak arama yapabilir.

Google MultiModal Yerleştirme Modeli: 1048* Boyut

Video için Google Cloud Vertex AI çok modlu yerleştirmeler

Google Cloud'un Vertex AI'sı video içeriğini yüksek boyutlu vektörlere dönüştüren gelişmiş video yerleştirmeleri de dahil olmak üzere güçlü çok modlu yerleştirmeler sunar. Bu 1408 boyutlu yerleştirmeler içerik denetimi, anlamsal arama ve video sınıflandırma gibi çeşitli uygulamalara olanak tanır.


Videoları sayısal olarak temsil eden bu yerleştirmeler, gelişmiş makine öğrenimi görevlerini mümkün kılarak video içeriğini aramayı, analiz etmeyi ve kategorilere ayırmayı kolaylaştırır.


Bu yerleştirmeleri entegre etmek DataStax Astra DB büyük veri kümelerinin verimli şekilde işlenmesini sağlar ve etkili erişim için sağlam arka uç desteği sağlar. Bu yaklaşım, arama sorguları için birden fazla giriş türünü destekleyerek ve gelişmiş yapay zeka yeteneklerini uygulayarak arama alaka düzeyini ve doğruluğunu artırır. Bu yöntem, büyük veri kümelerini zamansal bağlamla verimli bir şekilde yönetir ve bu da onu karmaşık arama senaryoları için mükemmel bir seçim haline getirir.


Google'ın çok modlu yerleştirmeleri ve CLIP yönteminin her biri, çok modlu verileri ortak bir yerleştirme alanına yerleştirir. Temel fark, Google'ın çok modlu yerleştirmelerinin videoyu desteklemesi, CLIP'in ise desteklememesidir.

Teknik Genel Bakış

Hem çerçeve aramalı video analizi hem de çok modlu yerleştirmelere yönelik örnekleri aydınlatmak ve uygulamak için aşağıdaki depoları bir araya getirdik. Bu örnekler, her yaklaşımın etkili bir şekilde uygulanmasına ve değerlendirilmesine yardımcı olacak pratik gösterimler ve ayrıntılı talimatlar sağlar.

Yaklaşım 1: Görüntü yerleştirmelerle çerçeve arama

Bu yaklaşımda, bir tanıtıyoruz Colab not defteri görüntü yerleştirmeleri kullanarak çerçeve arama video analizini göstermek için tasarlanmıştır. Dizüstü bilgisayar, video içeriğini ayrı karelere bölmek ve her kareyi CLIP yerleştirme modelini kullanarak analiz etmek için adım adım bir kılavuz sağlar. Bu yaklaşım, video verileri içindeki belirli nesnelerin veya sahnelerin yüksek doğrulukla aranmasına olanak tanır.


get_single_frame_from_scene işlevi, çerçeve kimliğini hesaplar ve video yakalamayı bu çerçeveye ayarlar ve onu okur:


 def get_single_frame_from_scene(scene, video_capture): frame_id = (scene[1] - scene[0]).frame_num // 2 + scene[0].frame_num video_capture.set(cv2.CAP_PROP_POS_FRAMES, frame_id) _, frame = video_capture.read() return Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))


get_frames_from_video işlevi bir videoyu işler, AdaptiveDetector'ı kullanarak sahneleri algılar ve get_single_frame_from_scene'i çağırarak her sahneden tek bir kare çıkarır ve bu kareleri bir listede saklar:


 def get_frames_from_video(video_path): res = [] video_capture = cv2.VideoCapture(video_path) content_list = detect(video_path, AdaptiveDetector()) for scene in content_list: res.append(get_single_frame_from_scene(scene, video_capture)) return res


get_image_embedding işlevi şunu kullanır: KLİP modeli belirli bir görüntü için bir yerleştirme oluşturmak, onu modelden geçirmek ve elde edilen özellik vektörünü bir kayan nokta listesi olarak döndürmek için:


 def get_image_embedding(image): inputs = clip_processor(images=image, return_tensors="pt") image_embeddings = model.get_image_features(**inputs) return list(image_embeddings[0].detach().numpy().astype(float))


Bu kod, bir Astra DB veritabanına bağlanır, vektör yerleştirmeleri olan JSON nesnelerinden oluşan bir koleksiyon oluşturur ve bu nesneleri veritabanındaki "video" koleksiyonuna ekler:


 import json from astrapy import DataAPIClient client = DataAPIClient(ASTRA_DB_TOKEN) database = client.get_database(ASTRA_DB_API_ENDPOINT) collectiondb = database.video json_embedding = [ {"id": f"{i+1}", "$vector": values} for i, values in enumerate(image_embeddings) ] response = collectiondb.insert_many(json_embedding)


OpenAI Klip yerleştirmelerini kullanarak belirli bir metni arayın:


 query_text = "men with white hair" query_embedding = get_text_embedding(query_text) result = collectiondb.find_one({}, vector=query_embedding)


Yaklaşım 2: Google çok modlu yerleştirme modeliyle çok modlu yerleştirmeler

Burada, Google'ın çok modlu yerleştirme modelini kullanarak video yerleştirmelerin nasıl oluşturulacağını ve start_offset_sec ve end_offset_sec gibi meta veri bilgileri de dahil olmak üzere bunları Astra DB'de nasıl depolayacağınızı görebilirsiniz (bkz. GitHub deposu ).


 import vertexai from vertexai.vision_models import MultiModalEmbeddingModel, Video from astrapy import DataAPIClient import streamlit as st # Initialize Vertex AI vertexai.init(project=st.secrets['PROJECT'], location=st.secrets['REGION']) # Initialize the client client = DataAPIClient(st.secrets['ASTRA_TOKEN']) database = client.get_database(st.secrets['ASTRA_API_ENDPOINT']) my_collection = database.create_collection( "videosearch", dimension=1408, metric=astrapy.constants.VectorMetric.COSINE, ) collectiondb = database.videosearch # Load the pre-trained model and video model = MultiModalEmbeddingModel.from_pretrained("multimodalembedding") video = Video.load_from_file(st.secrets['PATH']) # Get embeddings with the specified contextual text embeddings = model.get_embeddings( video=video, contextual_text="Mixed Content", dimension=1408, ) # Video Embeddings are segmented based on the video_segment_config. for video_embedding in embeddings.video_embeddings: # Check if embedding is a numpy array or a tensor and convert accordingly if isinstance(video_embedding.embedding, (list, tuple)): embedding_list = video_embedding.embedding else: embedding_list = video_embedding.embedding.tolist() embedding_data = { "metadata": { "start_offset_sec": video_embedding.start_offset_sec, "end_offset_sec": video_embedding.end_offset_sec }, "$vector": embedding_list # Ensure embedding is in list format } response = collectiondb.insert_one(embedding_data)


Burada kurulumu yapıyoruz Kolaylaştırılmış kullanıcı arayüzü Python'un basitliğini ve gücünü kullanarak minimum çabayla etkileşimli, veri odaklı web uygulamaları oluşturmaya yönelik güçlü bir araç. Ek olarak, aşağıdaki kodda belirli metin veya görseller için arama işlevini etkinleştiriyoruz:


 import vertexai from vertexai.vision_models import MultiModalEmbeddingModel, Video from vertexai.vision_models import Image as img from astrapy import DataAPIClient import streamlit as st from PIL import Image st.title("Video Search App") user_input_placeholder = st.empty() user_input = user_input_placeholder.text_input( "Describe the content you're looking for:", key="user_input" ) uploaded_file = st.file_uploader("Choose an image file that is similar you're looking for", type="png") if uploaded_file is not None: image = Image.open(uploaded_file) image_path = st.secrets['IMAGE_PATH'] image.save(image_path) saved_image = Image.open(image_path) st.image(saved_image, caption='', use_column_width=True) # Initialize Vertex AI vertexai.init(project=st.secrets['PROJECT'], location=st.secrets['REGION']) # Initialize the client client = DataAPIClient(st.secrets['ASTRA_TOKEN']) database = client.get_database(st.secrets['ASTRA_API_ENDPOINT']) collectiondb = database.videosearch # Load the pre-trained model and video model = MultiModalEmbeddingModel.from_pretrained("multimodalembedding") video = Video.load_from_file(st.secrets['PATH']) # Search action trigger if st.button("Search"): if user_input: embeddings = model.get_embeddings( contextual_text=user_input ) result = collectiondb.find_one({}, vector=embeddings.text_embedding) start_offset_value = result['metadata']['start_offset_sec'] end_offset_value = result['metadata']['end_offset_sec'] st.write("Text input result found between: " + str(start_offset_value) + "-" + str(end_offset_value)) video_file = open(st.secrets['PATH'], 'rb') video_bytes = video_file.read() st.video(video_bytes, start_time=start_offset_value) if uploaded_file is not None: embimage = img.load_from_file(image_path) embeddingsimg = model.get_embeddings( image=embimage ) imgresult = collectiondb.find_one({}, vector=embeddingsimg.image_embedding) start_offset_value = imgresult['metadata']['start_offset_sec'] end_offset_value = imgresult['metadata']['end_offset_sec'] st.write("Image input result found between: " + str(start_offset_value) + "-" + str(end_offset_value)) video_file = open(st.secrets['PATH'], 'rb') video_bytes = video_file.read() st.video(video_bytes, start_time=start_offset_value)


Sonuçlar şöyle görünüyor:

Çözüm

Bu iki yaklaşımın incelenmesi, modern yapay zeka tekniklerinin video arama uygulamalarındaki önemli potansiyelini vurgulamaktadır. Görüntü gömmelerle çerçeve arama, belirli görsel aramalar için yüksek doğruluk sağlarken, çok modlu yerleştirmelerin esnekliği ve gücü, onları karmaşık, çok modlu arama gereksinimleri için üstün bir seçim haline getirir.


Bir video arama platformu, Astra DB'yi kullanarak kullanıcılara gelişmiş arama yetenekleri sunarak, büyük veri kümelerinden belirli video içeriğinin hassas ve etkili bir şekilde alınmasını sağlayabilir. Bu, video verilerini analiz etme ve yorumlama yeteneğini önemli ölçüde geliştirerek daha hızlı ve daha doğru içgörülere yol açar.


İleriye baktığımızda, devam eden araştırma ve geliştirme sayesinde video aramanın geleceği parlaktır. Yapay zeka ve makine öğrenimindeki ilerlemeler bu teknikleri geliştirmeye devam ederek onları daha erişilebilir ve verimli hale getirecek. Artırılmış gerçeklik ve gerçek zamanlı video analizi gibi diğer gelişen teknolojilerle entegrasyon, yeteneklerini daha da genişletecek.


Yazan: Matthew Pendlebury , Mühendislik Başkanı, OpenOrigins ve Betul O'Reilly , Çözüm Mimarı, DataStax