بازی های جالب آندروید

لایبرری اپن‌سورس یادگیری ماشینی جهت استفاده در صفحات وب

۲۳ خرداد ۱۳۹۷

ml5.js با هدف ایجاد مدل‌های ML (یادگیری ماشینی) برای طیف گسترده‌ای از کاربران از جمله دولوپرها، دانش‌آموزان و غیره به صورت اپن‌‌سورس در دسترس قرار گرفته است. این لایبرری امکان دسترسی دولوپرها به الگوریتم‌ها و مدل‌های یادگیری ماشینی را روی مرورگر فراهم می‌کند و برخلاف لایبرری TensorFlow.js نیاز به هیچ‌گونه دیپندسی (وابستگی) فراتر از خود این لایبرری ندارد (برای آشنایی بیشتر با تنسورفلو، به مقالۀ TensorFlow.js: یک لایبرری جاوااسکریپتی مبتنی بر مرورگر برای اجرای مدل‌های یادگیری ماشینی مراجعه کنید.)

ml5.js شامل مواردی مانند نمونه سورس‌کد، آموزش نحوۀ کار با آن و دیتاست‌های سَمپِل (نمونه) است و همچنین در این لایبرری بر به اصطلاح Computer Ethics بسیار تأکید شده است (Computer Ethics یا اخلاق در دنیای کامپیوتر و برنامه‌نویسی عبارت است از رویه‌ها، ارزش‌ها و شیوه‌های استفاده از تکنولوژی‌های کامپیوتری و رشته‌های مربوط به آن بدون آسیب رساندن و یا نقض ارزش‌های اخلاقی و اعتقادات هر فرد، سازمان یا نهادی که آن تکنولوژی یا ابزار را ارائه کرده است.)


برای مثال، چیزهایی همچون Bias (تعصب) در دیتاست‌ها، آسیب‌های رایج اینترنتی، منابع و اطلاعاتی که از طریق سرویس‌های ارائه‌شده به کاربران و بدون اطلاع ایشان جمع‌آوری می‌شوند بخشی از موضوعاتی هستند که در مستندات این لایبرری و در مورد جمع‌آوری دیتا و استفاده از آن ارائه شده است (در همین راستا و برای آشنایی بیشتر با لزوم مقابله با جهت‌گیری در توسعهٔ الگوریتم‌های کامپیوتری، توصیه می‌کنیم به مقالهٔ Unbiased AI: تلاس مایکروسافت و فیسبوک برای شناسایی الگوریتم‌های متعصبانهٔ هوش مصنوعی مراجعه نمایید.) به عنوان نمونه صفحه‌ای که از این لایبرری داخل آن استفاده شده است داریم:


<!DOCTYPE html>
<html>
  <head>
    <meta charset=utf-8>
    <title>Simple ml5.js Example</title>
    <script src="http://sokanacademy.com/ml5.min.js"></script>
    <script>
    // Initialize the imaImageClassifier method with the pre-trained SqueezeNet model.
    const classifier = new ml5.ImageClassifier('SqueezeNet');

    function onImageReady() {
      // Get the image element from the page
      let img = document.getElementById('image');
      // Get a prediction for that image
      classifier.predict(img, 10, gotResult);
    }

    // When we get the results
    function gotResult(results) {
      // The results are in an array ordered by probability.
      document.getElementById('result').innerText = results[0].label;
      document.getElementById('probability').innerText = results[0].probability.toPrecision(2);
    }
    </script>
  </head>
  <body>
    <!--
    This is the image we want to use.
    We can change the src later in code.
    We set crossOrigin to anonymous because imgur
    will respect that and send CORS headers.
    Not needed if you're loading an image from your own domain.
    -->
    <h1>Simple Image Classification Example</h1>
    <img onload="onImageReady()" id="image" src="https://i.imgur.com/wxrLX68.jpg" crossOrigin="anonymous" >

    <p>
      I guess this is a <span id="result">...</span>.
      My confidence is <span id="probability">...</span>
    </p>
  </body>
</html>


لازم به ذکر است که ml5.js از لایبرری‌های Processing و P5.js الهام گرفته شده و هدف اصلیش این است که یادگیری ماشینی را از طریق یک اینترفیس ساده و مختصر برای افراد مبتدی، طراحان وب و علاقه‌مندان ارائه دهد.