چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم

VK یک سنت جالب دارد - یک هکاتون داخلی که فقط بچه های VKontakte می توانند در آن شرکت کنند. من از طرف تیمی که امسال مقام اول را کسب کرد و به طور کامل از خستگی مرد، در مورد هکاتون به شما خواهم گفت، اما موفق شد یک آشکارساز حرکت رقص را برای دوربین داستان امتحان کند.

چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم

نام من ... پل، من تیم تحقیقاتی برتر VKontakte را رهبری می کنم و نگرش گرمی نسبت به هکاتون دارم: به عنوان یک شرکت کننده (Junction یا تعدادی هک عمیق) و اخیراً به عنوان متصدی (هکاتون VK یا مورد VKontakte در Junction - اتفاقاً این اولین بار بود. من در آنجا شرکت روسی شرکت کردم). ما برای چهارمین سال هکاتون VK را برگزار می کنیم که برای همه آزاد است (آخرین باری که به مقر عمومی ارمیتاژ صعود کردیم) و بخش قابل توجهی از تیم فنی ما قبل از پیوستن به VK در آن شرکت کردند.

یک هکاتون داخلی به خود تیم این امکان را می دهد که آزمایش های زیادی با این پلتفرم انجام دهد، ایده های مختلف را آزمایش کند و به طور کلی سرگرم شود. یک تفاوت مهم این است که راه حل ها می توانند بسیار بیشتر در VK ادغام شوند، که به ما این فرصت را می دهد تا به نمونه های اولیه جالب برسیم.

هکاتون در تمام طول روز در خانه خواننده برگزار می شود - درست در اواسط هفته، ستاد به یک حرکت نیمه شب تبدیل می شود. تماشای اینکه چگونه نظافتچی ها صبح با تعجب به اطراف نگاه می کنند خنده دار است - یک دفتر معمولاً خالی در ساعت 6 صبح ناگهان پر از افراد پشمالو می شود که مانند زامبی ها حرکت می کنند و فریاد می زنند: "پنج ساعت مانده!" یا وقتی ساعت سه صبح وارد آشپزخانه می شوید و در طول جلسات بوی خوابگاه های دانشگاه می دهد: نوشیدنی های انرژی زا، پیتزا و وحشت. این، البته، در یک روز معمولی اتفاق می افتد، اما در چنین مقیاس بزرگی نادر است.

سه هکاتون داخلی قبلی در تابستان برگزار شد. در سال 2019، ما تصمیم گرفتیم زمان را برای چیزهای بی اهمیت تلف نکنیم و همچنین یک هکاتون زمستانی برگزار کنیم - دو هکاتون بسیار بهتر از یک است، زیرا این یک فرصت جالب برای آزمایش و اجرای ایده ای است که زمان کافی برای آن در ریتم معمول وجود ندارد. قوانین نیز تغییر کرده است: قبلا یک تیم حداکثر می توانست سه نفر داشته باشد، اما امسال چهار نفر هستند، اما یکی کد نمی نویسد، بلکه در چیز دیگری تخصص دارد. امکان دعوت از طراحان، مدیران محصول، آزمایش کنندگان، بازاریابان و سایر افراد به تیم وجود داشت. در مجموع 38 تیم در این هکاتون شرکت کردند.

Dreamtim (به طور دقیق تر، یکی از 38)

با هم به توافق رسیدیم دانی و با هم متقاعد شدیم ایگور и تیوما به تیم بپیوندید همانطور که انتظار می رفت، مدل ها مسئولیت ما را بر عهده داشتند، اگور مسئول iOS بود، تیوما مسئول تولید و طراحی بود. توسعه موبایل + طراحی + کمی یادگیری ماشینی و باطن کلید موفقیت در هکاتون 2k19 است.

حتی امسال، تقسیم بندی به آهنگ هایی ظاهر شد که قبلاً وجود نداشت: رسانه (که در آن شرکت کردیم)، ارتباطات، زیرساخت، محتوا و سرگرمی. ما رقبای قدرتمندی داشتیم. به عنوان مثال، ما دائماً توسط طراح ارشد VK انگیزه داشتیم ایلیا، که به اتاق ما آمد و نمونه های اولیه ایده تیمش را نشان داد.

فکر

- تقریباً در همه هکاتون هایی که شرکت کردم جوایز را گرفتم و از هکاتون داخلی زمستان امسال هم همین انتظار را داشتم. (دانیا به خودش اطمینان داشت)

ایده ما (به ویژه دانینا) در ابتدا این بود: ما می‌خواستیم موضوع تولید موسیقی را بررسی کنیم + همه چیز را در دستگاه داشته باشیم، در غیر این صورت "خیلی باطن" خواهد بود. هکاتون با طوفان فکری شروع شد - ما به این فکر کردیم که چه چیزی می توانیم به دست آوریم. تولید موسیقی جالب است، اما من می خواهم آن را به کاربر وابسته کنم. چند دکمه؟ شاید روی صفحه نقاشی بکشید و بر اساس آن موسیقی تولید کنید؟ در همان زمان، ما از بچه های تیم موسیقی یاد گرفتیم که چگونه آهنگ های مورد نیاز خود را اضافه کنیم. اما هنوز کاملاً درست به نظر نمی رسید. تیم های همسایه با خوشحالی روی لپ تاپ خود روی چیزی کار می کردند و باعث ناامیدی می شدند.

- اگر گیتار هوا را بشناسید، انگار دارید گیتار می‌نوازید و بسته به این، صدای گیتار را می‌نوازید؟ (تم)

بینگو! این ایده ستیزه جویانه است و ما این قدرت را داریم که همه چیز را به شیوه ای عالی ترتیب دهیم. برای تشخیص حرکت وجود دارد posenet، و او بسیار خوب است (همچنین سازگار با موبایل). بیا وانمود کنیم!

چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم

تصمیم

وظایف اصلی ایجاد یک شبکه روی دستگاه (باید واقعی باشد) و یادگیری تشخیص حرکات است. اگور شروع به پورت کردن کرد، تیوما شروع کرد به فکر کردن در مورد اینکه چه حرکاتی می تواند جالب باشد (فقط یک گیتار - خسته کننده)، و من و دانیا شروع به شناخت آنها کردیم. اما این نیاز به داده دارد. تفاوت بین PRO و آماتور چیست؟ PRO دارای یک خوشه با یک GPU است - این یک چیز است، دو - PRO در صورت نیاز داده ها را برای خود جمع آوری می کند. دانیا غرفه ای ترتیب داد که در آن داده های مختصات خام یک چهره شناخته شده از یک دوربین ضبط شد و سپس - رقصید! آن شب ما رقصیدن با نخ دندان را یاد گرفتیم، skibidi и دوتسا.

چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم
چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم

به‌عنوان پایه‌ای برای ضبط حرکات، از یک لپ‌تاپ کار استفاده کردیم که برای اولین بار چهره دنی را ضبط کرد (او قبلاً حتی یک خط در JS ننوشته بود) وقتی یک خطای نامفهوم دیگر در JS مشاهده کرد.

چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم

- من متوجه نمی شوم، یک خطای سطح دارم: چاپ در پایتون ناپدید شده است! (دانیا)

رقص شبانه (به معنای واقعی کلمه)

ما ساعت ها حرکت مداوم را در شب جلوی دوربین فیلمبرداری کردیم. آنها خودشان آن را ضبط کردند و همچنین توسعه دهندگانی را که روی زمین سرگردان بودند دستگیر کردند و آنها را مجبور به رقص کردند. ما هفت ترکیب مختلف به دست آوردیم - حالا باید یاد می گرفتیم که بین آنها تمایز قائل شویم.

چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم
چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم

هر سه ساعت یکبار وارد می‌شدم تا ببینم آیا آن‌ها زنده‌اند یا نه.» پاشا فریاد زد: "ما یک محور داریم!" - و دانیا با تمام قدرت خم شد. سپس همه پایپ را رقصیدند. وقتی قدرت دانیل تمام شد، پاشا پنجره را باز کرد و گفت: "بچه ها، ما باید سرحال شویم." (مدینه)

داده‌های این شکل از قبل پردازش شده بود: پاها به بیرون پرتاب شدند، سر به طور میانگین محاسبه شد و به مختصات قطبی نسبت به تنه تبدیل شد. ما آشکارساز حرکت را با استفاده از catboost آموزش دادیم - با استفاده از گزیده‌ای سه ثانیه‌ای از جریان داده از مدل. تا این شب ما با کتابخانه کار نکرده بودیم - معلوم شد که یک کتابخانه جنگی است و می توانید آن را در iOS قرار دهید.

چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم

آنها طبقه بندی چند کلاسه را آموزش می دادند، با یک کلاس تا حد ممکن خسته کننده - فقط در جلوی دوربین آویزان کردن. دشوارترین کار ضبط حرکت "سنگ" بود - ما چنان فداکارانه سر خود را تکان دادیم که پس از مدتی شروع به چرخش کرد. و آنها دستی را با "بز" بیرون آوردند ، اگرچه این بی معنی بود - پوزنت فقط یک نقطه در کل دست دارد ، انگشتان را نمی بیند.

چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم

- حدود ساعت 3 صبح پاشا داخل کیسه خواب رفت و به مدت یک ساعت منحصراً در آن حرکت کرد و مانند یک کانگورو واقعی می پرید. (مدینه)

حدود ساعت 8 صبح با یک بحران کوچک مواجه شدیم - همه چیز خراب بود و هیچ چیز کار نمی کرد، اما بعد ناگهان همه چیز خود به خود شروع به کار کرد. پیچاندن هر دو مدل به برنامه بزرگترین چالش بود - Egor مونتاژ را به معنای واقعی کلمه پنج دقیقه قبل از مهلت پایان داد. بیایید به او صحبت کنیم:

- بعد از اینکه ایده را پیدا کردیم، همه چیز بسیار خوب و سازنده پیش رفت. بچه ها شبکه را آموزش دادند و رقصیدند، و من PoseNet را مستقیماً در مرورگر به دوربین داستان در جاوا اسکریپت متصل کردم. آزمایش های اولیه به خوبی کار می کردند و به طرز شگفت انگیزی سریع بودند. بنابراین، وقتی صبح معلوم شد که WebGL در WebView به طور غیرمنتظره ای هنگام کار با بافت ها برای برخی مزخرفات از کار افتاده است و راهی برای یافتن راه حل وجود ندارد، تقریباً ناامید شدم. اما برای تسلیم شدن خیلی دیر بود: ما از این ایده می سوختیم. بنابراین، با آخرین توان خود و با آخرین قوطی رد بول، یک مدل جایگزین مبتنی بر CoreML را به مشتری iOS در حال حرکت کشاندیم و شروع به ردیابی ژست‌ها به صورت بومی کردیم - تا سپس آنها را با رقص به مدل ارسال کنیم. و در خروجی مقداری نتیجه بگیرید. در اصل کار را دوباره از نو تکرار کردیم! چالش دیگر مدل دوم بود که ناگهان بیش از هزار آرگومان به عنوان ورودی انتظار داشت! Xcode یک رابط برای آن ایجاد کرد که استفاده مستقیم از آن غیرواقعی بود. خوشبختانه، دانش من از Objective-C من را ناامید نکرد و راه حل ظریفی پیدا شد. (Yegor)

پیچینگ

روز جمعه، ساعت 14 بعد از ظهر، مهلتی برای آپلود یک ویدیو در مورد پروژه وجود داشت - چندین تیم به موقع به آن نرسیدند و رد صلاحیت شدند. و در ساعت 14:40 برای متصدیان پیست مربوط به محصول مسابقه داشتیم. ما بچه‌هایی از تیم ویدیو و موزیک داشتیم و به نظر می‌رسید که آنها همه چیز را در مورد زمین دوست داشتند. ما در پیست خود مقام دوم را گرفتیم (اول می خواستیم، زیرا پروژه باحالی داریم!) و به فینال رسیدیم (دو تیم از پیست ما راه یافتند).

- امسال برای اولین بار سرپرست یک هکاتون داخلی بودم. با خویشتنداری خواهم گفت: ارزیابی کار فوق العاده سخت بود. سطح همه تیم ها بدون استثنا خارج از باور بود. یک ویژگی نباید فقط از نظر فناوری پیشرفته باشد، نه فقط «نزدیک به تولید»، نه فقط «به طور بالقوه برای محصولات ما مفید باشد». پروژه برنده باید همه این معیارها را به طور همزمان رعایت کند. به نظر می رسد که بچه ها موفق شدند. (اندرو)

ما آخرین بازی خود را در ساعت 17:40 بعد از ظهر انجام دادیم. در این زمان، لازم بود دمو دیگری آماده شود، این بار برای کل تیم، و هیئت داوران متفاوت بود - مدیر فنی، مدیر محصول و مدیر بازاریابی.

ساعت پنج بعد از ظهر همه چیز تمام شد - ما به خانه رفتیم تا بخوابیم، بدون اینکه چیزی در مورد نتایج آن بدانیم.

نتایج در نهایت است

نتایج فقط روز دوشنبه اعلام شد. اول، آنها به برندگان تراک ها جایزه دادند (مورد ما نیست - بگذارید یادآوری کنم، ما دوم شدیم)، سپس رهبران تماشاگران رای دادند (نه ما) و سپس سوم (و این نیز ما نیستیم)، دوم (باز هم نه ما) و در نهایت ما.

در اینجا پروژه هایی وجود دارد که باید با آنها رقابت کنیم:

مقام دوم - دستیار صوتی پاسخگو؛
مکان سوم - جدول زمانی خطاهای داخلی؛
جایزه منتخب مردم یادآور جلسات گفتگوی آینده است.

- این بهترین هکاتونی است که من تا به حال در آن شرکت کرده ام. رانندگی بسیار بیشتر از حتی در Junction وجود داشت. (دانیا)

- من واقعاً از کار با همکارانی از بخش کاملاً متفاوت لذت بردم - قبلاً هرگز یادگیری ماشینی را لمس نکرده بودم، به نظرم نوعی جادو بود، اما اکنون اینطور نیست. (Yegor)

- خیلی باحال بود که با چنین پروژه جالبی به عضوی از تیم باحالی درآمدم. در یک روز توانستم طراح، فیلمبردار، صدابردار، تدوینگر، نوازنده و کپی رایتر باشم! من هم تنها کسی بودم که توانستم بخوابم. (تم)

زندگی بعد از هکاتون

اکثر پروژه‌های توسعه‌یافته در هکاتون‌ها به دلایل مختلف به فروش نمی‌رسند: تغییر تمرکز، پیچیدگی اجرا، چیزی که در اجرا پیش‌بینی نشده است. هکاتون داخلی نیز از این قاعده مستثنی نیست.

با این وجود، ما پروژه هایی را فهرست می کنیم که نور روز را دیدند:

  • مورد علاقه همه داوینچی;
  • بررسی سازگاری کاربر، که در 14 فوریه 2018 راه اندازی شد.
  • красивые پوسترها برای نوشته های کوتاه؛
  • و تعدادی از ویژگی های داخلی که ما خوشحال می شویم در مورد آنها صحبت کنیم، اما نمی توانیم :)

چگونه با یادگیری skibidi، flossing و javascript برنده یک هکاتون داخلی شدیم

منبع: www.habr.com

اضافه کردن نظر