cardstream
שאלות נפוצות

שאלות נפוצות

השאלות שעולות הכי הרבה: התקנה והסרה, כמה זה עולה, מה יוצא מהמחשב, ומה הוא יודע לזהות. כל מה שארוך יותר נמצא במרכז התיעוד.

התקנה והסרה

התקנה, עדכון, הסרה

סקריפט ההתקנה נוגע בדיוק בשני מקומות במחשב שלכם, ואת שניהם אפשר למחוק בכל רגע.

מה צריך כדי להריץ אותו?

מחשב עם Python 3.11 ומעלה, וזה בערך הכול. macOS arm64, Linux amd64 ו-Windows amd64 נתמכים כולם באותה גרסת Python טהורה, בלי צורך ב-GPU. קובץ ההפעלה ffmpeg של המערכת נדרש רק למקורות של משיכה והאזנה (RTSP, RTMP, SRT); מצלמת רשת, קובץ או ממשק הדפדפן לא צריכים אותו.

איפה סקריפט ההתקנה שם את הקבצים?

בשני מקומות. ~/.cardstream היא תיקיית השורש של ההתקנה: סביבה וירטואלית ב-venv/ ומשקלי המודלים ב-models/. שתי הפקודות, cardstream-web ו-cardstream-client, הן קובצי shim קטנים שנכתבים לתיקייה ~/.local/bin; הם מריצים את קובצי ההפעלה של ה-venv עם נתיבי המודלים שכבר ממולאים, כך שכל דגל שתעבירו גובר עליהם. את שני המיקומים אפשר להזיז עם CARDSTREAM_HOME ו-INSTALL_DIR. הסקריפט לא נוגע בשום דבר אחר במחשב, ובמיוחד הוא אף פעם לא עורך את פרופיל ה-shell שלכם: אם ~/.local/bin לא נמצאת ב-PATH, הוא מדפיס הודעה ומשאיר את השינוי לכם.

איך מעדכנים לגרסה חדשה?

מריצים שוב את אותה פקודה. היא מתקינה את הגרסה הנוכחית בסביבה הווירטואלית הקיימת וכותבת מחדש את קובצי ה-shim. משקלים שכבר נמצאים ב-~/.cardstream/models נשארים כמו שהם (הם מורדים רק כשהם חסרים), כך שעדכון הוא הורדה קטנה ולא עוד רבע ג׳יגה-בייט. כדי להתקין גרסה מסוימת במקום האחרונה, מגדירים את CARDSTREAM_VERSION.

# אותה פקודה; cardstream.ai/install.sh מפנה לסקריפט שב-main
$ curl -fsSL https://cardstream.ai/install.sh | sh
$ curl -fsSL https://cardstream.ai/install.sh | CARDSTREAM_VERSION=v0.5.2 sh
$ cardstream-web --version

איך מסירים אותו?

בשתי פקודות. הראשונה מוחקת את הסביבה הווירטואלית ואת משקלי המודלים, השנייה את שני קובצי ה-shim. אין שום דבר אחר לנקות: אין דמון, אין פריט הפעלה בכניסה למערכת, אין חבילת מערכת.

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

אם התקנתם עם CARDSTREAM_HOME או INSTALL_DIR מוגדרים, מוחקים את הנתיבים האלה במקום, ומשתמשים ב-sudo אם כיוונתם את קובצי ה-shim לתיקיית מערכת. מה שהוספתם ידנית נשאר לכם לבטל: שורת PATH בפרופיל ה-shell, ה-export של XIMILAR_API_KEY, וכל תיקייה שהעברתם ל---store-images. האפליקציה לא כותבת שום דבר אחר בתיקיית הבית שלכם. כדי לוודא שהוא נמחק, מריצים command -v cardstream-web ב-shell חדש: הישן שומר את החיפוש במטמון עד שמריצים hash -r.

מפתחות ועלות

כמה זה עולה ומה זה צריך

בלי פלטפורמה באמצע: החומרה שלכם, המפתח שלכם, ומנוע שתפקידו לשלוח קריאות כמה שפחות.

צריך מפתח API של Ximilar?

למסלול הזיהוי שבברירת המחדל, כן, וזה פרט הגישה היחיד שכל המערכת צריכה. משיגים אותו ב-ximilar.com ומייצאים אותו כ-XIMILAR_API_KEY לפני שמתחילים. אם מחברים במקום זה מזהה משלכם, צריך את מה שנקודת הקצה הזאת צריכה, ושום דבר מ-Ximilar.

$ export XIMILAR_API_KEY=your-key

כמה עולה cardstream עצמו?

כלום. אין מנוי, אין רישיון לכל משתמש ואין דמי פלטפורמה: חבילת Python אחת ברישיון מתירני שמריצים על החומרה שלכם, עם משקלי איתור שמתפרסמים ברישיון Apache-2.0 לצד הגרסאות. מה שמשלמים עליו הוא קריאות הזיהוי לנקודת הקצה שחיברתם, וכל הטעם במנוע המקומי הוא להוריד את המספר הזה: בערך קריאה אחת לכל קלף שונה שמוצג, כמאה בשעה, באותה שעה שבה צינור נאיבי שעובד על כל פריים ב-15 פריימים לשנייה היה שולח 54,000. שמירת שידור בחשבון Ximilar מוסיפה חיוב אחד על פתיחת סשן לכל שידור; המשך שלו אחרי הפעלה מחדש הוא בחינם.

אפשר להשתמש במודלים משלי, או במערכת זיהוי משלי?

גם וגם. מודל האיתור ומסנן הזהות מנותבים לפי מנוע: ייצוא ה-.onnx של RF-DETR שמגיע עם החבילה, ייצוא של RT-DETRv2, או תיקיית transformers או מזהה hub כשעדיין משפרים כוונון. שלב הזיהוי שמאחוריהם הוא פשוט נקודת קצה, כך שכיוון שלו אל מזהה משלכם משאיר את כל המסננים, הגבלות הקצב וזמני ההשהיה שלפניו בלי שינוי. פרטים במנועי המודלים ובגן המודלים.

הפעלה

חומרה, שידורים ובטיחות

הוא רץ לצד השידור, על המחשב שממנו אתם כבר משדרים.

צריך GPU?

לא. המשקלים שמגיעים עם החבילה הם ייצואי ONNX בגודל שמתאים למעבד, וכל מה שהמנוע המקומי עושה (מסנן התנועה, הגבלת קצב האיתור, ההטמעה שעונה על "אותו קלף או קלף חדש?") רץ על המעבד שכבר יש לכם. GPU הוא אפשרות למשקלים משלכם עם דיוק גבוה יותר, אף פעם לא דרישה לברירות המחדל.

זה עובד עם Whatnot או Fanatics Live?

כן, אבל לא דרך חיבור לפלטפורמת המכירה: הוא מתחבר לווידאו שאתם כבר מפיקים. מצלמה וירטואלית של OBS, פלט RTMP או SRT שני לצד זה שמזין את הפלטפורמה, משיכת RTSP ממקודד, או פשוט מצלמה משלו שמכוונת לאותו משטח. המדריך למכירה בשידור חי עובר על כל ארבע הדרכים מתחילתן ועד סופן.

מה בעצם יוצא מהמחשב?

במצב צד-לקוח, תמונת חיתוך JPEG אחת לכל קלף שונה: לא השידור, לא הפריימים שמסביב, לא שאר המשטח. כל החלטה אם לשלוח משהו מתקבלת קודם מקומית, כך ששעת וידאו שבה מוצגים מאה קלפים היא מאה קריאות קטנות. החריג היחיד הוא בשליטתכם: עם --ximilar-stream, ההיסטוריה של השידור (שורת טקסט לכל קלף ותמונת החיתוך שממנה זוהה) נשמרת גם בסשן בחשבון Ximilar שלכם. כבוי כברירת מחדל, ו---no-ximilar-stream-images שומר טקסט בלבד.

אפשר לעבור על שידור אחרי שהסתיים?

כן, אם שומרים אותו. מתחילים עם --ximilar-stream NEW, וכל קלף שמופיע בהיסטוריה (עם המחיר שלו, הזמן בשידור ותמונת החיתוך שממנה זוהה) עובר לסשן בחשבון Ximilar שלכם תוך כדי השידור. אחר כך פותחים את אזור Cards Cloud באפליקציית Ximilar: שווי השידור, המוצרים היקרים ביותר והסטים המובילים, כל קלף עם התמונה שלו; מסמנים מה נמכר ומתקנים התאמה שגויה. הפעלתם מחדש באמצע השידור? מעבירים את מזהה הסשן במקום NEW והשידור ממשיך, גם אם הסשן נסגר. לשמירה בסביבת עבודה של צוות משתמשים ב---ximilar-workspace. כל הפרטים.

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

אפשר להריץ אותו ברשת המקומית כדי שמחשב אחר יפתח את הממשק?

לא כדאי. ממשק הווב פועל בלי אימות ומחזיק את מפתח ה-API שלכם, ולכן מקומו ב-127.0.0.1 ובשום מקום אחר. הקונטיינר מאזין ל-0.0.0.0 בתוכו, ולכן פקודת ה-docker run המתועדת מפרסמת את הפורט רק ל-127.0.0.1. אם באמת צריך גישה ממחשב אחר, מציבים לפניו מנהרה עם אימות משלכם במקום לפתוח את הפורט.

$ docker run --rm -e XIMILAR_API_KEY -p 127.0.0.1:8001:8001 \
    -v cardstream-models:/models cardstream
זיהוי

מה הוא מזהה, ובאיזו ודאות

כל התאמה מגיעה עם המרחק שלה, הדרגה שלה והקלפים שזה היה יכול להיות במקומה.

אילו קלפים הוא יכול לזהות?

ארבע קטגוריות, מתג אחד. משחקי קלפי אספנות: Pokémon, Magic: The Gathering, Yu-Gi-Oh!, One Piece, Lorcana ועוד כעשרים, קלפים בודדים חדשים ווינטג׳ שנקראים ישר מהשידור. קלפי ספורט בכל ענפי הספורט הגדולים, עד רמת הפרלל והשנה. קלפים מדורגים בסלאב, שנקראים מהתווית בלי לפתוח את הסלאב. וקומיקס, לפי כותר, מספר גיליון ושנה. דגל אחד בוחר את הקטגוריה, או שחלון ההגדרות מחליף אותה באמצע השידור. לרשימה המלאה.

מה קורה כשהוא מזהה קלף לא נכון?

רואים את זה מגיע. כל התאמה מגיעה עם המרחק הגולמי ועם דרגה High / Medium / Low (הספים נמצאים ב-0.30 וב-0.40), ועם עד ארבעה קלפים חלופיים שזה היה יכול להיות, והנכון בדרך כלל נמצא ברשימה הקצרה הזאת. מגדירים סף תוצאה, וכל מה שמתחתיו לא מגיע לשכבת-העל בכלל. אם כל השידור הוא משחק אחד או סט אחד, המילוי מראש מצמצם את החיפוש עוד לפני שהוא מתחיל: מגדירים את המשחק, את קוד הסט או את מערכת הכתב, ונקודת הקצה מפסיקה לנחש אותם.

קוד פתוח. אירוח עצמי. השידור שלכם, הכלים שלכם.

בלי פלטפורמה באמצע, בלי רישיון לכל משתמש: מחברים את ה-API של Ximilar או מערכת זיהוי משלכם, ו-cardstream קורא לה פעם אחת לכל קלף שונה במקום פעם אחת לכל פריים. בין אם אתם עושים ברייקים ב-Whatnot, מריצים שידור בסגנון Fanatics Live או משדרים מערך מכירות חי משלכם, אפשר להריץ את cardstream כבר הערב על החומרה שכבר יש לכם.