cardstream
โอเพนซอร์ส ขับเคลื่อนโดย Ximilar เวอร์ชันเบต้า

ระบุการ์ดในไลฟ์สดได้ดีที่สุด สร้างมาเพื่อการเปิดกล่อง แกะซอง และรายการไลฟ์

cardstream จับตาดูการเปิดกล่อง แกะซอง หรือรายการไลฟ์ของคุณ และระบุการ์ดสะสมทุกใบทันทีที่เข้ามาในเฟรม ทั้งชื่อ ชุด และค่าความมั่นใจ แบบสดๆ วิเคราะห์ไลฟ์ขายของของคุณด้วยระบบติดตามการ์ด สำหรับสตรีมเมอร์ที่อยากรู้จักไลฟ์ของตัวเองให้มากขึ้น

ระบุอะไรได้บ้าง

จากโปเกมอนถึง Magic: The Gathering

สลับหมวดหมู่ตามรายการ แล้วทั้งเอนจินจะตามไปเอง ทั้งการตรวจจับ เกต และการเรียกระบุการ์ด ล้วนชี้ไปที่ endpoint ที่ถูกต้อง ผลลัพธ์ทุกรายการมาพร้อมชื่อ ชุด รหัสชุด หมายเลขการ์ด ซีรีส์ และปี

🃏

เกมการ์ดสะสม

collectibles/v2/tcg_id
Ximilar พร้อมใช้

การ์ดเดี่ยว TCG ทั้งรุ่นใหม่และวินเทจ ระบุจากสตรีมได้โดยตรง endpoint อ่านทั้งภาพ กรอบ และตัวอักษร การ์ดจึงถูกระบุจากภาพเดียวกับที่ผู้ชมของคุณเห็นอยู่ ไม่ต้องมองหาสัญลักษณ์ชุด ไม่ต้องเพ่งดูหมายเลขสะสม

  • โปเกมอน
  • Magic: The Gathering
  • ยูกิโอ
  • One Piece
  • Lorcana
  • ดิจิมอน
  • Dragon Ball Super
  • Flesh and Blood
  • Star Wars Unlimited
  • Star Wars Destiny
  • MetaZoo
  • Riftbound
  • Weiss Schwarz
  • Union Arena
  • Force of Will
  • Grand Archive
  • Vanguard
  • Marvel Champions
  • Sorcery
  • Final Fantasy
  • กันดั้ม
  • Duel Masters
  • Naruto Mythos
  • Hololive
  • Garbage Pail Kids
🏅

การ์ดกีฬา sport_id

การ์ดรุกกี้ พาราเลล อินเสิร์ต และการ์ดลายเซ็น ครอบคลุมทุกกีฬาหลัก ทั้งเบสบอล บาสเกตบอล อเมริกันฟุตบอล ฟุตบอล ฮอกกี้ และอื่นๆ ระบุได้ว่าเป็นใบไหน ชุดไหน ปีไหน อย่างแม่นยำ

เร็วๆ นี้
🧊

การ์ดเกรดในเคส slab_id

อ่านฉลากบนเคสเกรด การ์ดที่อยู่ในเคส PSA, BGS หรือ CGC ระบุได้โดยไม่ต้องแกะเคส

เร็วๆ นี้
📚

หนังสือการ์ตูน comics_id

ระบุปกด้วยวิธีเดียวกับการ์ด: ชื่อเรื่อง ฉบับ และปี จากเฟรมนิ่งเพียงเฟรมเดียว

เร็วๆ นี้
ไม่ผูกกับผู้ให้บริการรายเดียว

เชื่อมต่อระบบรู้จำเฉพาะทาง หรือระบบของคุณเอง

ทุกอย่างที่ตัดสินว่าจะเรียกหรือไม่เกิดขึ้นก่อนการระบุการ์ดเสมอ: การตรวจจับ เกตตรวจจับการเคลื่อนไหว และเกตการ์ดใบเดิม ล้วนรันในเครื่องและไม่ขึ้นกับผู้ให้บริการ ตัวการเรียกเองเป็นขั้นตอนเดียวที่สลับได้ ค่าเริ่มต้นคือ Ximilar หรือจะเป็นบริการระบุการ์ดเฉพาะทาง หรือโมเดลที่คุณเทรนเองและโฮสต์บนฮาร์ดแวร์ของคุณก็ได้

อินเทอร์เฟซเล็กมาก: ภาพตัดของการ์ดเข้าไป ผลลัพธ์ออกมา แค่อิมพลีเมนต์ IdentifyTarget แล้วทุกเกต ทุกตัวจำกัดความถี่ และทุกค่าเกณฑ์ที่อยู่ข้างหน้าก็ยังทำงานเหมือนเดิมทุกประการ ยังคงเป็นภาพตัดหนึ่งภาพต่อการ์ดที่ต่างกันแต่ละใบ ไม่ว่าใครจะเป็นผู้ตอบ

# ระบบรู้จำของคุณเอง เอนจินเดียวกัน
class HouseIdentifier(IdentifyTarget):
    def identify(self, crop_bgr):
        return my_service.match(crop_bgr)

# ภาพตัดหนึ่งภาพต่อการ์ดที่ต่างกันแต่ละใบ ไม่ว่าทางไหน
$ cardstream-web --detector rfdetr
ทำไมต้อง cardstream.ai

เรียกครั้งเดียวต่อการ์ดหนึ่งใบ ไม่ใช่ทุกเฟรม

หัวใจสำคัญคือลดการวิเคราะห์ไลฟ์ให้เหลือแค่การเรียกที่บอกอะไรใหม่จริงๆ ทางเลือกโอเพนซอร์สแทน SaaS รู้จำการ์ดแบบปิด ไม่มีแพลตฟอร์มคั่นกลาง ไม่มีค่าไลเซนส์ต่อที่นั่ง มีแค่ฮาร์ดแวร์ของคุณ คีย์ API ของคุณ และสเตตแมชชีนที่จะเรียกออกไปก็ต่อเมื่อการ์ดในเฟรมเป็นใบใหม่จริงๆ เท่านั้น

54,000 → ~100
การเรียก API ต่อชั่วโมง

ไปป์ไลน์แบบตรงไปตรงมาที่ประมวลผลทุกเฟรมที่ 15 fps จะยิงคำขอระบุการ์ด 54,000 ครั้งต่อชั่วโมง cardstream ยิงครั้งเดียวต่อการ์ดที่ต่างกันแต่ละใบที่คุณโชว์ ราวๆ หนึ่งร้อยครั้งในชั่วโมงเดียวกัน

540×
การเรียกระบุการ์ดน้อยลง

ชั่วโมงเดียวกัน วิดีโอเดียวกัน การ์ดชุดเดียวกัน: 54,000 ครั้ง เทียบกับประมาณ 100 ครั้ง เกตตรวจจับการเคลื่อนไหวและเกตระบุตัวตนรันในเครื่องบนฮาร์ดแวร์ของคุณเอง การเรียกจะออกไปก็ต่อเมื่อการ์ดใบใหม่จริงๆ นิ่งอยู่ในเฟรมแล้วเท่านั้น

$0
ค่าธรรมเนียมแพลตฟอร์ม

ไม่มีค่าสมาชิก SaaS ไม่มีการคิดราคาต่อที่นั่ง ไม่ผูกมัดกับผู้ให้บริการ โฮสต์ทั้งสแต็กรวมถึงการระบุการ์ดด้วยตัวเอง หรือเชื่อมต่อ Ximilar API ก็ได้

ฟีเจอร์

ทุกอย่างที่รายการไลฟ์การ์ดต้องมี

ผู้ช่วยร่วมรายการที่ไม่พลาดการ์ดสักใบ สำหรับผู้ขายไลฟ์คอมเมิร์ซบนแพลตฟอร์มสไตล์ Whatnot และ Fanatics Live การเปิดกล่อง ไลฟ์ของร้านการ์ด และการจัดทำแคตตาล็อกคอลเลกชัน ที่ไหนที่มีกล้องกับการ์ด ที่นั่นใช้ได้

⚡

รู้ทันทีที่เข้าเฟรม

ไม่มีปุ่มสแกน ไม่ต้องรอ แค่โชว์การ์ด ชื่อ ชุด และค่าความมั่นใจก็ขึ้นภายในราวครึ่งวินาที สดๆ ในไลฟ์

🎯

เรียกครั้งเดียวต่อการ์ดหนึ่งใบ

เกตตรวจจับการเคลื่อนไหวและเกตระบุตัวตนด้วยเอ็มเบดดิงรันในเครื่องบน CPU ของคุณเอง ถือการ์ดนิ่งๆ ไม่มีการเรียกซ้ำเลย เปลี่ยนการ์ด เรียกใหม่หนึ่งครั้งพอดี

📡

รับได้ทุกแหล่งสัญญาณ

เว็บแคม ไฟล์วิดีโอ RTSP, RTMP และ SRT ทั้งแบบดึงสัญญาณ (pull) หรือรับพุชตรงจาก OBS ด้วย --listen รวมถึงฟีด JPEG ผ่าน WebSocket สำหรับอุปกรณ์ที่ประกอบเอง

🔌

ใช้แบ็กเอนด์ระบุการ์ดได้ทุกแบบ

Ximilar collectibles/v2 พร้อมใช้ทันที หรือชี้เอนจินตัวเดิมไปที่ระบบรู้จำการ์ดเฉพาะทาง หรือโมเดลที่คุณเทรนและโฮสต์เอง

🧠

ใช้โมเดลของคุณเอง

น้ำหนักของตัวระบุตำแหน่งเป็นของเรา: โมเดลเซกเมนเตชัน RF-DETR ที่ไฟน์จูนแล้ว ไลเซนส์ Apache-2.0 ตัวติดตั้งดาวน์โหลดให้ รองรับตัวตรวจจับแบบกรอบ (RF-DETR, RT-DETRv2) ด้วย หากคุณอยากใช้โมเดลที่เอ็กซ์พอร์ตเอง

🔓

โอเพนซอร์ส โฮสต์เอง

แพ็กเกจ Python ตัวเดียว ไลเซนส์แบบเปิดกว้าง อ่านโค้ด ฟอร์ก และรันบนฮาร์ดแวร์ของคุณเองได้ คีย์ของคุณ ข้อมูลของคุณ โครงสร้างพื้นฐานของคุณ

วิธีการทำงาน

ฉลาดพอที่จะรู้ว่าเมื่อไหร่ไม่ควรเรียก API

มีสเตตแมชชีนหนึ่งตัวยืนอยู่ระหว่างสตรีมของคุณกับ API ทุกเฟรมไหลผ่าน DecisionCore สเตตแมชชีนตัวเดียวที่รันในเครื่อง และเกตในเครื่องสามชั้นจะตัดสินว่าเมื่อไหร่ที่ขั้นตอน API ขั้นเดียวนั้นจำเป็นจริงๆ

1

ตรวจจับ

ในเครื่อง · ไม่เรียก API

หาสี่เหลี่ยมของการ์ดแล้วปรับมุมให้ตรง ตัดภาพออกมาให้สะอาด ควบคุมความถี่สามระดับด้วยเกตตรวจจับการเคลื่อนไหวในเครื่อง: กำลังเคลื่อน นิ่งและมีการ์ด หรือว่างเปล่า

2

เกตตรวจจับการเคลื่อนไหว

ในเครื่อง · ไม่เรียก API

เทียบผลต่างเฟรมแบบเฉลี่ยที่แทบไม่กินทรัพยากร ต่อเมื่อภาพนิ่งครบ N เฟรมเท่านั้น การ์ดถึงจะคุ้มค่าให้ดูใกล้ๆ ยังขยับอยู่? รอก่อน

3

เกตระบุตัวตน

ในเครื่อง · ไม่เรียก API

เทียบเอ็มเบดดิงเพื่อตอบคำถามเดียว: นี่คือการ์ดใบเดิมหรือเปล่า? ถ้าใบเดิม ก็ส่งผลลัพธ์ที่แคชไว้ออกไปอีกครั้ง

4

ระบุการ์ด

ximilar · เรียก 1 ครั้ง

เฉพาะการ์ดใบใหม่จริงๆ ที่นิ่งแล้วเท่านั้นที่จะกระตุ้นให้ Ximilar ระบุการ์ด แบบอะซิงโครนัส มีดีบาวซ์ และอยู่นอกลูปเฟรม ผลลัพธ์ถูกส่งกลับเข้าไลฟ์ทันที

สำหรับสตรีมเมอร์ นักเปิดกล่อง และร้านการ์ด

คุณเป็นสตรีมเมอร์ที่ทำคนเดียวหรือเปล่า?

คนเดียว กล้องตัวเดียว กับคืนยาวๆ ของการเปิดกล่อง คุณไม่ควรต้องมีทีมวิศวกรเพื่อจะรู้ว่าการ์ดใบไหนอยู่บนจอ แค่เชื่อมต่อสตรีมที่คุณกำลังไลฟ์อยู่แล้ว ปล่อยให้ cardstream วิเคราะห์แบบสด ไม่ว่าคุณจะขายผ่านมาร์เก็ตเพลสหรือขายตรงจากช่องของตัวเอง

  • Whatnot
  • Fanatics Live
  • eBay Live
  • TikTok Shop
  • Twitch
  • YouTube Live
  • เว็บไซต์ของคุณเอง

ไม่ต้องให้สิทธิ์เข้าถึงบัญชี ไม่ต้องใช้คีย์ API ของมาร์เก็ตเพลส ไม่มีบอตในแชทของคุณ และไม่มีส่วนเกี่ยวข้องกับแพลตฟอร์มเหล่านี้เลย cardstream อ่านแค่วิดีโอของคุณ ไม่มีอย่างอื่น

01

คุณไลฟ์จาก OBS อยู่แล้ว

เพิ่มเอาต์พุตอีกหนึ่งตัวข้างๆ ตัวที่ส่งภาพไปออกรายการ ผู้ซื้อเห็นภาพเหมือนเดิมทุกประการ ส่วนสำเนาของสัญญาณเดียวกันจะเข้า cardstream และการ์ดทุกใบที่วางลงบนโต๊ะจะถูกระบุระหว่างทาง โหมดรอรับสัญญาณด้านล่างต้องมี ffmpeg ติดตั้งในระบบ หรือจะข้ามเอาต์พุตตัวที่สองไปเลย แล้วให้ cardstream อ่านกล้องเสมือนของ OBS เหมือนเว็บแคมธรรมดาก็ได้

$ cardstream-web --listen \
      --source rtmp://0.0.0.0:1935/live
# ชี้ปลายทางตัวที่สองของ OBS มาที่นี่
02

หรือกล้องที่อยู่บนโต๊ะอยู่แล้ว

กล้องมุมสูง การ์ดแคปเจอร์ มือถือที่ใช้เป็นเว็บแคม อะไรก็ตามที่คุณใช้แกะและโชว์การ์ด การวิเคราะห์รันบนเครื่องข้างกล้อง โดยค่าเริ่มต้นสิ่งเดียวที่ออกจากห้องไปคือภาพตัดหนึ่งภาพต่อการ์ดหนึ่งใบ

$ cardstream-web --source 0
# เว็บแคม · UI ในเบราว์เซอร์บน localhost
03

หรืออะไรก็ได้ที่มี URL

เอนโค้ดเดอร์ สวิตเชอร์ ตัวรีสตรีม หรือสตูดิโอที่สองอีกฟากเมือง ดึงสัญญาณ RTSP, RTMP และ SRT รวมถึงฟีด JPEG ผ่าน WebSocket สำหรับอุปกรณ์ที่ประกอบเอง

$ cardstream-web \
      --source rtsp://studio/stream1

โอเวอร์เลย์แบบสด

ชื่อ ชุด และค่าความมั่นใจปรากฏทันทีที่การ์ดนิ่ง พร้อมให้อ่านออกเสียง หรือซ้อนกลับเข้าไปในฉากของคุณ

บันทึกการ์ดทุกใบ

ประวัติต่อเนื่องของทุกอย่างที่คุณโชว์: ภาพย่อของการ์ดแต่ละใบ และระยะเวลาที่อยู่บนสตรีม บันทึกลงบัญชี Ximilar ของคุณ แล้วย้อนดูรายการในเช้าวันรุ่งขึ้น ว่าอะไรขายไปแล้ว และมีมูลค่าเท่าไหร่

ขนาดพอดีสำหรับคนเดียว

ไม่มีค่าธรรมเนียมแพลตฟอร์ม ไม่มีไลเซนส์ต่อที่นั่ง รายการสามชั่วโมงคือการเรียกระบุการ์ดแค่หยิบมือเดียว ไม่ใช่ทุกเฟรม

Cardstream Cloud

บันทึกรายการของคุณไว้ แล้วย้อนดูได้ทุกเมื่อ

cardstream ทำงานบนเครื่องของคุณ และโดยค่าเริ่มต้นจะไม่เก็บอะไรไว้เลย เพิ่มแฟล็กเดียว การ์ดทุกใบที่คุณโชว์จะถูกบันทึกลงเซสชันในบัญชี Ximilar ของคุณด้วย พร้อมราคา เวลาบนสตรีม และภาพตัดที่ใช้ระบุ เปิดแอป Ximilar หลังจบรายการ แล้วดูว่ารายการนั้นมีมูลค่าเท่าไร

$ cardstream-web --price-stats \
    --ximilar-stream NEW
# แสดง id ของเซสชัน และบันทึกระหว่างรายการ
เซสชันที่บันทึกไว้ในแอป Ximilar: จำนวนสินค้าที่โชว์ การเรียก API แบบเสียเงิน มูลค่าตลาด เวลาเฉลี่ยบนหน้าจอ สินค้าที่มีมูลค่าสูงสุด และชุดที่พบบ่อยที่สุด

รายการของคุณในรูปตัวเลข

จำนวนสินค้าที่โชว์ การเรียก API แบบเสียเงิน มูลค่าตลาด และเวลาเฉลี่ยบนหน้าจอของแต่ละเซสชัน พร้อมสินค้าที่มีมูลค่าสูงสุดและชุดที่พบบ่อยที่สุด

การ์ดทุกใบ พร้อมภาพ

แต่ละแถวเก็บการ์ด ชุด หมายเลข ราคา และภาพตัดที่ใช้ระบุ ค้นหาในรายการตามสินค้าหรือชุด และกรองเซสชันตามสถานะ แพลตฟอร์ม และวันที่

ทำให้เป็นบันทึกของคุณเอง

ทำเครื่องหมายว่าใบไหนขายแล้ว เพิ่มโน้ต แก้ผลที่จับคู่ผิดหรือราคา และลบรายการที่ระบุผิด ตั้งชื่อเซสชันและแนบเมทาดาทาของคุณเอง เช่น หมายเลขล็อต ต้นทุน ผู้ซื้อ

ทำต่อจากจุดที่ค้างไว้

รีสตาร์ตกลางรายการ? ส่ง id ของเซสชันแทน NEW แล้วรายการจะดำเนินต่อในเซสชันเดิม แม้เซสชันจะถูกปิดไปแล้วก็ตาม --ximilar-workspace ใช้บันทึกลงเวิร์กสเปซของทีม

ปิดไว้โดยค่าเริ่มต้น: หากไม่ใส่ --ximilar-stream สิ่งเดียวที่ออกจากเครื่องของคุณคือการเรียกเพื่อระบุการ์ด การบันทึกต้องใช้บริการ Cardstream ในบัญชี Ximilar ของคุณ คิดค่าบริการเฉพาะตอนเริ่มเซสชันเท่านั้น และ --no-ximilar-stream-images จะบันทึกเฉพาะข้อความ

เริ่มต้นอย่างรวดเร็ว

จากศูนย์สู่การระบุการ์ดสดๆ ใน 3 ขั้นตอน

1

ติดตั้ง

ได้ virtualenv, wheel ของรีลีส (ตรวจ checksum แล้ว), น้ำหนักโมเดล และคำสั่งทั้งสองบน PATH ของคุณ จะใช้สคริปต์ pip install wheel ตัวเดียวกันจาก PyPI (น้ำหนักโมเดลต้องดาวน์โหลดแยก) หรือโคลนรีโปแล้วบิลด์เองก็ได้ ส่วน Docker และ Windows อยู่ในหน้าดาวน์โหลด

$ curl -fsSL https://raw.githubusercontent.com/Ximilar-com/cardstream/main/scripts/install.sh | sh
# วิธีติดตั้งอื่นๆ → cardstream.ai/download
$ pip install 'cardstream[client,onnx]'   # หรือ: uv tool install 'cardstream[client,onnx]'
# wheel ไม่มีน้ำหนักโมเดล — แตก tarball สองไฟล์จาก cardstream.ai/models
# แล้วชี้แฟล็กไปที่ไฟล์เหล่านั้น:
$ cardstream-web --segmentor-model segmentation_model/onnx/model.onnx \
    --embed-model similarity_model/onnx/model.onnx
$ git clone https://github.com/Ximilar-com/cardstream && cd cardstream
$ ./scripts/build-from-source.sh --models
$ source .venv/bin/activate
2

เชื่อมต่อระบบระบุการ์ด

Ximilar collectibles/v2 พร้อมใช้ทันที คีย์จาก ximilar.com คือข้อมูลรับรองเดียวที่ทั้งระบบต้องการ หรือจะชี้ขั้นตอนเดียวกันนี้ไปที่ระบบรู้จำการ์ดของคุณเองก็ได้

$ export XIMILAR_API_KEY=your-key
3

หันกล้องไปที่การ์ด

เปิด UI ในเบราว์เซอร์ด้วยเว็บแคม หรือป้อนรายการของคุณเข้าไป จะดึงสัญญาณ RTSP หรือให้ OBS พุช RTMP เข้ามาตรงๆ ก็ได้ เปิดชุดเดียวทั้งคืน? ตั้งค่าล่วงหน้าไว้ก่อน แล้ว endpoint จะเลิกเดา: การ์ดโปเกมอนภาษาอังกฤษจากชุด CRI คือสามสิ่งที่ตัดโอกาสผิดพลาดออกไป ตั้ง --alphabet ทุกครั้งที่ตั้ง --game เพราะการระบุเกมล่วงหน้าจะปิดการตรวจจับระบบตัวเขียนของ endpoint เอง เพิ่ม --price-stats แล้วทุกผลลัพธ์จะมาพร้อมราคาตลาดเป็น USD ทั้งค่ามัธยฐาน ช่วงราคา และราคาขายล่าสุด ทั้งบนการ์ดและในประวัติ เพิ่ม --ximilar-stream NEW เพื่อบันทึกรายการลงบัญชี Ximilar ของคุณ แล้วย้อนกลับมาดูทีหลัง

$ cardstream-web
# → http://127.0.0.1:8001 — ยกการ์ดขึ้นมาให้กล้องเห็น

# การ์ดโปเกมอนภาษาอังกฤษ ชุดเดียว (CRI - Chaos Rising) พร้อมราคาตลาด USD:
$ cardstream-web --game Pokemon --set-code CRI --alphabet latin --price-stats

โอเพนซอร์ส โฮสต์เอง ไลฟ์ของคุณ สแต็กของคุณ

ไม่มีแพลตฟอร์มคั่นกลาง ไม่มีค่าไลเซนส์ต่อที่นั่ง แค่เชื่อมต่อ Ximilar API หรือระบบระบุการ์ดของคุณเอง แล้ว cardstream จะเรียกใช้ครั้งเดียวต่อการ์ดที่ต่างกันแต่ละใบ ไม่ใช่ทุกเฟรม ไม่ว่าคุณจะเปิดกล่องบน Whatnot ทำรายการสไตล์ Fanatics Live หรือไลฟ์ขายของบนระบบของตัวเอง ก็รัน cardstream ได้คืนนี้เลยด้วยฮาร์ดแวร์ที่มีอยู่แล้ว