pixeltable
v0.2.27
安裝|文檔 | API 參考 |程式碼範例 |電腦視覺 |法學碩士
Pixeltable 是一個 Python 函式庫,為多模式資料(文字、映像、音訊、視訊)提供宣告式介面。它具有內建版本控制、沿襲追蹤和增量更新功能,使用戶能夠為其 ML 工作流程儲存、轉換、索引和迭代資料。
資料轉換、模型推理和自訂邏輯作為計算列嵌入。
pip install pixeltable
Pixeltable 是持久的。與 Pandas 等記憶體中的 Python 函式庫不同,Pixeltable 是一個資料庫。
了解如何建立表格、向其中填充資料以及透過內建或使用者定義的轉換來增強它們。
話題 | 筆記本 | 話題 | 筆記本 |
---|---|---|---|
Pixeltable 10 分鐘導覽 | 表和數據操作 | ||
使用者定義函數 (UDF) | 物體偵測模型 | ||
增量即時工程 | 使用外部文件 | ||
與 Label Studio 集成 | 音訊/視訊轉錄索引 | ||
多式聯運申請 | 文檔索引和 RAG | ||
上下文感知的 Discord 機器人 | 圖片/文字相似度搜尋 |
import pixeltable as pxt
v = pxt . create_table ( 'external_data.videos' , { 'video' : pxt . Video })
prefix = 's3://multimedia-commons/'
paths = [
'data/videos/mp4/ffe/ffb/ffeffbef41bbc269810b2a1a888de.mp4' ,
'data/videos/mp4/ffe/feb/ffefebb41485539f964760e6115fbc44.mp4' ,
'data/videos/mp4/ffe/f73/ffef7384d698b5f70d411c696247169.mp4'
]
v . insert ({ 'video' : prefix + p } for p in paths )
了解如何使用 Pixeltable 中的資料。
import pixeltable as pxt
from pixeltable . functions import huggingface
# Create a table to store data persistently
t = pxt . create_table ( 'image' , { 'image' : pxt . Image })
# Insert some images
prefix = 'https://upload.wikimedia.org/wikipedia/commons'
paths = [
'/1/15/Cat_August_2010-4.jpg' ,
'/e/e1/Example_of_a_Dog.jpg' ,
'/thumb/b/bf/Bird_Diversity_2013.png/300px-Bird_Diversity_2013.png'
]
t . insert ({ 'image' : prefix + p } for p in paths )
# Add a computed column for image classification
t . add_computed_column ( classification = huggingface . detr_for_object_detection (
t . image ,
model_id = 'facebook/detr-resnet-50'
))
# Retrieve the rows where cats have been identified
t . select ( animal = t . image ,
classification = t . classification . label_text [ 0 ])
. where ( t . classification . label_text [ 0 ] == 'cat' ). head ()
了解計算列和物件偵測:比較物件偵測模型。
@ pxt . udf
def draw_boxes ( img : PIL . Image . Image , boxes : list [ list [ float ]]) -> PIL . Image . Image :
result = img . copy () # Create a copy of `img`
d = PIL . ImageDraw . Draw ( result )
for box in boxes :
d . rectangle ( box , width = 3 ) # Draw bounding box rectangles on the copied image
return result
了解有關使用者定義函數的更多資訊:Pixeltable 中的 UDF。
# In this example, the view is defined by iteration over the chunks of a DocumentSplitter
chunks_table = pxt . create_view (
'rag_demo.chunks' ,
documents_table ,
iterator = DocumentSplitter . create (
document = documents_table . document ,
separators = 'token_limit' , limit = 300 )
)
了解如何利用視圖建立 RAG 工作流程。
# The computation of the mAP metric can become a query over the evaluation output
frames_view . select ( mean_ap ( frames_view . eval_yolox_tiny ), mean_ap ( frames_view . eval_yolox_m )). show ()
了解如何利用 Pixeltable 進行模型分析。
chat_table = pxt . create_table ( 'together_demo.chat' , { 'input' : pxt . String })
# The chat-completions API expects JSON-formatted input:
messages = [{ 'role' : 'user' , 'content' : chat_table . input }]
# This example shows how additional parameters from the Together API can be used in Pixeltable
chat_table . add_computed_column (
output = chat_completions (
messages = messages ,
model = 'mistralai/Mixtral-8x7B-Instruct-v0.1' ,
max_tokens = 300 ,
stop = [ ' n ' ],
temperature = 0.7 ,
top_p = 0.9 ,
top_k = 40 ,
repetition_penalty = 1.1 ,
logprobs = 1 ,
echo = True
)
)
chat_table . add_computed_column (
response = chat_table . output . choices [ 0 ]. message . content
)
# Start a conversation
chat_table . insert ([
{ 'input' : 'How many species of felids have been classified?' },
{ 'input' : 'Can you make me a coffee?' }
])
chat_table . select ( chat_table . input , chat_table . response ). head ()
了解如何與 Pixeltable 中的 Together AI 等推理服務互動。
import pixeltable as pxt
from pixeltable . functions . huggingface import clip_image , clip_text
from pixeltable . iterators import FrameIterator
import PIL . Image
video_table = pxt . create_table ( 'videos' , { 'video' : pxt . Video })
video_table . insert ([{ 'video' : '/video.mp4' }])
frames_view = pxt . create_view (
'frames' , video_table , iterator = FrameIterator . create ( video = video_table . video ))
@ pxt . expr_udf
def embed_image ( img : PIL . Image . Image ):
return clip_image ( img , model_id = 'openai/clip-vit-base-patch32' )
@ pxt . expr_udf
def str_embed ( s : str ):
return clip_text ( s , model_id = 'openai/clip-vit-base-patch32' )
# Create an index on the 'frame' column that allows text and image search
frames_view . add_embedding_index ( 'frame' , string_embed = str_embed , image_embed = embed_image )
# Now we will retrieve images based on a sample image
sample_image = '/image.jpeg'
sim = frames_view . frame . similarity ( sample_image )
frames_view . order_by ( sim , asc = False ). limit ( 5 ). select ( frames_view . frame , sim = sim ). collect ()
# Now we will retrieve images based on a string
sample_text = 'red truck'
sim = frames_view . frame . similarity ( sample_text )
frames_view . order_by ( sim , asc = False ). limit ( 5 ). select ( frames_view . frame , sim = sim ). collect ()
了解如何使用嵌入和向量索引。
要求 | 傳統的 | 像素表 |
---|---|---|
影格擷取 | ffmpeg + 自訂程式碼 | 透過 FrameIterator 自動 |
物體偵測 | 多個腳本+快取 | 單一計算列 |
影片索引 | 自訂管道+向量資料庫 | 原生相似性搜尋 |
註釋管理 | 單獨的工具+自訂程式碼 | 標籤工作室集成 |
模型評估 | 自訂指標管道 | 內建 mAP 計算 |
要求 | 傳統的 | 像素表 |
---|---|---|
文件分塊 | 工具+自訂程式碼 | 本機文檔分割器 |
嵌入生成 | 獨立管道+緩存 | 計算列 |
向量搜尋 | 外部向量資料庫 | 內建向量索引 |
及時管理 | 客製化追蹤解決方案 | 版本控制列 |
連鎖經營 | 工具+自訂程式碼 | 計算列 DAG |
要求 | 傳統的 | 像素表 |
---|---|---|
資料類型 | 多個儲存系統 | 統一表格介面 |
跨模式搜尋 | 複雜的集成 | 原生相似性支持 |
管道編排 | 多種工具(氣流等) | 單一聲明式介面 |
資產管理 | 客製化追蹤系統 | 自動血統 |
品質管制 | 多種驗證工具 | 計算驗證列 |
Pixeltable 將資料儲存、版本控制和索引與聲明性表介面下的編排和模型版本控制相結合,並將轉換、模型推理和自訂邏輯表示為計算列。
當今的人工智慧應用程式開發解決方案需要大量的自訂編碼和基礎設施管道。追蹤資料轉換、模型和部署之間的沿襲和版本非常麻煩。 Pixeltable 讓機器學習工程師和資料科學家能夠專注於探索、建模和應用程式開發,而無需處理常規的資料管道。
提示
查看“整合”部分,並隨時提交其他整合請求。
我們很高興歡迎社區的貢獻!您可以透過以下方式參與:
該庫根據 Apache 2.0 許可證獲得許可。