cardstream
Hỏi đáp

Câu hỏi thường gặp

Những câu hỏi hay gặp nhất: cài đặt và gỡ bỏ, tốn bao nhiêu, thứ gì rời khỏi máy của bạn và nó gọi tên được những gì. Những gì dài hơn nằm ở trang tài liệu.

Cài đặt và gỡ bỏ

Cài đặt, cập nhật, gỡ cài đặt

Script cài đặt chỉ đụng đến đúng hai chỗ trên máy bạn, và cả hai bạn đều có thể tự xóa.

Tôi cần gì để chạy nó?

Một chiếc máy có Python 3.11 trở lên, và gần như chỉ có vậy. macOS arm64, Linux amd64 và Windows amd64 đều dùng chung một bản phát hành thuần Python, không cần GPU. ffmpeg cài trên hệ thống chỉ cần cho các nguồn kéo và lắng nghe (RTSP, RTMP, SRT); webcam, tệp hay giao diện trình duyệt thì không cần đến nó.

Script cài đặt đặt mọi thứ ở đâu?

Hai chỗ. ~/.cardstream là thư mục cài đặt: một virtualenv trong venv/ và trọng số mô hình trong models/. Hai lệnh cardstream-web và cardstream-client là những shim nhỏ được ghi vào ~/.local/bin; chúng gọi các tệp thực thi trong venv với đường dẫn mô hình đã điền sẵn, nên cờ nào bạn truyền vào cũng được ưu tiên. Cả hai vị trí đổi theo CARDSTREAM_HOME và INSTALL_DIR. Không thứ gì khác trên máy bị đụng đến, đặc biệt là script không bao giờ sửa shell profile của bạn: nếu ~/.local/bin chưa nằm trong PATH, nó in ra một ghi chú và để việc thay đổi lại cho bạn.

Làm sao cập nhật lên phiên bản mới?

Chạy lại đúng dòng lệnh đó. Nó cài bản phát hành hiện tại vào virtualenv đang có và ghi lại các shim. Trọng số đã nằm trong ~/.cardstream/models được giữ nguyên, vì chúng chỉ được tải khi còn thiếu, nên một lần cập nhật là một lượt tải nhỏ chứ không phải thêm một phần tư gigabyte nữa. Để dừng ở một bản phát hành cụ thể thay vì bản mới nhất, hãy đặt CARDSTREAM_VERSION.

# vẫn dòng lệnh đó; /install.sh chuyển hướng tới script trên main
$ curl -fsSL https://cardstream.ai/install.sh | sh
$ curl -fsSL https://cardstream.ai/install.sh | CARDSTREAM_VERSION=v0.5.0 sh
$ cardstream-web --version

Làm sao gỡ cài đặt?

Hai lệnh. Lệnh đầu xóa virtualenv và trọng số mô hình, lệnh thứ hai xóa hai shim. Không còn gì khác phải dọn: không daemon, không mục khởi động cùng hệ thống, không gói hệ thống nào.

$ rm -rf ~/.cardstream # venv/ + models/
$ rm -f ~/.local/bin/cardstream-web ~/.local/bin/cardstream-client

Nếu bạn đã cài với CARDSTREAM_HOME hoặc INSTALL_DIR được đặt, hãy xóa các đường dẫn đó thay vào, và dùng sudo nếu bạn đã trỏ các shim vào một thư mục hệ thống. Những gì bạn tự tay thêm thì vẫn do bạn hoàn tác: một dòng PATH trong shell profile, lệnh export XIMILAR_API_KEY và mọi thư mục bạn đã truyền cho --store-images. Ứng dụng không ghi gì khác vào thư mục home của bạn. Hãy kiểm tra xem nó đã biến mất chưa bằng command -v cardstream-web trong một shell mới, vì shell cũ còn nhớ kết quả tra cứu cho đến khi bạn chạy hash -r.

Key và chi phí

Tốn bao nhiêu và cần những gì

Không có nền tảng trung gian: máy của bạn, key của bạn, và một bộ máy có nhiệm vụ gọi ra ngoài càng ít càng tốt.

Tôi có cần API key của Ximilar không?

Với đường nhận diện mặc định thì có, và đó là thông tin xác thực duy nhất mà cả hệ thống cần. Lấy key tại ximilar.com và export nó thành XIMILAR_API_KEY trước khi bắt đầu. Nếu bạn kết nối bộ nhận diện của riêng mình thì bạn chỉ cần những gì endpoint đó đòi hỏi, và không cần gì từ Ximilar.

$ export XIMILAR_API_KEY=your-key

Bản thân cardstream tốn bao nhiêu?

Không tốn gì. Không thuê bao, không giấy phép tính theo người dùng, không phí nền tảng: chỉ là một gói Python với giấy phép thoáng mà bạn chạy trên máy của mình, cùng trọng số phát hiện được công bố theo Apache-2.0 kèm các bản phát hành. Thứ bạn trả tiền là các lượt gọi nhận diện đến endpoint mà bạn kết nối, và giữ con số đó thấp chính là toàn bộ mục đích của bộ máy cục bộ: khoảng một lượt gọi cho mỗi thẻ khác nhau bạn đưa lên, tức chừng một trăm lượt mỗi giờ, trong khi một pipeline đơn giản xử lý từng khung hình ở 15 fps sẽ gửi 54.000 lượt. Lưu một buổi live vào tài khoản Ximilar của bạn thêm một lần bắt đầu phiên có tính phí cho mỗi buổi; tiếp tục phiên sau khi khởi động lại thì miễn phí.

Tôi có dùng được mô hình của riêng mình, hay hệ thống nhận diện của riêng mình không?

Cả hai đều được. Bộ định vị thẻ và bộ lọc trùng thẻ được định tuyến theo backend: bản export RF-DETR .onnx đi kèm, một bản RT-DETRv2, hoặc một thư mục transformers hay hub id khi bạn còn đang tinh chỉnh bản finetune. Bước nhận diện phía sau chỉ là một endpoint, nên trỏ nó sang bộ nhận diện của riêng bạn vẫn giữ nguyên mọi bộ lọc, cơ chế điều tiết và cooldown đứng trước nó. Xem các backend mô hình và kho mô hình.

Vận hành

Phần cứng, stream và giữ an toàn

Nó chạy song song với buổi live, trên chính chiếc máy bạn đang dùng để stream.

Tôi có cần GPU không?

Không. Trọng số đi kèm là các bản export ONNX được tính toán cho CPU, và mọi thứ bộ máy cục bộ làm (bộ lọc chuyển động, điều tiết việc phát hiện, embedding trả lời câu hỏi “vẫn thẻ đó hay thẻ mới?”) đều chạy trên bộ xử lý bạn đang có. GPU là một lựa chọn cho trọng số chính xác hơn của riêng bạn, chứ không bao giờ là yêu cầu của cấu hình mặc định.

Nó có dùng được với Whatnot hay Fanatics Live không?

Có, nhưng không phải bằng cách cắm vào sàn: nó lấy luồng video mà bạn đang tạo ra sẵn. Camera ảo của OBS, một đầu ra RTMP hoặc SRT thứ hai bên cạnh đầu ra đang phát lên nền tảng, kéo RTSP từ một encoder, hay đơn giản là một camera riêng chĩa vào cùng tấm lót đó. Hướng dẫn livestream bán hàng đi qua cả bốn cách từ đầu đến cuối.

Thật ra thứ gì rời khỏi máy của tôi?

Ở chế độ client-side, một ảnh cắt JPEG cho mỗi thẻ khác nhau: không phải cả stream, không phải các khung hình xung quanh, không phải phần còn lại của tấm lót. Mọi quyết định về việc có nên gửi gì đi hay không đều được đưa ra cục bộ trước, nên một giờ video mà bạn đưa lên một trăm tấm thẻ là một trăm yêu cầu nhỏ. Ngoại lệ duy nhất là thứ do bạn tự bật: với --ximilar-stream, lịch sử của buổi live, gồm một dòng văn bản cho mỗi thẻ cộng với ảnh cắt đã dùng để nhận diện, cũng được lưu vào một phiên trong tài khoản Ximilar của chính bạn. Mặc định là tắt, còn --no-ximilar-stream-images thì chỉ lưu văn bản.

Tôi có xem lại được một buổi live sau đó không?

Có, nếu bạn lưu nó. Khởi động với --ximilar-stream NEW, và mọi tấm thẻ có trong lịch sử, kèm giá, thời gian trên stream và ảnh cắt đã dùng để nhận diện, sẽ được đưa vào một phiên trong tài khoản Ximilar của bạn trong lúc buổi live diễn ra. Sau đó hãy mở mục Cardstream của ứng dụng Ximilar: giá trị của buổi live, các sản phẩm giá trị nhất và các set đứng đầu, từng tấm thẻ kèm hình ảnh; đánh dấu thẻ đã bán và sửa kết quả sai. Phải khởi động lại giữa buổi live? Truyền id của phiên thay cho NEW và nó tiếp tục, kể cả khi phiên đã đóng. Để lưu vào workspace của nhóm, dùng --ximilar-workspace. Xem chi tiết.

$ cardstream-web --price-stats --ximilar-stream NEW

Tôi có chạy nó trên mạng LAN để một máy khác mở giao diện được không?

Đừng làm vậy. Giao diện web không có xác thực và đang giữ API key của bạn, nên chỗ của nó là 127.0.0.1 và không ở đâu khác. Bên trong, container bind vào 0.0.0.0, đó là lý do lệnh docker run trong tài liệu chỉ publish cổng tới 127.0.0.1. Nếu bạn thật sự cần truy cập từ một máy khác, hãy đặt một tunnel có xác thực của riêng bạn ở phía trước thay vì mở cổng.

$ docker run --rm -e XIMILAR_API_KEY -p 127.0.0.1:8001:8001 \
    -v cardstream-models:/models cardstream
Nhận diện

Nó gọi tên được gì, và chắc chắn đến đâu

Mỗi kết quả khớp đến kèm khoảng cách, mức tin cậy và những tấm thẻ khác mà nó có thể là.

Nó nhận diện được những thẻ nào?

Bốn danh mục, một công tắc. Thẻ bài TCG: Pokémon, Magic: The Gathering, Yu-Gi-Oh!, One Piece, Lorcana và khoảng hai mươi game nữa, thẻ lẻ đời mới lẫn đời cũ được đọc thẳng từ stream. Thẻ thể thao của mọi môn lớn, chi tiết đến tận parallel và năm. Slab đã chấm điểm, đọc từ nhãn mà không cần phá vỏ. Và truyện tranh, theo tựa truyện, số phát hành và năm. Một cờ chọn danh mục, hoặc hộp thoại cài đặt đổi nó ngay giữa stream. Xem danh sách đầy đủ.

Chuyện gì xảy ra khi nó gọi sai tên thẻ?

Bạn sẽ thấy trước điều đó. Mỗi kết quả khớp mang theo khoảng cách thô và một mức High / Medium / Low (ranh giới nằm ở 0.30 và 0.40), cộng thêm tối đa bốn tấm thẻ thay thế mà nó có thể là, và tấm đúng thường nằm trong danh sách ngắn đó. Đặt một ngưỡng kết quả, và bất cứ thứ gì dưới ngưỡng sẽ không hề lên overlay. Nếu cả buổi live chỉ có một game hoặc một set, các giá trị điền sẵn thu hẹp việc tìm kiếm trước cả khi nó bắt đầu: cho nó biết game, mã set hoặc hệ chữ viết, và endpoint thôi phải đoán những thứ đó.

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ó.