Nhận diện thẻ bài tốt nhất cho livestream. Dành cho break, khui pack và các buổi live.
cardstream theo dõi buổi break, khui pack hay buổi live của bạn và nhận diện từng tấm thẻ bài ngay khi nó vào khung hình: tên, set và độ tin cậy, ngay trên sóng. Phân tích các buổi livestream bán hàng của bạn bằng hệ thống theo dõi thẻ. Dành cho những streamer muốn biết nhiều hơn.
Từ Pokémon đến Magic: The Gathering
Đổi danh mục theo từng buổi live và cả bộ máy đổi theo: phát hiện, các bộ lọc và lượt gọi nhận diện đều trỏ đến đúng endpoint. Mỗi kết quả khớp trả về kèm tên, set, mã set, số thẻ, series và năm.
Thẻ bài TCG
collectibles/v2/tcg_id Thẻ lẻ TCG đời mới lẫn đời cũ, nhận diện thẳng từ stream. Endpoint đọc hình minh họa, viền thẻ và phần chữ, nên tấm thẻ được nhận diện từ chính hình ảnh mà người xem của bạn đang thấy: không phải dò ký hiệu set, không phải căng mắt đọc số thẻ.
- Pokémon
- Magic: The Gathering
- Yu-Gi-Oh!
- One Piece
- Lorcana
- Digimon
- 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
- Gundam
- Duel Masters
- Naruto Mythos
- Hololive
- Garbage Pail Kids
Thẻ thể thao sport_id
Rookie, parallel, insert và thẻ chữ ký của mọi môn thể thao lớn: bóng chày, bóng rổ, bóng bầu dục Mỹ, bóng đá, khúc côn cầu và nhiều môn khác. Đúng tấm thẻ, đúng set, đúng năm.
Slab đã chấm điểm slab_id
Đọc nhãn trên vỏ thẻ đã chấm điểm: tấm thẻ nằm trong slab PSA, BGS hay CGC được nhận diện mà không cần phá vỏ.
Truyện tranh comics_id
Bìa truyện được nhận diện giống như thẻ: tựa truyện, số phát hành và năm, chỉ từ một khung hình đã đứng yên.
Cắm vào một dịch vụ nhận diện độc quyền, hoặc của chính bạn
Mọi thứ quyết định có nên gọi hay không đều diễn ra trước bước nhận diện: phát hiện, bộ lọc chuyển động và bộ lọc trùng thẻ đều chạy cục bộ và không phụ thuộc nhà cung cấp. Bản thân lượt gọi chỉ là một bước có thể thay thế: mặc định là Ximilar, hoặc một dịch vụ nhận diện thẻ độc quyền, hoặc một mô hình bạn tự huấn luyện và host trên máy của mình.
Đó chỉ là một interface nhỏ: ảnh cắt của tấm thẻ đi vào, kết quả khớp đi ra. Hãy cài đặt IdentifyTarget, và mọi bộ lọc, cơ chế điều tiết và ngưỡng đứng trước nó vẫn hoạt động y như cũ: vẫn một ảnh cắt cho mỗi thẻ khác nhau, bất kể ai trả lời.
# bộ nhận diện của riêng bạn, vẫn bộ máy đó class HouseIdentifier(IdentifyTarget): def identify(self, crop_bgr): return my_service.match(crop_bgr) # cách nào cũng vậy: mỗi thẻ khác nhau một ảnh cắt $ cardstream-web --detector rfdetr
Mỗi thẻ một lượt gọi, không phải mỗi khung hình
Mục tiêu là giữ cho việc phân tích stream chỉ còn những lượt gọi thật sự cho bạn biết điều gì mới. Đây là lựa chọn mã nguồn mở thay cho các dịch vụ SaaS nhận diện thẻ đóng kín: không nền tảng trung gian, không giấy phép tính theo người dùng. Chỉ có máy của bạn, API key của bạn và một máy trạng thái chỉ gọi ra ngoài khi tấm thẻ trong khung hình thật sự là thẻ mới.
Một pipeline đơn giản xử lý từng khung hình ở 15 fps sẽ gửi 54.000 lượt nhận diện mỗi giờ. cardstream chỉ gửi một lượt cho mỗi thẻ khác nhau mà bạn đưa lên, tức khoảng một trăm lượt trong cùng một giờ đó.
Cùng một giờ, cùng một video, cùng những tấm thẻ: 54.000 lượt gọi so với khoảng 100. Bộ lọc chuyển động và bộ lọc trùng thẻ chạy cục bộ trên chính máy của bạn, nên một lượt gọi chỉ được gửi đi khi một tấm thẻ thật sự mới đã đứng yên trong khung hình.
Không thuê bao SaaS, không tính tiền theo người dùng, không bị khóa vào một nhà cung cấp. Tự host toàn bộ hệ thống kèm phần nhận diện, hoặc kết nối với API của Ximilar.
Mọi thứ một buổi live thẻ bài cần có
Một người đồng dẫn không bao giờ bỏ sót tấm thẻ nào: dành cho người bán livestream trên các nền tảng kiểu Whatnot và Fanatics Live, các buổi break box, livestream của shop thẻ và việc lập danh mục bộ sưu tập. Ở đâu có camera chĩa vào thẻ, ở đó dùng được.
Biết ngay khi thẻ vào khung hình
Không nút quét. Không chờ đợi. Chỉ cần đưa thẻ lên: tên, set và độ tin cậy hiện ra sau khoảng nửa giây, ngay trên stream.
Mỗi thẻ một lượt gọi
Bộ lọc chuyển động và bộ lọc trùng thẻ dựa trên embedding chạy cục bộ trên CPU của bạn. Giữ yên một tấm thẻ: không có lượt gọi lặp lại nào. Đổi thẻ: đúng một lượt gọi mới.
Nguồn stream nào cũng được
Webcam, tệp video, RTSP, RTMP và SRT: tự kéo về, hoặc để OBS đẩy thẳng sang bằng --listen. Luồng JPEG qua WebSocket cho các dàn máy tự chế.
Backend nhận diện nào cũng được
Dùng ngay được với Ximilar collectibles/v2, hoặc trỏ cùng bộ máy đó sang một dịch vụ nhận diện thẻ độc quyền, hay một mô hình bạn tự huấn luyện và tự host.
Mang mô hình của riêng bạn
Trọng số của bộ định vị là của chúng tôi: một mô hình phân đoạn RF-DETR đã finetune, giấy phép Apache-2.0, được trình cài đặt tải về. Các bộ phát hiện theo khung bao (RF-DETR, RT-DETRv2) cũng được hỗ trợ nếu bạn muốn dùng bản export của riêng mình.
Mã nguồn mở, tự host
Một gói Python duy nhất với giấy phép thoáng. Đọc nó, fork nó, chạy nó trên máy của bạn. Key của bạn, dữ liệu của bạn, hạ tầng của bạn.
Đủ thông minh để biết khi nào không nên gọi API
Giữa stream của bạn và API có một máy trạng thái. Mọi khung hình đều đi qua DecisionCore, một máy trạng thái duy nhất chạy cục bộ, và ba bộ lọc cục bộ quyết định khi nào bước gọi API duy nhất thật sự đáng thực hiện.
Phát hiện
cục bộ · không gọi APITìm tứ giác của tấm thẻ và nắn thẳng thành một ảnh cắt gọn gàng. Bộ lọc chuyển động cục bộ điều tiết tần suất theo ba mức: đang chuyển động, có thẻ đứng yên, trống.
Bộ lọc chuyển động
cục bộ · không gọi APIMột phép so sánh trung bình giữa các khung hình, rất nhẹ. Chỉ khi cảnh đã đứng yên đủ N khung hình thì tấm thẻ mới đáng được xem kỹ hơn. Còn chuyển động? Chờ tiếp.
Bộ lọc trùng thẻ
cục bộ · không gọi APIMột phép so sánh embedding trả lời đúng một câu hỏi: đây có phải tấm thẻ lúc nãy không? Cùng một thẻ → phát lại kết quả đã lưu.
Nhận diện
ximilar · 1 lượt gọiChỉ một tấm thẻ thật sự mới và đã đứng yên mới kích hoạt lượt nhận diện qua Ximilar: bất đồng bộ, có chống dội và nằm ngoài vòng lặp khung hình. Kết quả được đẩy ngược về ngay lập tức.
Bạn là streamer hoạt động một mình?
Một người, một camera, một đêm dài ngồi break: bạn không cần cả một đội kỹ sư mới biết được tấm thẻ nào đang trên màn hình. Hãy kết nối stream bạn đang chạy sẵn và để cardstream phân tích trực tiếp, dù bạn bán trên một sàn hay ngay trên kênh của mình.
- Whatnot
- Fanatics Live
- eBay Live
- TikTok Shop
- Twitch
- YouTube Live
- trang web của bạn
Không truy cập tài khoản, không cần API key của sàn, không có bot trong khung chat, và cũng không liên kết với bất kỳ nền tảng nào trong số này. cardstream chỉ đọc video của bạn, ngoài ra không gì khác.
Bạn đang stream bằng OBS
Thêm một đầu ra nữa bên cạnh đầu ra đang phát buổi live của bạn. Người mua vẫn thấy đúng những gì họ thấy trước đó, còn một bản sao của cùng luồng hình được gửi sang cardstream, và mọi tấm thẻ đặt lên bàn đều được nhận diện trên đường đi. Chế độ lắng nghe bên dưới cần có ffmpeg cài trên hệ thống. Hoặc bỏ hẳn đầu ra thứ hai và để cardstream đọc camera ảo của OBS như một webcam bình thường.
$ cardstream-web --listen \ --source rtmp://0.0.0.0:1935/live # trỏ đích thứ hai của OBS vào đây
Hoặc chiếc camera đã có sẵn trên bàn
Camera quay từ trên xuống, capture card, điện thoại dùng làm webcam: bất cứ thứ gì bạn đang dùng để quay lúc khui pack và lật thẻ. Việc phân tích chạy trên chiếc máy đặt cạnh camera, nên theo mặc định, thứ duy nhất rời khỏi căn phòng là một ảnh cắt cho mỗi thẻ.
$ cardstream-web --source 0 # webcam · giao diện trình duyệt trên localhost
Hoặc bất cứ thứ gì có URL
Encoder, bàn trộn hình, dịch vụ restream, một studio thứ hai ở đầu kia thành phố. Kéo RTSP, RTMP và SRT, cộng thêm luồng JPEG qua WebSocket khi dàn máy của bạn là đồ tự chế.
$ cardstream-web \
--source rtsp://studio/stream1 Overlay trực tiếp
Tên, set và độ tin cậy hiện ra ngay khi tấm thẻ đứng yên: sẵn để bạn đọc lên, hoặc để ghép ngược vào cảnh của mình.
Mọi tấm thẻ đều được ghi lại
Một lịch sử liên tục về mọi thứ bạn đã đưa lên: ảnh thu nhỏ của từng thẻ và thời gian nó xuất hiện trên stream. Lưu nó vào tài khoản Ximilar của bạn và sáng hôm sau xem lại buổi live: thẻ nào đã bán, đáng giá bao nhiêu.
Vừa sức một người
Không phí nền tảng, không giấy phép tính theo người dùng. Một buổi live ba tiếng chỉ tốn một nhúm lượt gọi nhận diện, không phải mỗi khung hình một lượt.
Từng bước một: kết nối một buổi live trên Whatnot hoặc Fanatics Live →
Buổi live của bạn, được lưu lại và sẵn sàng để xem lại
cardstream chạy trên máy của bạn và mặc định không lưu gì cả. Thêm một cờ, và mọi tấm thẻ bạn đưa lên cũng được lưu vào một phiên trong tài khoản Ximilar của bạn, kèm giá, thời gian xuất hiện trên màn hình và ảnh cắt đã dùng để nhận diện. Sau buổi live, hãy mở ứng dụng Ximilar để xem buổi đó đáng giá bao nhiêu.
$ cardstream-web --price-stats \ --ximilar-stream NEW # in ra id của phiên, lưu dần trong lúc buổi live diễn ra
Buổi live qua những con số
Số sản phẩm đã đưa lên, số lượt gọi API tính phí, giá trị thị trường và thời gian trung bình trên màn hình của từng phiên, bên cạnh là các sản phẩm giá trị nhất và các set xuất hiện nhiều nhất.
Từng tấm thẻ, kèm hình ảnh
Mỗi dòng giữ lại tên thẻ, set, số thẻ, giá và ảnh cắt đã dùng để nhận diện. Tìm trong danh sách theo sản phẩm hoặc set, và lọc các phiên theo trạng thái, nền tảng và ngày.
Biến nó thành sổ sách của bạn
Đánh dấu thẻ đã bán, thêm ghi chú, sửa một kết quả sai hoặc giá của nó, xóa một kết quả nhầm. Đặt tên cho phiên và gắn metadata của riêng bạn: số lô, chi phí, người mua.
Tiếp tục từ chỗ đang dở
Phải khởi động lại giữa buổi live? Truyền id của phiên thay cho NEW, và buổi live tiếp tục trong cùng phiên đó, kể cả khi phiên đã đóng. --ximilar-workspace lưu phiên vào workspace của nhóm.
Mặc định là tắt: không có --ximilar-stream thì lượt gọi nhận diện là thứ duy nhất rời khỏi máy của bạn. Để lưu, tài khoản Ximilar của bạn cần có dịch vụ Cardstream; chỉ việc bắt đầu một phiên mới bị tính phí, còn --no-ximilar-stream-images thì chỉ lưu phần văn bản.
Từ con số không đến nhận diện trực tiếp trong 3 bước
Cài đặt
Một virtualenv, wheel của bản phát hành (đã kiểm tra checksum), trọng số mô hình và cả hai lệnh nằm sẵn trên PATH. Bạn có thể dùng script, pip install chính wheel đó từ PyPI (trọng số phải tải riêng), hoặc clone repo rồi tự build. Docker và Windows có ở trang tải về.
$ curl -fsSL https://raw.githubusercontent.com/Ximilar-com/cardstream/main/scripts/install.sh | sh # các cách cài khác → cardstream.ai/download
$ pip install 'cardstream[client,onnx]' # hoặc: uv tool install 'cardstream[client,onnx]' # wheel không kèm trọng số: giải nén hai tarball từ cardstream.ai/models # rồi trỏ các cờ vào đó: $ 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
Kết nối một hệ thống nhận diện
Dùng ngay được với Ximilar collectibles/v2: một key lấy từ ximilar.com là thông tin xác thực duy nhất mà cả hệ thống cần. Hoặc trỏ chính bước đó sang bộ nhận diện của riêng bạn.
$ export XIMILAR_API_KEY=your-key
Hướng camera vào một tấm thẻ
Mở giao diện trình duyệt với webcam của bạn, hoặc đưa buổi live vào: kéo RTSP, hoặc để OBS đẩy RTMP thẳng sang. Break một set suốt cả đêm? Điền sẵn nó và endpoint thôi phải đoán: thẻ Pokémon tiếng Anh thuộc set CRI nghĩa là bớt được ba thứ có thể sai. Hễ đặt --game thì đặt luôn --alphabet, vì điền sẵn game sẽ tắt khả năng tự nhận biết hệ chữ viết của endpoint. Thêm --price-stats và mỗi kết quả khớp còn mang theo giá thị trường tính bằng USD: trung vị, khoảng giá và lần bán gần nhất, hiện trên thẻ và trong lịch sử. Thêm --ximilar-stream NEW để lưu buổi live vào tài khoản Ximilar của bạn và xem lại sau.
$ cardstream-web # → http://127.0.0.1:8001 — đưa một tấm thẻ lên # Thẻ Pokémon tiếng Anh, một set (CRI - Chaos Rising), kèm giá thị trường USD: $ cardstream-web --game Pokemon --set-code CRI --alphabet latin --price-stats
Mã nguồn mở. Tự host. Stream của bạn, hệ thống của bạn.
Không có nền tảng trung gian, không có giấy phép tính theo người dùng: kết nối API của Ximilar hoặc hệ thống nhận diện của riêng bạn, và cardstream chỉ gọi một lượt cho mỗi thẻ khác nhau chứ không phải cho mỗi khung hình. Dù bạn break trên Whatnot, chạy một buổi live kiểu Fanatics Live hay tự livestream bán hàng trên kênh riêng, hãy chạy cardstream ngay tối nay trên chiếc máy bạn đang có.