سبیل، پنجه و دم: چگونه یک شبکه عصبی گربه ها و سایر اشیاء را تشخیص می دهد. سبیل، پنجه و دم: چگونه یک شبکه عصبی گربه ها و سایر اشیاء را تشخیص می دهد شبکه عصبی گربه ها را بدون ثبت می کشد

سبیل، پنجه و دم: چگونه یک شبکه عصبی گربه ها و سایر اشیاء را تشخیص می دهد. سبیل، پنجه و دم: چگونه یک شبکه عصبی گربه ها و سایر اشیاء را تشخیص می دهد شبکه عصبی گربه ها را بدون ثبت می کشد

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

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

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



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


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


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


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


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


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


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


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

برنامه همیشه به درستی کار نمی کند. نتیجه نهایی هیولاهایی با چهار چشم، بدون گوش است که به شکل یک ستاره کشیده شده و در سراسر بوم پخش شده اند. شما می توانید با کشیدن چیزی پوچ در اولین پنجره، یک هیولا ایجاد کنید.


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

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


چشم ها ترسناک هستند

کامل کار نمیکنه به خصوص زمانی که چشم ها درمان می شوند بد است. تعریف مرزهای تصویر همیشه واضح نیست. به همین دلیل، چشم های اضافی ظاهر می شوند یا اصلاً ظاهر نمی شوند.

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

کیف شیک برای تابستان. طراحی انحصاری!

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

دیمیتری سوشنیکوف، مبشر فنی مایکروسافت، عضو انجمن هوش مصنوعی روسیه، معلم برنامه نویسی هوش مصنوعی کاربردی و منطقی در موسسه هوانوردی مسکو، موسسه فیزیک و فناوری مسکو و مدرسه عالی اقتصاد، و همچنین دوره های ما، در داستان به ما کمک کنید

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

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

برای تشخیص اشیاء دلخواه، مانند گربه ها و قورباغه ها، رنگ به وضوح مهم است: قورباغه سبز است، اما گربه ها نه. اگر کانال های رنگی را رها کنیم، برای هر پالت، شبکه یاد می گیرد که اشیاء موجود در تصویر را دوباره تشخیص دهد، زیرا این کانال رنگی به نورون های دیگر تغذیه می شود.

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

بانک های فیلتر و بینایی بیولوژیکی

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

در زمینه بینایی کامپیوتر، بانک های فیلتر توسعه یافته اند - مجموعه ای از فیلترها برای برجسته کردن ویژگی های اصلی اشیاء.

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

تقسیم وزن

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

این نیاز به یک معماری شبکه تخصصی دارد:

  • شبکه های کانولوشن برای کار با تصاویر
  • شبکه های مکرر برای کار با متن/توالی
شبکه های عصبی که به طور موثر در تشخیص تصویر استفاده می شوند که از لایه های پیچشی خاص (لایه های پیچشی) استفاده می کنند.

ایده اصلی این است:

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


Convolution برای پردازش تصویر استفاده می شود، درست مانند پردازش سیگنال.

اجازه دهید تابع پیچیدگی را با پارامترهای زیر شرح دهیم:

  • هسته - هسته کانولوشن، ماتریس وزن
  • pad - چند پیکسل باید به تصویر در اطراف لبه ها اضافه شود
  • گام - فرکانس اعمال فیلتر. برای مثال، برای stride=2، هر ثانیه پیکسل از تصویر را به صورت عمودی و افقی می گیریم و وضوح تصویر را به نصف کاهش می دهیم.
در : def convolve(تصویر، هسته، پد = 0، گام = 1): سطرها، ستون‌ها = image.شکل خروجی_ردیف‌ها = سطرها // stride output_columns = ستون‌ها // stride result = np.zeros((output_rows, output_columns)) اگر pad > 0: image = np.pad(image, pad, "constant") kernel_size = kernel.size kernel_length = kernel.shape half_kernel = kernel_length // 2 kernel_flat = kernel.reshape(kernel_size, 1) offset half_kernel-pad) برای r در محدوده (offset, rows - offset, stride): برای c در محدوده (offset, columns - offset, stride): rr = r - half_kernel + pad cc = c - half_kernel + patch pad = نتیجه تصویر = np.dot(patch.reshape(1، kernel_size)، kernel_flat) نتیجه را برمی گرداند
در : def show_convolution(kernel, stride = 1): """اثر کانولینگ با هسته داده شده را نشان می دهد.""" fig = pylab.figure(figsize = (9,9)) gs = gridspec.GridSpec(3, 3, height_ratios=) start=1 برای i در محدوده(3): image = images_train conv = convolve(image, kernel, kernel.shape//2, stride) ax = fig.add_subplot(gs[i]) pylab.imshow (تصویر، interpolation="نزدیکترین") ax.set_xticks() ax.set_yticks() ax = fig.add_subplot(gs) pylab.imshow(kernel, cmap="gray", interpolation="nearest") ax.set_xticks() ax.set_yticks() ax = fig.add_subplot(gs) pylab.imshow(conv, interpolation="nearest") ax.set_xticks() ax.set_yticks() pylab.show()
در : blur_kernel = np.array([, , , , ], dtype="float32") blur_kernel /= 273

فیلترها

محو کردن

فیلتر تاری به شما امکان می دهد بی نظمی ها را صاف کنید و بر شکل کلی اشیا تأکید کنید.


در: show_convolution(blur_kernel)

لبه های عمودی

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


در : vertical_edge_kernel = np.array([, , , ], dtype="float32") vertical_edge_kernel /= 166
در: show_convolution(vertical_edge_kernel)

لبه های افقی

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


در : horizontal_bar_kernel = np.array([, [-2, -8, -13, -8, -2], , [-2, -8, -13, -8, -2], ], dtype=" float32") horizontal_bar_kernel /= 132
در: show_convolution(نوار_افقی_هسته)

فیلتر حلقه

شما همچنین می توانید یک فیلتر 9x9 بسازید که خطوط تصویر را برجسته می کند.


در : blob_kernel = np.array([, , , , , , , , ], dtype="float32") blob_kernel /= np.sum(np.abs(blob_kernel))
در: show_convolution(blob_kernel)
نمونه کلاسیک تشخیص اعداد اینگونه عمل می کند: هر عدد دارای ویژگی های هندسی مشخصه خود است (دو دایره - یک هشت، یک بریده بر نیمی از تصویر - یک واحد و غیره)، که توسط آن شبکه عصبی می تواند تعیین کند که چه نوع شیء آن است. ما فیلترهایی ایجاد می کنیم که هر رقم را مشخص می کند، هر فیلتر را روی تصویر اجرا می کنیم و خطا را به حداقل می رسانیم.


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

ایده اصلی یک شبکه کانولوشن

  • ما یک لایه کانولوشن در شبکه عصبی ایجاد می کنیم که از اعمال فیلتر روی تصویر اطمینان می دهد.
  • وزن فیلتر را با استفاده از الگوریتم پس انتشار آموزش می دهیم
مثلا ما یک تصویر داریم من, 2 فیلتر کانولوشن wبا خروجی ها o. عناصر تصویر خروجی به صورت زیر محاسبه خواهند شد:

تمرین با وزنه

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

im2col

بیایید با یک تصویر x شروع کنیم، جایی که هر پیکسل با یک حرف مطابقت دارد:

© 2023 skypenguin.ru - نکاتی برای مراقبت از حیوانات خانگی