نوادا لایحه ای را برای آوردن علوم رایانه در هر مدرسه تصویب کرد!

نوادا لایحه ای را برای آوردن علوم رایانه در هر مدرسه تصویب کرد!

فرماندار سندووال دیروز لایحه ای امضا کرد که به همه دانش آموزان در نوادا فرصت یادگیری علوم کامپیوتر را می دهد.

SB200 - تصویب شده توسط قانونگذار نوادا در 8 ژوئن - تضمین می کند که هر دانش آموز در ایالت دسترسی به آموزش علوم کامپیوتر با کیفیت بالا با ملزم کردن هر مدرسه متوسطه به ارائه علوم کامپیوتر. بر اساس این لایحه که شامل 2.4 میلیون دلار برای حمایت از تلاش ها می شود ، دانشجویان قادر خواهند بود دوره های علوم رایانه خود را به عنوان واحدهای فارغ التحصیلی حساب کنند.

فناوری به بخش جدایی ناپذیری از زندگی و اقتصاد ما تبدیل شده است و بسیار مهم است. که علوم کامپیوتر به عنوان یادگیری اساسی در سیستم آموزشی K-12 آموزش داده می شود. فارغ از مسیر دانش آموز ، ما باید به هر دانش آموز ابزار لازم برای موفقیت در قرن 21 را بدهیم.

ما می خواهیم از همه شرکای ائتلاف حمایت از Code.org تشکر کنیم ، به ویژه قهرمانان محلی در نوادا ، سناتور جویس وودهاوس ، و فرماندار سندووال.

تبریک می گوییم ، نوادا!

نمرات امتحانات و کلاس های درس علوم کامپیوتر

نمرات امتحانات و کلاس های درس علوم کامپیوتر

با این همه سرعت در پشت علوم کامپیوتر در K-12 ، چگونه می توانیم بفهمیم چه چیزی کار می کند و چه چیزی نه؟ چگونه می توان معلمان ، مدارس و ولسوالی هایی را که دسترسی به علوم رایانه را گسترش می دهند ، اندازه گیری یا پاداش داد ، در حالی که مشارکت گسترده ای را افزایش می دهد ، به ویژه در میان زنان و اقلیت های کم نماینده؟ Code.org اخیراً هنگامی که نرخ قبولی در آزمون AP را از کلاسهای درس اصول علوم رایانه خود منتشر کردیم ، با این س facedال روبرو شد.

موضوع نتایج آزمون در آموزش بسیار حساس است. ما به طور مرتب از معلمانی که تحت تأثیر فرهنگ امتحان قرار می گیرند یا در مورد دعواهای سیاسی در مورد نقش مناسب نتایج امتحان در پاسخگویی معلمان می شنویم. از آنجا که Code.org از معلمان اصول CS ما می خواهد تا هر دانش آموزی را برای شرکت در آزمون علوم کامپیوتر AP تشویق کنند ، ما در مورد نحوه استفاده از نتایج امتحان آنها بسیار حساس هستیم ، تا مطمئن شویم که از آنها استفاده نمی شود و نتیجه گیری های نامناسب می کنیم. ما به ویژه نمی خواهیم نمرات گزارش شده در سطح ملی ما به گونه ای مورد استفاده قرار گیرد که فشار بیجا بر معلمان یا کلاس های درس آنها ایجاد کند.

این یک خطر نظری نیست. با استفاده از Code.org ، هیئت مدیره کالج و سایرین که اصول AP CS را در مدارس سراسر کشور گسترش می دهند ، توجه زیادی به این امتحان جدید شده است و برای جامعه CS مهم است که در مورد نحوه استفاده از نتایج امتحان دقیق فکر کنند.

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

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

این پیشنهادات ممکن است منطقی به نظر برسند ، اما از آنجا که میزان قبولی که در سطح ملی گزارش شده است با سوگیری انتخاب و عوامل دیگر مخدوش می شود ، Code.org معتقد است که دقیقاً برعکس است - این ایده ها از نظر دانشگاهی صحیح نیستند و نتیجه گیری های نادرست از این گزارش های ملی به طور خطرناکی آسان است ، با عواقب ناخواسته. این مسئله ممکن است ظریف به نظر برسد ، اما مهم است.

انتخاب دانش آموزان و سایر عوامل بر نتایج آزمون ملی تأثیر می گذارد

ساده تر است که موقعیت خود را با تصور دو کلاس درس ، در مدارس کاملاً متفاوت توضیح دهیم. معلم الف 90 درصد دانش آموزانش را امتحان داده بود. معلم B 70 درصد از دانش آموزان خود را امتحان کرد. به راحتی می توان گفت معلم A معلم بهتری است ،یا اینکه این نتایج آزمایش می تواند نقشی جزئی در اندازه گیری کار او داشته باشد ، اما مربیان می دانند که این نتیجه گیری خطرناکی است که بدون در نظر گرفتن تفاوت بین مدارس ، دانش آموزان ، یادگیری قبلی آنها و مجموعه ای از عوامل دیگر نتیجه گیری می شود. به این نادرست است که بگوییم نمرات کلاس با کیفیت برنامه درسی مورد استفاده معلمان صحبت می کند. و اگر این امتحان برای دانش آموزان اختیاری باشد ، این نتایج به ویژه اشتباه خواهد بود.

اکنون بیایید به یک مثال واقعی نگاه کنیم ، که سه گروه مختلف از کلاس های درس را با هم مقایسه می کند: گروه A ، گروه B و گروه C ، به نمایندگی از هزاران دانش آموز در هر. معلمان این کلاسها با استفاده از برنامه های درسی مختلف و برنامه های یادگیری حرفه ای آماده شده بودند. اگر گروه A نمره بالاتری از گروه B و گروه B بالاتر از گروه C کسب کرد ، آیا می توانیم درباره کیفیت برنامه درسی یا برنامه یادگیری حرفه ای نتیجه گیری کنیم؟ نمودار زیر نشان می دهد که ما نمی توانیم چنین نتیجه گیری کنیم. (ما نام این برنامه ها را حذف کرده ایم ، اما این داده های دنیای واقعی است)

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

(1) اقتصادی اجتماعی سابقه مدارس یا دانش آموزان؟ (2) چگونه دانش آموزان تصمیم گرفتند که در کلاس علوم کامپیوتر شرکت کنند یا نه؟ (3) چگونه دانش آموزان تصمیم گرفتند که در آزمون AP شرکت کنند یا نه؟ (4) کدام معلمان برای آماده سازی آنها برای تدریس دوره پیشرفت حرفه ای دریافت کردند و کدام یک به تدریس دوره ادامه دادند؟ (5) آیا معلمان دوره را با وفاداری به برنامه درسی تدریس می کردند؟ یا با منابع مخلوط شده و مطابقت داشته اند؟ (6) آیا تغییرات جغرافیایی آنها می تواند بر نمرات تأثیر بگذارد؟

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

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

خطر عواقب ناخواسته

علوم کامپیوتر این یک درس اجباری نیست - در بیشتر ایالت ها ارائه مدارس اختیاری است ، گذراندن دوره توسط دانش آموزان اختیاری است و شرکت در امتحان نیز اختیاری است.

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

این خطر در همه سطوح مقیاس پذیر است. معلمان برای تشویق هر دانش آموز ، به ویژه از گروه های سنتی که کمتر نمایان شده اند ، به مشارکت نیاز دارند که به آنها پاداش می دهد. مدارس و مناطق باید همه دانش آموزان را تشویق به امتحان علوم کامپیوتر کنند. و برنامه های درسی یا یادگیری حرفه ای مانند Code.org باید تشویق شوند تا خود را با تنوع و جمعیت دانش آموزان در برنامه های خود بسنجیم. خودمان - حتی تا حدی - بر اساس نتایج آزمون ملی گزارش شده ، انگیزه های اشتباهی را برای تیم ما ، شرکای ما و مدارس ایجاد می کند. موضوع. در Code.org ، ما بسیار تلاش می کنیم تا تنوع مشارکت در علوم رایانه را افزایش دهیم ، و مهم است که معلمان ما در تلاش های خود برای حمایت از این ماموریت احساس حمایت کنند. Code.org در کنار معلمان ما ایستاده است و ما در برابر پیشنهادات نادرست تحصیلی برای سنجش کار خود به گونه ای که باعث ایجاد فشار بیجا بر کلاس درس آنها شود ، مقاومت خواهیم کرد.

اما امتحانات اغلب در ریاضی و انگلیسی

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

استفاده صحیح از داده های امتحان در تحقیقات

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

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

بدون کنترل کاملگروه ، همچنین می توان با مقایسه نتایج بین دانش آموزان با موقعیت مشابه در مدارس مشابه ، گروه های کنترل "شبه تجربی" ایجاد کرد. در واقع ، بسیاری از سازمانها (از جمله Code.org) دقیقاً درگیر این نوع تحقیقات هستند. این مطالعات شبه تجربی می تواند کمک کننده باشد ، اما نه به عنوان مبنایی برای اظهارات قوی علیت. اندازه گیری کیفیت برنامه درسی این نتایج نمی تواند در انتخاب برنامه درسی ، حتی به عنوان بخشی از یک معادله گسترده تر ، کمک کننده باشد ، زیرا آنها با کیفیت برنامه درسی یا پیشرفت حرفه ای صحبت نمی کنند. پیشنهاد غیر از این به همان اندازه خطرناک است که بگوییم معلم A معلم بهتری از معلم B است زیرا دانش آموزانش در آزمون نمره بالاتری کسب کردند.

پس چگونه مدارس باید برنامه درسی علوم کامپیوتر را انتخاب کنند؟

Code.org یکی از گزینه های بسیاری است که مدارس می توانند هنگام انتخاب برنامه درسی در علوم کامپیوتر به آن توجه کنند. بسیاری از گزینه های فوق العاده دیگر نیز وجود دارد و افرادی که روی این منابع کار می کنند اغلب همکاران و دوستان قدیمی هستند. همه ما بخشی از جامعه ای هستیم که از خودمان بزرگتر هستیم و جنبش ما از همکاری و نه از تقسیم بندی قدرت می گیرد.

فقط به این دلیل که Code.org به طور گسترده مورد استفاده قرار می گیرد به این معنا نیست که ما برای هر فردی بهترین گزینه هستیم. مدرسه برخی از دوره ها با تمرکز بیشتر بر روی کدگذاری مبتنی بر بلوک ، برای دانش آموزانی که تجربه کدگذاری قبلی ندارند ، طراحی شده است. برخی از آنها بخشی از یک مسیر بزرگتر است که با سایر دوره های مدرسه ادغام می شود. هنگام انتخاب برنامه های مختلف آموزشی حرفه ای برای معلمان ، ملاحظات جغرافیایی ممکن است مطرح شود. برخی از منابع علوم رایانه ممکن است به طور خاص برای دانش آموزان معلول طراحی شود. برخی از ارائه دهندگان دوره در قبال خدمات اضافی هزینه ای دریافت می کنند. و با گذشت زمان ، در تحقیقات تحقیقاتی مناسب از عوامل متعددی از جمله نمرات امتحان برای کمک به انتخاب بین گزینه های دیگر استفاده خواهد شد.

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

هادی پرتوی ، Code.org

"من قصد دارم تعمیر کامپیوتر و دفاع شخصی را انجام دهم کلاس تکواندو ، زیرا می ترسم مردم مرا زیبا ببینند و به من صدمه بزنند. " تری

"من قصد دارم تعمیر کامپیوتر و دفاع شخصی را انجام دهم کلاس تکواندو ، زیرا می ترسم مردم مرا زیبا ببینند و به من صدمه بزنند. " تری

من بیست و شش سال ازدواج کردم. پس از مرگ او ، دولت خیلی خوب نبود. آنها همه چیزهایی را که من داشتم ، گرفتند. او بدهکار بود و من نمی دانستم. سیاتل را ترک کردم. در واقع من به سمت ساحل شرقی حرکت می کردم ، اما تا آنجا پیش نرفتم. سان فرانسیسکو مکان خوبی برای بودن است. وقتی بلند می شوم ، راحت تر می شوم و در خیابان ها قدم می زنم و شروع به خوردن صبحانه می کنم. من دیروز غذا نخوردم ، بنابراین امروز واقعاً گرسنه هستم. و هیچ چیز را بدیهی نگیرید با هر چیزی که دارید خوشحال باشید. ”

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

< /img> "من غذای واقعی را دوست دارم. من مرغ سیر درست می کردم. من از وقتی که اینجا بودم چنین چیزی نداشتم. 10-15 سال می گذرد. ​​”

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

"آشپزخانه و حمام من دو موردی هستند که من آنها را مسلم می دانستم."

اکنون من فقط به مکانی برای اقامت احتیاج دارم ، ظاهراً دولتی در این مورد به من کمک می کند من چیزی نشنیده ام. من هرگز امید خود را به این امر نمی گذارم ، زیرا در بیست سال گذشته آن را بارها شنیده ام. آنها نمی توانند با من تماس بگیرند ، بنابراین من باید با آنها تماس بگیرم. من فکر می کنم به این ترتیب در مورد کمک مالی خوب شدم زیرا من فقط یک آفت بودم. بنابراین هر زمان که از آنجا می گذرم ، فقط وارد می شوم و آنها بالاخره از دیدن من خسته می شوند. بنابراین من این کار را انجام دادم و آن را انجام دادم.

زمان شروع زندگی در خیابان ها زمان به سرعت می گذرد. پیش از این ، پنج سال برای من مثل یک سال بود. سپس به دلایلی سرعت آن کاهش می یابد. من ده سال است که بی سرپناه هستم ، اما بیشتر احساس می کنم بیست سال است. انگار زمان متوقف شده بود. من 55 ساله هستم من دوست دارم برگردم و این کار را دوباره با شوهرم ، استیو انجام دهم. از آنجا که من الان خیلی چیزها را می دانم ، ای کاش آن زمان می دانستم.

داستانهای پشت مه یک پروژه چند رسانه ای است که از داستان واقعی باور نکردنی موسی الهام گرفته است: www.moses.movie

www.moses.movie

چرخه شیر: چرخه های رایگان برای ایجاد رایانه اینترنتی

چرخه شیر: چرخه های رایگان برای ایجاد رایانه اینترنتی

شیر چرخه منبعی است که توسعه دهندگان می توانند بلافاصله از آن برای پشتیبانی از راه اندازی پروژه ها در رایانه اینترنتی استفاده کنند.

رایانه اینترنتی برای استفاده همه توسعه دهندگان با افزوده شدن اخیر در دسترس است ظرفیت زیر شبکه برنامه به شبکه از طریق پیشنهادات به سیستم عصبی شبکه (NNS). بنیاد DFINITY برای کمک به توسعه دهندگان فوق شارژ هنگام راه اندازی و راه اندازی ، با مشارکت Fleek یک شیر آب چرخه راه اندازی کرده است. توسعه دهندگان واجد شرایط می توانند به چرخه های رایگان 100 دلاری برای شروع استقرار قراردادهای هوشمند Canister در شبکه دسترسی داشته باشند.

نشانه های پروتکل رایانه اینترنتی (ICP) نشانه اصلی ابزار رایانه اینترنتی است. توکن های ICP را می توان در یک نورون قرار داد تا در اداره شبکه مشارکت داشته باشد ، یا می تواند به چرخه ای تبدیل شود تا نرم افزار روی شبکه اجرا شود. توسعه دهندگان برای پرداخت هزینه محاسبه و مصرف منابع در رایانه اینترنتی از چرخه استفاده می کنند. به منظور استقرار Canisters در تولید ، ابتدا توسعه دهنده باید ICP را بدست آورد. شیر چرخه ها ، که توسط ICP از بنیاد DFINITY تأمین می شود ، به توسعه دهندگان اجازه می دهد تا از این تبدیل صرف نظر کرده و در چند مرحله آسان از Canisters استفاده کنند.

Fleek ساخت و استقرار وب سایت ها را بر روی اینترنت آسان می کند کامپیوتر راه حل میزبانی Fleek مانند Netlify برای وب باز است و توسعه دهندگان را قادر می سازد وب سایت ها را در اینترنت مستقر کنند… medium.com

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

کیف پول چرخه یا دانک ، سرویس جدیدی که توسط Fleek ارائه می شود.

کیف پول چرخه نوع خاصی از قوطی برای مدیریت توزیع و مالکیت چرخه ها است. هنگام استفاده از SDK DFINITY Canister SDK ، کیف پول cycles به عنوان بخشی از پروژه پیش فرض dfx برای شما ایجاد می شود و اکثر عملیات انجام شده با استفاده از کیف پول cycles به طور خودکار انجام می شود. به منظور استقرار برنامه ها برای تولید بر روی رایانه اینترنتی ، توسعه دهنده باید ابتدا Canister ایجاد کرده و یک کیف پول چرخه جدید را در آن مستقر کند. هنگام انتخاب این گزینه در Cycles Faucet ، همه اینها برای شما انجام می شود. شناسه اصلی ارائه شده به عنوان کنترل کننده کیف پول جدید شما تعیین می شود و شما را قادر می سازد تا با استفاده از تعادل چرخه های خود ، قوطی ها را مستقر کنید. برای کیف پول چرخه این امر از Fleek الهام گرفت تا Dank را ایجاد کند ، یک سرویس مبتنی بر قوطی که روی رایانه اینترنتی اجرا می شود و کاربران را قادر می سازد تا چرخه های مربوط به شناسه اصلی خود را حفظ کنند. Dank زیرساخت های لازم Canister و مدیریت چرخه را در پس زمینه ارائه می دهد تا توسعه دهندگان نیازی به نصب کیف پول چرخه خود نداشته باشند. دانک حتی می تواند به طور خودکار تعادل چرخه خود را حفظ کند.

Cycles Faucet منبعی است که توسعه دهندگان می توانند بلافاصله برای حمایت از راه اندازی پروژه ها از آن استفاده کنند. ما نمی توانیم منتظر بمانیم تا ببینیم جامعه توسعه دهندگان رو به رشد در رایانه اینترنتی چه چیزی را شروع می کنند! ____

شروع به ساخت در sdk.dfinity.org کنید و به انجمن توسعه دهندگان ما در forum.dfinity.org بپیوندید.

چشم انداز کامپیوتر 101: کار با تصاویر رنگی در پایتون

منبع: pexels.com

چشم انداز کامپیوتر 101: کار با تصاویر رنگی در پایتون

اصول کار با تصاویر RGB و آزمایشگاه را برای تقویت پروژه های بینایی رایانه خود بیاموزید!

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

راه اندازی

< p> در این قسمت ، محیط پایتون را راه اندازی می کنیم. ابتدا همه کتابخانه های مورد نیاز را وارد می کنیم: از skimage.io import imread ، imshow
 import matplotlib.pyplot as plt 

ما از scikit-image استفاده می کنیم ، که کتابخانه ای از خانواده scikit-learn است که بر کار با تصاویر تمرکز دارد. روش های جایگزین زیادی وجود دارد ، برخی از کتابخانه ها شامل matplotlib ، numpy ، OpenCV ، Pillow و غیره هستند.

در مرحله دوم ، ما یک تابع کمکی برای چاپ خلاصه ای از اطلاعات در مورد تصویر - شکل و محدوده مقادیر در هر یک از لایه ها.

منطق تابع بسیار ساده است و برش ابعاد به محض توضیح نحوه ذخیره تصاویر معنا پیدا می کند.

مقیاس خاکستری

ما با ابتدایی ترین حالت ممکن ، یک تصویر مقیاس خاکستری شروع می کنیم. چنین تصاویری منحصراً از سایه های خاکستری ساخته شده است. رنگهای افراطی سیاه (ضعیف ترین کنتراست) و سفید (قوی ترین شدت) هستند. به مقیاس مقادیر برای تصاویر در مقیاس خاکستری از 0 (سیاه) تا 255 (سفید) متغیر است. تصویر زیر یک نمای کلی از مفهوم را ارائه می دهد.

منبع

در این مقاله ، ما با تصویری که قبلاً به عنوان تصویر کوچک ، دایره مداد رنگی های رنگارنگ دیدید کار می کنیم. تصادفی نبود که چنین تصویر رنگی انتخاب شد :)

ما با بارگذاری تصویر مقیاس خاکستری در پایتون و چاپ آن شروع می کنیم.

 image_gs = imread ('crayons.jpg' ، as_gray = True) 
 fig، ax = plt. subplots (figsize = (9، 16))
imshow (image_gs ، ax = ax)
ax.set_title ("تصویر مقیاس خاکستری")
ax.axis ('خاموش') ؛ 

از آنجا که تصویر اصلی رنگی است ، از as_gray = True برای بارگذاری آن به عنوان تصویر مقیاس خاکستری استفاده کردیم. از طرف دیگر ، می توانیم تصویر را با استفاده از تنظیمات پیش فرض imread بارگذاری کنیم (که یک تصویر RGB را بارگذاری می کند - که در قسمت بعدی آمده است) و با استفاده از تابع rgb2gray آن را به مقیاس خاکستری تبدیل کنیم.

در مرحله بعد ، کمکی را اجرا می کنیم. برای چاپ خلاصه تصویر.

 print_image_summary (image_gs، ['G']) 

اجرای کد خروجی زیر را تولید می کند: ------------ جزئیات تصویر: -------------- ابعاد تصویر: (1280 ، 1920) کانال ها: G: min = 0.0123 ، max = 1.0000

تصویر به عنوان یک ماتریس دو بعدی ، 1280 ردیف در ستون 1920 (وضوح وضوح بالا) ذخیره می شود. با مشاهده مقادیر حداقل و حداکثر ، می بینیم که آنها در محدوده [0،1] هستند. به این دلیل که آنها به طور خودکار بر 255 تقسیم می شوند ، که یک مرحله پیش پردازش معمول برای کار با تصاویر است.

RGB

اکنون زمان کار با رنگ ها فرا رسیده است. ما با مدل RGB شروع می کنیم. به طور خلاصه ، این یک مدل افزودنی است که در آن سایه هایی ازقرمز ، سبز و آبی (از این رو نام آن) به نسبتهای مختلف به هم اضافه می شوند تا طیف وسیعی از رنگها را تولید کنند.

در scikit-image ، این مدل پیش فرض برای بارگذاری تصاویر با استفاده از imread است:

 image_rgb = imread ('crayons.jpg') 

قبل از چاپ تصاویر ، بیایید خلاصه را بررسی کنیم تا نحوه ذخیره سازی تصویر در پایتون را درک کنیم.

 print_image_summary (image_rgb، ['R'، 'G'، 'B']) 

اجرای کد خلاصه زیر را ایجاد می کند:

 ----------- ---
جزئیات تصویر:
--------------
ابعاد تصویر: (1280 ، 1920 ، 3)
کانال ها:
R: دقیقه = 0.0000 ، حداکثر = 255.0000
G: دقیقه = 0.0000 ، حداکثر = 255.0000
B: min = 0.0000 ، max = 255.0000 

در مقایسه با تصویر مقیاس خاکستری ، این بار تصویر به صورت 3D np.ndarray ذخیره می شود. بعد اضافی هر یک از 3 کانال رنگی را نشان می دهد. مانند قبل ، شدت رنگ در مقیاس 0-255 ارائه شده است. اغلب به دامنه [0،1] تغییر می یابد. سپس ، مقدار پیکسل 0 در هر یک از لایه ها نشان می دهد که هیچ رنگی در آن کانال خاص برای آن پیکسل وجود ندارد.

یک نکته مفید: هنگام استفاده از عملکرد imread OpenCV ، تصویر به عنوان BGR بارگیری می شود. به جای RGB برای سازگاری آن با کتابخانه های دیگر ، باید ترتیب کانال ها را تغییر دهیم.

زمان چاپ تصویر و کانال های رنگی مختلف فرا رسیده است:

 fig، ax = plt . subplots (1 ، 4 ، figsize = (18 ، 30)) 
 ax [0] .imshow (image_rgb/255.0)
ax [0] .axis ("خاموش")
ax [0] .set_title ('RGB اصلی') 
 for i، lab in enumerate (['' R '،' G '،' B ']، 1):
    temp = np.zeros (image_rgb.shape)
    temp [:،:، i - 1] = image_rgb [:،:، i - 1]
    ax [i] .imshow (temp/255.0)
    ax [i] .axis ("خاموش")
    ax [i] .set_title (lab) 
 plt.show () 

در تصویر زیر می توانیم تصویر اصلی و 3 کانال رنگی را جداگانه مشاهده کنیم. آنچه در مورد این تصویر دوست دارم این است که با تمرکز روی مداد رنگی ، می توانیم ببینیم کدام رنگ از کانال های RGB و در چه نسبت هایی رنگ نهایی را در تصویر اصلی ایجاد می کند.

متناوبا ، ما می توانیم کانال های رنگی جداگانه را به صورت زیر ترسیم کنیم:

 fig، ax = plt.subplots (1 ، 4 ، figsize = (18 ، 30)) 
 ax [0] .imshow (image_rgb)
ax [0] .axis ("خاموش")
ax [0] .set_title ('RGB اصلی') 
 برای i ، cmap in enumerate ([[قرمزها ، سبزها ، آبی ها]]):
    ax [i+1] .imshow (image_rgb [:،:، i]، cmap = cmap)
    ax [i+1] .axis ("خاموش")
    ax [i+1] .set_title (cmap [0]) 
 plt.show () 

چه چیزی خروجی زیر را تولید می کند:

آنچه که من در مورد این نوع ترسیم کانالهای RGB ترجیح می دهم این است که تشخیص آنها آسان تر است رنگهای مختلف (به دلیل روشن و شفاف بودن سایرین) و شدت آنها بیشتر برجسته می شوند. هنگام استفاده از شبکه های عصبی کانولوشنال (CNN) برای آن کار ، باید همه عملیات را روی هر 3 کانال رنگی اعمال کنیم. در این مقاله ، نحوه استفاده از CNN ها برای کار با مشکل طبقه بندی تصویر باینری را نشان می دهم.

آزمایشگاه

در کنار RGB ، یکی دیگر از روش های رایج برای نمایش تصاویر رنگی استفاده از رنگ آزمایش است. space (همچنین به عنوان CIELAB شناخته می شود).

قبل از پرداختن به جزئیات بیشتر ، منطقی است که تفاوت بین مدل رنگ و فضای رنگ را مشخص کنید. مدل رنگ یک روش ریاضی برای توصیف رنگ ها است. فضای رنگ روش نگاشت رنگهای واقعی و قابل مشاهده بر روی مقادیر گسسته مدل رنگ است. برای جزئیات بیشتر ، لطفاً به این پاسخ مراجعه کنید.(سیاه) تا 100 (سفید) ، که در واقع یک تصویر در مقیاس خاکستری است a: طیف رنگ سبز -قرمز ، با مقادیر مختلف از -128 (سبز) تا 127 (قرمز) < uli> b: طیف رنگ آبی -زرد ، با مقادیر از -128 (آبی) تا 127 (زرد)

به عبارت دیگر ، آزمایش تصویر را در یک لایه مقیاس خاکستری کد می کند و سه لایه رنگ را به دو تقسیم می کند. .

با تبدیل تصویر از RGB به آزمایشگاه و چاپ خلاصه تصویر شروع می کنیم:

 image_lab = rgb2lab (image_rgb/255) 

تابع rgb2lab فرض می کند که RGB به مقادیر بین 0 تا 1 استاندارد شده است ، به همین دلیل است که همه مقادیر را بر 255 تقسیم می کنیم. از خلاصه زیر ، می بینیم که دامنه مقادیر آزمایشگاه در مقادیر ذکر شده در بالا قرار می گیرد.

- -------------
جزئیات تصویر:
--------------
ابعاد تصویر: (1280 ، 1920 ، 3)
کانال ها:
L: دقیقه = 0.8618 ، حداکثر = 100.0000
a: min = -73.6517 ، حداکثر = 82.9795
b: min = -94.7288 ، max = 91.2710 

در مرحله بعد ، تصویر را تجسم می کنیم-آزمایشگاه و هر یک از کانال ها به طور جداگانه.

 fig، ax = plt. subplots (1 ، 4 ، figsize = (18 ، 30)) 
 ax [0] .imshow (image_lab)
ax [0] .axis ("خاموش")
ax [0] .set_title ('Lab') 
 for i، col in enumerate (['' L '،' a '،' b ']، 1):
    imshow (image_lab [:،:، i-1]، ax = ax [i])
    ax [i] .axis ("خاموش")
    ax [i] .set_title (col) 
 fig.show () 
اولین تلاش برای ترسیم تصویر آزمایشگاه

خوب ، اولین تلاش برای تجسم فضای رنگ آزمایشگاه بسیار موفق نبود. اولین تصویر تقریباً غیرقابل تشخیص است ، لایه L در مقیاس خاکستری نیست. پس از درک این پاسخ ، برای چاپ صحیح ، مقادیر آزمایشگاه باید در محدوده [0،1] افزایش یابد. این بار ، لایه اول متفاوت از دو لایه اخیر است.

#مقیاس تصویر آزمایشگاه
image_lab_scaled = (image_lab + [0، 128، 128])/[100، 255، 255] 
 fig، ax = plt. subplots (1، 4، figsize = (18، 30)) 
 ax [0] .imshow (image_lab_scaled)
ax [0] .axis ("خاموش")
ax [0] .set_title ('Lab scaled') 
 for i، col in enumerate (['' L '،' a '،' b ']، 1):
    imshow (image_lab_scaled [:،: ، i-1] ، ax = ax [i])
    ax [i] .axis ("خاموش")
    ax [i] .set_title (col)
    
fig.show () 

تلاش دوم بسیار بهتر است. در اولین تصویر ، نمایش آزمایشگاه تصویر رنگی را مشاهده می کنید. این بار ، لایه L یک تصویر واقعی در رنگ خاکستری است. آنچه هنوز می تواند بهبود یابد دو لایه آخر است ، زیرا در مقیاس خاکستری نیز وجود دارد.

دومین تلاش برای ترسیم تصویر آزمایشگاه

در آخرین تلاش ، نقشه های رنگی را به لایه های a و b تصویر آزمایشگاه اعمال می کنیم.

 fig، ax = plt.subplots (1 ، 4 ، figsize = (18 ، 30)) 
 ax [0] .imshow (image_lab_scaled)
ax [0] .axis ("خاموش")
ax [0] .set_title ("آزمایشگاه مقیاس بندی شده") 
 imshow (image_lab_scaled [:،:، 0]، ax = ax [1])
ax [1] .axis ("خاموش")
ax [1] .set_title ('L') 
 ax [2] .imshow (image_lab_scaled [:،،: 1]، cmap = 'RdYlGn_r')
ax [2] .axis ("خاموش")
ax [2] .set_title ('a') 
 ax [3] .imshow (image_lab_scaled [:،،: 2]، cmap = 'YlGnBu_r')
ax [3] .axis ("خاموش")
ax [3] .set_title ('b')
    
plt.show () 

این بار نتایج رضایت بخش است. ما می توانیم رنگهای مختلف را در لایه های a و b به وضوح تشخیص دهیم. آنچه هنوز می تواند بهبود یابد ، خود نقشه ها هستند. برای سادگی ، از نقشه های رنگ از پیش تعریف شده استفاده کردم ، که حاوی رنگی بین دو رنگ فوق العاده است (زرد برای لایه a ، سبز در لایه b). یک راه حل بالقوه کدگذاری نقشه های رنگی است.

سومین تلاش برای ترسیم تصویر آزمایشگاه

معمولاً هنگام کار با مشکلات رنگ آمیزی تصویر ، مانند DeOldify معروف ، با تصاویر آزمایشگاهی روبرو می شوید.

نتیجه گیری

در این مقاله ، رفتم اصول کار با تصاویر رنگی در پایتون با استفاده از تکنیک های ارائه شده ، می توانید به تنهایی کار روی مشکل بینایی رایانه را شروع کنید. من معتقدم درک آن مهم استنحوه ذخیره سازی تصاویر و نحوه تبدیل آنها به نمایش های مختلف ، به طوری که هنگام آموزش شبکه های عصبی عمیق با مشکلات غیرمنتظره روبرو نشوید.

یکی دیگر از فضاهای رنگی محبوب XYZ است. scikit-image همچنین دارای عملکردهایی برای تبدیل تصاویر RGB یا آزمایشگاه به XYZ است.

می توانید کد مورد استفاده برای این مقاله را در GitHub من بیابید. مثل همیشه ، از هر گونه بازخورد سازنده استقبال می شود. می توانید در توییتر یا نظرات با من تماس بگیرید.

من اخیراً کتابی درباره استفاده از پایتون برای حل وظایف عملی در حوزه مالی منتشر کرده ام. اگر علاقه دارید ، مقاله ای را معرفی کردم که به معرفی مطالب کتاب پرداخت. می توانید کتاب را در وب سایت آمازون یا Packt دریافت کنید.

منابع

[1] https://ai.stanford.edu/~syyeung/cvweb/tutorial1.html

[2] https://github.com/scikit-image/scikit-image/issues/1185