การติดตั้ง | เอกสารประกอบ | การอ้างอิง API | ตัวอย่างโค้ด | คอมพิวเตอร์วิทัศน์ | นิติศาสตร์มหาบัณฑิต
Pixeltable เป็นไลบรารี Python ที่ให้อินเทอร์เฟซที่ประกาศสำหรับข้อมูลหลายรูปแบบ (ข้อความ รูปภาพ เสียง วิดีโอ) โดยมีคุณลักษณะการกำหนดเวอร์ชันในตัว การติดตามเชื้อสาย และการอัปเดตส่วนเพิ่ม ทำให้ผู้ใช้สามารถ จัดเก็บ แปลง จัดทำ ดัชนี และ วนซ้ำ ข้อมูลสำหรับเวิร์กโฟลว์ ML ของตนได้
การแปลงข้อมูล การอนุมานโมเดล และตรรกะที่กำหนดเองจะถูกฝังเป็น คอลัมน์จากการคำนวณ
pip install pixeltable
Pixeltable เป็นแบบถาวร แตกต่างจากไลบรารี Python ในหน่วยความจำเช่น Pandas Pixeltable เป็นฐานข้อมูล
เรียนรู้วิธีสร้างตาราง เติมข้อมูล และปรับปรุงด้วยการแปลงในตัวหรือที่ผู้ใช้กำหนด
หัวข้อ | โน๊ตบุ๊ค | หัวข้อ | โน๊ตบุ๊ค |
---|---|---|---|
ทัวร์ชม Pixeltable 10 นาที | การดำเนินการตารางและข้อมูล | ||
ฟังก์ชันที่ผู้ใช้กำหนด (UDF) | โมเดลการตรวจจับวัตถุ | ||
วิศวกรรมพร้อมท์ที่เพิ่มขึ้น | การทำงานกับไฟล์ภายนอก | ||
บูรณาการกับ Label Studio | การจัดทำดัชนีการถอดเสียง/วิดีโอ | ||
แอปพลิเคชั่นหลายรูปแบบ | การจัดทำดัชนีเอกสารและ RAG | ||
บอท Discord แบบ Context-Aware | การค้นหาความคล้ายคลึงกันของรูปภาพ/ข้อความ |
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
เรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชันที่ผู้ใช้กำหนด: UDF ใน Pixeltable
# 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 ()
เรียนรู้วิธีโต้ตอบกับบริการอนุมาน เช่น Together AI ใน Pixeltable
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 รวมพื้นที่จัดเก็บข้อมูล การกำหนดเวอร์ชัน และการจัดทำดัชนีเข้ากับการเรียบเรียงและการกำหนดเวอร์ชันโมเดลภายใต้อินเทอร์เฟซตารางที่ประกาศ โดยมีการแปลง การอนุมานโมเดล และตรรกะที่กำหนดเองแสดงเป็นคอลัมน์จากการคำนวณ
โซลูชันสำหรับการพัฒนาแอป AI ในปัจจุบันจำเป็นต้องมีการเขียนโค้ดแบบกำหนดเองที่ครอบคลุมและการวางโครงสร้างพื้นฐาน การติดตามเชื้อสายและเวอร์ชันระหว่างและระหว่างการแปลงข้อมูล โมเดล และการปรับใช้นั้นยุ่งยาก Pixeltable ช่วยให้วิศวกร ML และนักวิทยาศาสตร์ข้อมูลมุ่งเน้นไปที่การสำรวจ การสร้างโมเดล และการพัฒนาแอป โดยไม่ต้องยุ่งยากกับการจัดการข้อมูลตามปกติ
เคล็ดลับ
ตรวจสอบส่วนการรวมระบบ และส่งคำขอเพิ่มเติมได้เลย
เรารู้สึกตื่นเต้นที่ได้ต้อนรับการมีส่วนร่วมจากชุมชน! คุณสามารถมีส่วนร่วมได้ดังนี้:
ไลบรารีนี้ได้รับอนุญาตภายใต้ Apache 2.0 License