کمپانی گارتنر تخمین می زند که تا انتهای سال ٢٠٢٠ چت بات ها ٨۵ درصد از تعاملات مشتریان و خدمات را بر عهده خواهند داشت.

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

آنچه در این نوشته خواهیم داشت

  • چت بات چیست؟
  • چت بات چگونه کار می کند؟
      • چت بات قانون محور (Rule-Based) و چت بات خودآموز(Self-Learning) 
  • ساخت چت بات با پایتون
    • پردازش زبان طبیعی ( NLP )
    • NLTK: معرفی کوتاه
    • دانلود و نصب NLTK:
    • پیش پردازش متن با NLTK
    • کوله کلمات ( Bag of Words )
    • رویکرد TF-IDF
    • وارد کردن کتابخانه های ضروری:
    • مجموعه نوشته ها ( Corpus )
    • پیش پردازش متن
    • تطبیق کلید واژه
    • تولید پاسخ در چت بات
  • جمع بندی

چت بات چیست؟

چت بات یک نرم افزار دارای هوش مصنوعی در یک دستگاه مانند (Siri ، Alexa ، Google Assistant و غیره) ، اپلیکیشن و یا وبسایتی است که سعی می کند نیازهای مصرف کنندگان را ارزیابی کرده و سپس به آن ها در انجام یک کار خاص مانند یک معامله تجاری کمک کند. مثل رزرو هتل، ارسال فرم و غیره. امروزه چت بات ها در بسیاری از شرکت ها مورد استفاده قرار می گیرند تا بتواند با کاربران تعامل داشته باشند. از جمله کاربردهای چت بات در شرکت ها می توان به موارد زیر اشاره کرد:
 ارائه اطلاعات پرواز
ارتباط با مشتریان و امور مالی آنها
پشتیبانی مشتری

چت بات چگونه کار می کند؟

به طور کلی دو نوع چت بات وجود دارد.

چت بات قانون محور (Rule-Based) و چت بات خودآموز(Self-Learning) 

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

چت بات در پایتون و چت بات

ساخت چت بات با پایتون

پیش نیازها:
داشتن دانش کلی از کتابخانه scikit و NLTK. اما اگر در NLP تازه وارد هستید باز هم می توانید مقاله را بخوانید و سپس به منابع مراجعه کنید.

پردازش زبان طبیعی ( NLP )

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

NLTK: معرفی کوتاه

NLTK (ابزار زبان طبیعی) یک بستر پیشرو برای ساختن برنامه های پایتون برای کار با داده های زبان انسانی است. NLTK “ابزاری فوق العاده برای آموزش و کار در زبانشناسی محاسباتی با استفاده از پایتون” و “یک کتابخانه شگفت انگیز برای بازی با زبان طبیعی” معرفی شده است. پردازش زبان طبیعی با پایتون مقدمه ای عملی برای برنامه نویسی برای پردازش زبان است.

دانلود و نصب NLTK:

NLTK را نصب کرده و pip install nltk را اجرا کنید.
آزمایش نصب: پایتون را اجرا کرده و import nltk را تایپ کنید.
نصب بسته های NLTK:
NLTK را وارد کنید و nltk.download () را اجرا کنید. با این کار NLTK downloader را باز کرده و می توانید مدل ها را برای بارگیری انتخاب کنید. همچنین می توانید همه بسته ها را به طور همزمان دانلود کنید.

پیش پردازش متن با NLTK

مسئله اصلی در مورد داده های متن این است که همه در قالب متن هستند. اما الگوریتم های یادگیری ماشین به نوعی از بردار ویژگی عددی احتیاج دارند. بنابراین قبل از شروع هر پروژه NLP باید آن را از قبل پردازش کنیم تا مناسب سازی شود. پیش پردازش متن اصلی شامل موارد زیر است:
تبدیل کل متن به حروف بزرگ یا حروف کوچک به گونه ای که الگوریتم با کلمات مشابه در موارد مختلف به صورت متفاوت رفتار نمی کند.
Tokenization: Tokenization (نشانه گذار) فقط اصطلاحی است که برای توصیف فرآیند تبدیل رشته های متن معمولی به لیستی از نشانه ها بکار رفته است. نشانه گذار جمله می تواند برای یافتن لیست جملات مورد استفاده قرار گیرد و از نشانه گذار کلمات برای یافتن لیست کلمات در رشته ها استفاده می شود.

کوله کلمات ( Bag of Words )

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

رویکرد TF-IDF

مشکل کوله کلمات در این است که کلمات پر تکرار شروع به غالب شدن در سند می کنند؛ اما ممکن است شامل محتوای اطلاعاتی (informational) نباشند. همچنین کوله کلمات به اسناد طولانی تر وزن بیشتری می دهد. یک روش برای رفع این مشکل این است که به هر کلمه متناسب با تعداد تکرار آن در کل سند امتیاز داده شود. این رویکرد امتیاز دهی Term Frequency-Inverse Document Frequency یا به اختصار TF-IDF گفته می شود. در این روش، Term Frequency به معنی امتیاز دهی تعداد کلمات در سند فعلی و Inverse Document Frequency به معنای امتیازدهی کم تکرار بودن کلمات در سند می باشد.

(تعداد کل کلمات)/(تعداد دفعات مشاهده کلمه)=TF
(تعداد اسنادی که کلمه در آن ها مشاهده شده)/(تعداد اسناد)IDF=1+log 

وزن TF-IDF ، وزنی است که اغلب در بازیابی اطلاعات و استخراج متن مورد استفاده قرار می گیرد. این وزن یک معیار آماری است که برای ارزیابی اهمیت کلمه در یک اسندیا مجموعه.
مثال:
سندی را در نظر بگیرید که شامل ١٠٠ کلمه است و در آن کلمه “تلفن” ۵ بار تکرار شده است. TF برای این کلمه 5/100 است. حال ، فرض کنید ما ١٠ میلیون سند داریم و کلمه تلفن در هزار مورد از آنها تکرار شده است. آنگاه IDF برابر خواهد بود با: log (10،000،000 / 1،000) = 4 . بنابراین TF-IDF  0.2 می باشد.
حال ما یک دید کلی از NLP داریم، وقت آن رسیده که شروع به ساخت چت بات کنیم. عنوان چت بات را ROBO فرض می کنیم.

وارد کردن کتابخانه های ضروری:

import nltk
import numpy as np
import random
import string # to process standard python strings

مجموعه نوشته ها ( Corpus )

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

f=open('chatbot.txt','r',errors = 'ignore')raw=f.read()raw=raw.lower()# converts to lowercasenltk.download('punkt') # first-time use only nltk.download('wordnet') # first-time use onlysent_tokens = nltk.sent_tokenize(raw)# converts to list of sentences word_tokens = nltk.word_tokenize(raw)# converts to list of words

مثالی از sent_tokens و word_tokens را ببینید:

sent_tokens[:2] ['a chatbot (also known as a talkbot, chatterbot, bot, im bot, interactive agent, or artificial conversational entity) is a computer program or an artificial intelligence which conducts a conversation via auditory or textual methods.', 'such programs are often designed to convincingly simulate how a human would behave as a conversational partner, thereby passing the turing test.']word_tokens[:2] ['a', 'chatbot', '(', 'also', 'known']

پیش پردازش متن

اکنون باید تابعی به نام LemTokens تعریف کنیم.

lemmer = nltk.stem.WordNetLemmatizer() #WordNet is a semantically-oriented dictionary of English included in NLTK.def LemTokens(tokens): return [lemmer.lemmatize(token) for token in tokens] remove_punct_dict = dict((ord(punct), None) for punct in string.punctuation) def LemNormalize(text): return LemTokens(nltk.word_tokenize(text.lower().translate(remove_punct_dict)))

تطبیق کلید واژه

در مرحله بعد، ما باید عملکردی برای سلام توسط ربات تعریف کنیم، یعنی اگر کاربر سلام کرد، ربات پاسخ سلام را برگرداند. ELIZA از یک واژه ساده برای سلام استفاده می کند. ما در اینجا از همان مفهوم استفاده خواهیم کرد.

GREETING_INPUTS = ("hello", "hi", "greetings", "sup", "what's up","hey",)GREETING_RESPONSES = ["hi", "hey", "*nods*", "hi there", "hello", "I am glad! You are talking to me"]def greeting(sentence): for word in sentence.split(): if word.lower() in GREETING_INPUTS: return random.choice(GREETING_RESPONSES)

تولید پاسخ در چت بات

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

از کتابخانه scikit Learn ، بردار Tfidf را وارد کنید تا مجموعه ای از اسناد خام را به ماتریسی از ویژگی های TF-IDF تبدیل کنید.

from sklearn.feature_extraction.text import TfidfVectorizer

همچنین ، ماژول cosine similarity را از کتابخانه یادگیری scikit وارد کنید.

from sklearn.metrics.pairwise import cosine_similarity

این مورد برای یافتن شباهت بین کلمات وارد شده توسط کاربر و کلمات موجود در مجموعه نوشته استفاده می شود.
ما یک پاسخ عملکردی را تعریف می کنیم که پرسش کاربر را برای یک یا چند کلمه کلیدی شناخته شده جستجو می کند و یکی از چندین پاسخ ممکن را ارائه می دهد. اگر ورودی مطابق با هر یک از کلمات کلیدی را پیدا نکرد، به عنوان مثال پاسخ می دهد: “متاسفم! من متوجه منظور شما نمی شوم”

def response(user_response): robo_response='' sent_tokens.append(user_response) TfidfVec = TfidfVectorizer(tokenizer=LemNormalize, stop_words='english') tfidf = TfidfVec.fit_transform(sent_tokens) vals = cosine_similarity(tfidf[-1], tfidf) idx=vals.argsort()[0][-2] flat = vals.flatten() flat.sort() req_tfidf = flat[-2] if(req_tfidf==0): robo_response=robo_response+"I am sorry! I don't understand you" return robo_response else: robo_response = robo_response+sent_tokens[idx] return robo_response

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

flag=True print("ROBO: My name is Robo. I will answer your queries about Chatbots. If you want to exit, type Bye!")while(flag==True): user_response = input() user_response=user_response.lower() if(user_response!='bye'): if(user_response=='thanks' or user_response=='thank you' ): flag=False print("ROBO: You are welcome") else: if(greeting(user_response)!=None): print("ROBO: "+greeting(user_response)) else: print("ROBO: ",end="") print(response(user_response)) sent_tokens.remove(user_response) else: flag=False print("ROBO: Bye! take care")

تقریبا تمام شد. ما اولین چت بات خود را در NLTK کدنویسی کرده ایم. اکنون بگذارید ببینیم که چگونه با انسان تعامل دارد:

چت بات در پایتون و چت بات

جمع بندی

اگرچه این یک ربات بسیار ساده است، اما راه خوبی برای ورود به NLP و آشنایی با چت بات است. این مثال به شما کمک می کند تا به طراحی و چالش های ایجاد چت بات بیاندیشید.


Deep learning world

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

آنچه در این نوشته خواهیم داشت

  • ١. Appery
  • ٢. Mobile Roadie
  • ٣. TheAppBuilder
  • ۴. Good Barber
  • ۵. AppMachine
  • ۶. GameSalad
  • ٧. ShoutEm

١. Appery

اپلیکیشن اندروید و طراحی اپلیکیشن و ساخت اپلیکیشن

Appery یک سازنده برنامه تلفن همراه مبتنی بر ابر (Cloud) است که می توانید از آن برای ایجاد اپلیکیشن در اندروید استفاده کنید؛ و شاملApache Cordova (Phone Gap) ، Ionic و jQuery Mobile با دسترسی به اجزای داخلی آن است. از آنجایی که سازنده در ابر اجرا می شود ، هیچ نصب یا دانلودی لازم نیست و به راحتی می توان کار را شروع کرد.
Appery شامل یک ویرایشگر بصری است که از اجزای کشیدن و رها کردن (drag and drop) برای ساخت UI استفاده می کند. Appery به طور خودکار برای هر مؤلفه کد ایجاد می کند. می توانید به هر REST API (رابط برنامه‌نویسی کاربردی) متصل شده و در برنامه خود از آن استفاده کنید؛ و در صورت نیاز به ذخیره داده، سریعا یک پایگاه داده ابری اضافه کنید. همچنین با استفاده از Appery می توانید عملکردهای قدرتمندی را اضافه کرده و یا افزونه های شخصی و دلخواه خود را ایجاد کنید. اگر به صورت گروهی فعالیت می کنید، می توانید به طور همزمان پروژه خود را با افراد گروه به اشتراک بگذارید.

٢. Mobile Roadie

اپلیکیشن اندروید و طراحی اپلیکیشن و ساخت اپلیکیشن

Mobile Roadie یک سازنده اپلیکیشن است که به هر کسی امکان می دهد تا اپلیکشن اندروید خود را ایجاد و مدیریت کند. نکته مثبت این است که فرایند ساختن به شکل بصری اتفاق می افتد. این پلتفرم انواع رسانه ها را پشتیبانی کرده و کیفیت و مناسب بودن محتواها را بررسی می کند. همچنین می توانید برنامه خود را از طریق Mobile Roadie’s back end پیش نمایش دهید. به علاوه این سازنده اپلیکیشن گزینه ارسال پوش نوتیفیکیشن (Push Notification) را به شما می دهد. و این می تواند از سایت خود شما یا از طریق خود پلتفرم محتوا باشد. این پلتفرم به طور کلی زبان agnostic است ، بنابراین می توانید داده ها را در قالب های مختلفی از جمله XML ، JSON ، PHP ، CSV و HTML قرار دهید. در شروع کار چندین گزینه طرح بندی به شما ارائه می شود؛ اما می توانید هر یک از آنها را به دلخواه خود تنظیم کنید. Mobile Roadie برای برندها و سرویس ها مناسب تر از کالاها است.

٣. TheAppBuilder

اپلیکیشن اندروید و طراحی اپلیکیشن و ساخت اپلیکیشن

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

۴. Good Barber

اپلیکیشن اندروید و طراحی اپلیکیشن و ساخت اپلیکیشن

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

۵. AppMachine

اپلیکیشن اندروید و طراحی اپلیکیشن و ساخت اپلیکیشن

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

۶. GameSalad

اپلیکیشن اندروید و طراحی اپلیکیشن و ساخت اپلیکیشن

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

٧. ShoutEm

اپلیکیشن اندروید و طراحی اپلیکیشن و ساخت اپلیکیشن

ShoutEm یک سازنده اپلیکیشن با مدیریت کامل محتوا، ابزارهای قدرتمند جذب کاربر و گزینه های کسب درآمد همراه با یک فرآیند انتشار یکپارچه است. سازنده رابط گزینه های سفارشی سازی زیادی را ارائه می دهد و هر برنامه را می توان با منابع محتوا موجود مانند WordPress، Facebook ، Twitter ، و موارد دیگر کاملا یکپارچه کرد. گزینه های کسب درآمد متعدد بدان معنی است که شما می توانید به سرعت یک جریان درآمد از اپلیکیشن خود ایجاد کنید.
می توانید برنامه های خود را تحت حساب توسعه دهنده خود در Google Play منتشر کرده و برنامه یا محتوای خود را به طور همزمان به روز کنید. ShoutEm همچنین برای اطمینان از هماهنگ بودن اپلیکیشن با نسخه نهایی اندروید، بروزرسانی خودکار را ارائه می دهد.


Deep learning world

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

آنچه در این نوشته خواهیم داشت

  • چالش:
  • نرم افزار و سخت افزار
  • طبقه بندی نهایی
  • یادگیری انتقال
  • SqueezeNet
  • چرخش تصاویر
  • برش نمونه ها
  • آموزش اضافی با میزان یادگیری پایین
  • داده های آموزشی تکمیلی
  • رفع اشتباه در داده های آموزش
  • نقص های مدل دیپ لرنینگ
    • متعادل کردن داده ها:
    • جداسازی روز و شب
    • آموزش طبقه بندی گر برای موارد سخت
  • نمونه هایی از اشتباهات مدل در تشخیص چراغ راهنمایی

چالش:

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

این چالش بر اساس شبکه های عصبی پیچشی است، روشی بسیار رایج که در تشخیص تصویر با شبکه های عصبی عمیق مورد استفاده قرار می گیرد. مدل های کوچکتر نمرات بالاتری کسب کردند. علاوه بر این، حداقل دقت لازم برای پیروزی ٩۵ درصد بود.
Nexar تعداد ١٨۶۵٩ تصویر دارای برچسب را به عنوان داده های آموزشی ارائه می داد. هر تصویر با یکی از سه کلاس: بدون چراغ راهنمایی، چراغ قرمز و چراغ سبز برچسب گذاری شده است.

نرم افزار و سخت افزار

برای آموزش مدل ها از Caffe استفاده کردم. دلیل اصلی که Caffe انتخاب شد به دلیل تنوع زیاد مدل های از قبل آموزش دیده آن بود.
برای تجزیه و تحلیل نتایج، بررسی داده ها از Python ، NumPy و Jupyter notebook استفاده شد.
از نمونه های GPU آمازون برای آموزش مدل ها استفاده شد.

طبقه بندی نهایی

طبقه بندی نهایی در مجموعه آزمون Nexar با اندازه مدل ٨۴/٧ مگابایت به دقت ٩۵/٩۴ درصد دست یافت.
فرایند دستیابی به دقت بالاتر شامل تعداد زیادی آزمون و خطاست. در پشت برخی از آن ها منطقی وجود داشت و بعضی دیگر فقط بر اساس حدس و گمان جلو رفتند.

یادگیری انتقال

با تلاش برای تنظیم دقیق (fine-tuning) مدلی که در ImageNet با معماری GoogLeNet از قبل آموزش داده شده بود، شروع کردیم. خیلی به دقت بالای ٩٠ درصد دست یافتیم!

SqueezeNet

اخیرا بیشتر شبکه های منتشر شده بسیار عمیق بوده و پارامترهای زیادی دارند. به نظر می رسید که SqueezeNet بسیار مناسب بوده و همچنین دارای یک مدل از قبل آموزش دیده شده در ImageNet بود.
دیپ لرنینگ و تشخیص چراغ راهنمایی
شبکه عصبی با استفاده از فیلترهای پیچشی یک در یک و بعضا سه در سه و همچنین با کاهش تعداد کانال های ورودی به فیلترهای سه در سه، می تواند خود را فشرده سازد.
بعد از مقداری سعی و خطا در تنظیم میزان یادگیری توانستیم مدل از قبل آموزش داده شده را با دقت ٩٢ درصد تنظیم کنیم.

چرخش تصاویر

دیپ لرنینگ و تشخیص چراغ راهنمایی
بیشتر تصاویر مانند تصویر فوق افقی بودند، اما حدود ۴/٢ درصد عمودی بودند و بعضی از آن ها از بالا گرفته شده بودند.

دیپ لرنینگ و تشخیص چراغ راهنمایی

اگرچه این بخش بزرگی از مجموعه داده ها نیست، اما می خواستیم مدل، آن ها را به درستی طبقه بندی کند.
متأسفانه ، هیچ داده ای در تصاویر jpeg که جهت گیری را مشخص می کند، وجود نداشت. به منظور تکمیل تصاویر از آموزش مدل در “میانگین پیش بینی ها” در چرخش های ٠⁰ ، ٩٠⁰ ، ١٨٠⁰ و ٢٧٠⁰ استفاده کردیم. منظور از میانگین پیش بینی ها، میانگین احتمالات تولید شده توسط مدل در هر یک از این چرخش هاست.

برش نمونه ها

در طول آموزش، شبکه SqueezeNet برای اولین بار به طور پیش فرض برش تصادفی تصاویر ورودی را انجام داد و ما آن را تغییر ندادیم. این نوع تقویت داده باعث می شود که شبکه بهتر تعمیم پیدا کند. به طور مشابه، هنگام تولید پیش بینی، چندین برش روی تصویر ورودی ایجاد کرده و میانگین نتایج را به دست آوردیم. از ۵ برش استفاده کردیم. ۴ برش از گوشه و ١ برش از مرکز ( با استفاده از کد Caffe).
چرخش و برش تصاویر پیشرفت بسیار کمی را نشان داد. از ٩٢ درصد به ۴۶/٩٢ درصد.

آموزش اضافی با میزان یادگیری پایین

همه مدل ها بعد از یک نقطه خاص شروع به بیش برازش (overfit) کردند. این امر از طریق مشاهده صعود “تنظیم اعتبار” در برخی نقاط قابل دستیابی است.

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

داده های آموزشی تکمیلی

در ابتدا داده های خود را به سه مجموعه تقسیم کردم: آموزش (۶۴٪) ، اعتبارسنجی (١۶٪) و آزمون (٢٠٪). بعد از گذشت چند روز به این نتیجه رسیدیم که صرف نظر کردن از ٣۶٪ از داده ها ممکن است خیلی زیاد باشد. در نتیجه مجموعه های آموزشی و اعتبار سنجی را با هم ادغام شده و از مجموعه آزمون برای بررسی نتایج استفاده شد.

رفع اشتباه در داده های آموزش

هنگام تجزیه و تحلیل اشتباهات طبقه بندی گر در اعتبارسنجی ، متوجه اشتباهات فاحشی شدیم. به عنوان مثال، مدل با اطمینان می گفت چراغ سبز است در حالی که داده های آموزش می گفتند چراغ قرمز است. تصمیم گرفتیم این خطاها را در مجموعه آموزش برطرف کنیم. استدلال این بود که این اشتباهات باعث سردرگمی مدل می شوند و تعمیم آن را سخت تر می کنند. حتی اگر مجموعه آزمایش نهایی در پاسخ خود دارای خطای باشد، یک مدل عمومی تر شانس بیشتری برای دستیابی به دقت بالا در بین تصاویر دارد. در یکی از مدل های دارای اشتباه، ٧٠٩ تصویر را برچسب گذاری کردیم. این کار با Python script حدود یک ساعت زمان برد و تعداد خطاها را به ٣٣٧ عدد کاهش داد.

نقص های مدل دیپ لرنینگ

متعادل کردن داده ها:

داده ها متعادل نبودند. ١٩ درصد از تصاویر بدون چراغ راهنمایی، ۵٣ درصد در چراغ قرمز و ٢٨ درصد در چراغ سبز بودند. ما سعی کردیم با بیش نمونه گیری ( oversampling) داده های کمتر متداول، مجموعه داده ها را متعادل کنیم؛ اما پیشرفتی حاصل نشد.

جداسازی روز و شب

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

آموزش طبقه بندی گر برای موارد سخت

٣٠ در صد از تصاویری که طبقه بندی گر برای آن ها از اطمینانی کمتر از ٩٧ درصد برخوردار بود انتخاب کردیم. سپس سعی کردیم طبقه بندی گر را فقط بر روی این تصاویر آموزش دهیم. اما بهبودی حاصل نشد.

نمونه هایی از اشتباهات مدل در تشخیص چراغ راهنمایی

دیپ لرنینگ و تشخیص چراغ راهنمایی

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

 

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

 

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


Deep learning world

آنچه در این نوشته خواهیم داشت

  • مقدمه:
  • مفهوم FaceID:
  • چهره ها و اعداد در شبکه های عصبی ( شبکه عصبی Siamese )
  • مزیت نهایی استفاده از دیپ لرنینگ در تشخیص تصویر
  • اجرای FaceID در Keras
  • آزمایش شبیه سازی FaceID

مقدمه:

یکی از ویژگی های بحث برانگیز آیفون X روش باز کردن قفل با استفاده از تشخیص چهره ( FaceID ) است که جایگزین TouchID شده است. اپل پس از ساخت تلفن بدون حاشیه، مجبور شد روش جدیدی را برای باز کردن قفل گوشی به شکلی آسان و سریع ایجاد کند. در حالی که برخی از رقبا به قرار دادن سنسور اثر انگشت در موقعیتی جدید بسنده کردند، اپل تصمیم گرفت در شیوه باز کردن تلفن روشی نوآورانه و انقلابی را ایجاد کند؛ یعنی نگاه کردن به صفحه نمایش گوشی! به لطف بهره گیری از یک دوربین جلوی پیشرفته و بسیار کوچک، آیفون X قادر به ایجاد نقشه سه بعدی از چهره کاربر است. علاوه بر این، تصویری از چهره کاربر با استفاده از یک دوربین مادون قرمز ضبط می شود که نسبت به تغییرات در نور و رنگ محیط پایداری بیشتری دارد. با استفاده از دیپ لرنینگ ، تلفن های هوشمند قادر هستند با جزئیات کامل تری چهره کاربر را ضبط کنند، بنابراین هر بار که تلفن توسط صاحب آن برداشته می شود او را تشخیص می دهند. در کمال تعجب، اپل اظهار داشته است که این روش حتی از TouchID نیز ایمن تر بوده و میزان خطای برجسته آن ١:١٠٠٠٠٠٠ است.
ما به نحوه ایجاد این فرآیند با استفاده از دیپ لرنینگ و چگونگی بهینه سازی هر مرحله تمرکز کردیم. در این مقاله، نشان می دهیم که چگونه الگوریتم شبیه به FaceID را می توان با استفاده از Keras پیاده سازی کرد. آزمایش های نهایی با استفاده از Kinect، یک دوربین RGB بسیار محبوب، که دارای خروجی بسیار مشابه دوربین های جلوی آیفون X است، انجام شده اند.

مفهوم FaceID:

اجرای FaceID در Keras و دیپ لرنینگ و دیپ لرنینگ در پایتون و شبکه های عصبی و iphone x

فرآیند تنظیم FaceID

شبکه های عصبی FaceID عملکرد پیچیده ای دارند. اولین قدم، تجزیه و تحلیل دقیق نحوه عملکرد FaceID در آیفون X است. در TouchID، کاربر مجبور است ابتدا با لمس مکرر حسگر، اثر انگشت خود را ثبت کند. پس از حدود ١۵ نمونه گیری مختلف، تلفن هوشمند فرایند ثبت را تکمیل کرده و TouchID آماده فعالیت خواهد بود. به طور مشابه در FaceID نیز کاربر باید صورت خود را ثبت کند. فرایند بسیار ساده است: کاربر فقط به گوشی نگاه می کند و سپس به آرامی سرش را به دنبال یک دایره می چرخاند. بنابراین صورت در حالت های مختلف ثبت می شود. حالا قفل صفحه نمایش آماده فعالیت است. این روش ثبت سریع  و شگفت آور می تواند در مورد الگوریتم های یادگیری اساسی چیزهای زیادی به ما بگوید. به عنوان مثال، شبکه های عصبی در FaceID تنها عمل طبقه بندی را انجام نمی دهند. انجام طبقه بندی برای یک شبکه عصبی به معنای یادگیری این است که آیا شخصی که به آیفون نگاه می کند کاربر واقعی آن است یا خیر. بنابراین باید از برخی داده های آموزشی جهت پیش بینی “درست” یا “نادرست” استفاده کند. اما علی رغم موارد متعدد استفاده از دیپ لرنینگ ، در اینجا این رویکرد مؤثر نیست. ابتدا شبکه عصبی باید با استفاده از داده های جدید به دست آمده از چهره کاربر، آموزش ببیند. این امر نیازمند زمان، انرژی و داده های آموزشی از چهره های مختلف برای تشخیص تصویر است. بعلاوه، این روش امکان آموزش اپل در حالت آفلاین را فراهم نمی کند. اما FaceID با شبکه عصبی پیچشی Siamese (توضیح در بخش بعد) طراحی شده که در حالت آفلاین توسط اپل برای ثبت چهره آموزش می بیند.

چهره ها و اعداد در شبکه های عصبی ( شبکه عصبی Siamese )

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

اجرای FaceID در Keras و دیپ لرنینگ و دیپ لرنینگ در پایتون و شبکه های عصبی و iphone x

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

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

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

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

اجرای FaceID در Keras و دیپ لرنینگ و دیپ لرنینگ در پایتون و شبکه های عصبی و iphone x

هنگامی که ظاهر شما تغییر می کند، FaceID سازگار می شود

 

اجرای FaceID در Keras

در مورد همه پروژه های دیپ لرنینگ اولین چیزی که ما نیاز داریم داده است. ایجاد مجموعه داده های ما به زمان و همکاری بسیاری از افراد نیاز دارد و این می تواند بسیار چالش برانگیز باشد. به همین دلیل از مجموعه داده های چهره RGB-D موجود در اینترنت کمک گرفتیم. در این مجموعه داده، افراد با اشکال مختلف و جهات مختلف وجود دارند. همان طور که در هنگام استفاده از آیفون اتفاق می افتد.
در ابتدا یک شبکه عصبی پیچشی بر اساس معماری SqueezeNet ایجاد کردیم. شبکه عصبی به شکلی آموزش داده می شود که فاصله بین تصاویر یک شخص را به حداقل رسانده و فاصله بین تصاویر اشخاص مختلف را به حداکثر برساند. پس از آموزش ، شبکه قادر است چهره ها را در آرایه های ١٢٨ بعدی ترسیم کند. به گونه ای که تصاویر یک شخص در کنار هم طبقه بندی شده و از تصاویر افراد دیگر فاصله دارد. این بدان معنی است که برای باز کردن قفل، شبکه فقط باید فاصله بین تصاویر ذخیره شده در مرحله ثبت چهره و تصویری که در هنگام باز کردن قفل دریافت می کند، محاسبه کند. اگر فاصله زیر یک آستانه مشخص باشد، (هرچه کمتر باشد از امنیت بیشتری برخوردار است) قفل دستگاه باز می شود.

آزمایش شبیه سازی FaceID

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

اجرای FaceID در Keras و دیپ لرنینگ و دیپ لرنینگ در پایتون و شبکه های عصبی و iphone x

مرحله ثبت تصویر برای یک کاربر جدید با الهام از روند FaceID

 

حال ببینیم چه اتفاقی می افتد اگر همان کاربر سعی کند با حالت های مختلف چهره قفل دستگاه را باز کند.

اجرای FaceID در Keras و دیپ لرنینگ و دیپ لرنینگ در پایتون و شبکه های عصبی و iphone x

فاصله صورت در فضای تعبیه شده برای همان کاربر

 

از طرف دیگر ، تصاویر RGBD از افراد مختلف به طور متوسط فاصله ١/١ را ایجاد می کند.

اجرای FaceID در Keras و دیپ لرنینگ و دیپ لرنینگ در پایتون و شبکه های عصبی و iphone x

فاصله های چهره در فضای تعبیه شده برای کاربران مختلف

بنابراین، آستانه ای در حدود ۴/٠ باید برای جلوگیری از باز کردن قفل دستگاه توسط دیگران کافی باشد.

آموزش دیپ لرنینگ در پایتون را در آکادمی آمانج تجربه کنید.


Deep learning world

نچه در این نوشته خواهیم داشت

  • مقدمه
  • مقایسه چهره رونالدو 
  • پاسخ به این سوال با استفاده از بازی FIFA 18 
  • جمع آوری داده
  • معماری و آموزش مدل
  • استفاده از مدل های آموزش دیده برای تعویض چهره
  • آیا می توانیم از این الگوریتم برای قرار دادن تصویر خود در بازی استفاده کنیم؟
  • جمع بندی

مقدمه

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

مقایسه چهره رونالدو 

دیپ لرنینگ و یادگیری عمیق و فیفا و فیفا 18 و هوش مصنوعی و بازی های کامپیوتری

مقایسه چهره کریستیانو رونالدو، تصویر سمت چپ از 18 FIFA و تصویر سمت راست تولید شده توسط یک شبکه عصبی عمیق.

 

پاسخ به این سوال با استفاده از بازی FIFA 18 

برای اینکه دریابیم که آیا تحولات اخیر در یادگیری عمیق می تواند به سوال ما پاسخ دهد، با استفاده از الگوریتم معروف deepfakes ، روی بهبود چهره بازیکن ها در FIFA تمرکز می کنیم. Deepfakes یک شبکه عصبی عمیق است که می تواند برای تشخیص و تولید چهره های انسانی بسیار واقع بینانه آموزش ببیند. تمرکز ما در این پروژه بازآفرینی چهره بازیکن از درون بازی و بهبود آن هاست تا آنها را دقیقا مثل بازیکنان واقعی جلوه دهد. در اینجا توضیحی عالی در مورد چگونگی عملکرد الگوریتم deepfakes ارائه شده است. با استفاده از رمزگشای خودکار و شبکه های عصبی پیچشی، می توان چهره هر کسی را در یک فیلم با چهره افراد دیگر جابجا کرد.

جمع آوری داده

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

دیپ لرنینگ و یادگیری عمیق و فیفا و فیفا 18 و هوش مصنوعی و بازی های کامپیوتری

معماری و آموزش مدل

این الگوریتم شامل آموزش شبکه های عصبی عمیق به نام اتوکودرها است. این شبکه ها برای یادگیری بدون نظارت مورد استفاده قرار می گیرند و دارای یک رمزگذار هستند که می توانند با استفاده از یک رمزگذار، یک ورودی را رمزگذاری کنند. پس از آن، از یک رمزگشا برای بازسازی ورودی اصلی استفاده می کنند. برای تصویری مانند نمونه ما، از یک شبکه کانولوشن (پیچشی) به عنوان رمزگذار و یک شبکه دکانولوشن به عنوان رمزگشا استفاده می کنیم. این معماری به منظور به حداقل رساندن خطای بازسازی آموزش داده شده است. برای مورد ما، دو شبکه را به طور همزمان آموزش می دهیم. یک شبکه می آموزد چهره رونالدو را از گرافیک بازی FIFA 18 بازآفرینی کند؛ و شبکه دیگر یاد می گیرد که چهره را از تصاویر واقعی رونالدو بازآفرینی کند. در deepfakes، هر دو شبکه، یک رمزگذار مشترک و دو رمزگشای مختلف استفاده می کنند. بنابراین، ما اکنون دو شبکه داریم که یاد گرفته اند که رونالدو در بازی و در زندگی واقعی چگونه به نظر می رسد.

دیپ لرنینگ و یادگیری عمیق و فیفا و فیفا 18 و هوش مصنوعی و بازی های کامپیوتری

 

دیپ لرنینگ و یادگیری عمیق و فیفا و فیفا 18 و هوش مصنوعی و بازی های کامپیوتری

استفاده از مدل های آموزش دیده برای تعویض چهره

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

دیپ لرنینگ و یادگیری عمیق و فیفا و فیفا 18 و هوش مصنوعی و بازی های کامپیوتری

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

دیپ لرنینگ و یادگیری عمیق و فیفا و فیفا 18 و هوش مصنوعی و بازی های کامپیوتریچهره های 18 FIFA در مقایسه با تصاویر شبکه عصبی عمیق از رونالدو ، موراتا و اوزیل

آیا می توانیم از این الگوریتم برای قرار دادن تصویر خود در بازی استفاده کنیم؟

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

 

جمع بندی

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


Deep learning world

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

آنچه در این نوشته خواهیم داشت

نگاهی کوتاه به مفهوم یادگیری عمیق

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

٩ کاربرد یادگیری عمیق در زندگی روزانه

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

١. دید رایانه ای (دید کامپیوتری)

دیپ لرنینگ و یادگیری عمیق و هوش مصنوعی

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

٢. ربات های مبتنی بر دیپ لرنینگ

دیپ لرنینگ و یادگیری عمیق و هوش مصنوعی

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

٣. ترجمه خودکار

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

۴. تجربه مشتری

دیپ لرنینگ و یادگیری عمیق و تجربه مشتری و هوش مصنوعی

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

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

۵. اتومبیل های خودران

دیپ لرنینگ و یادگیری عمیق و اتومبیل های خودران و هوش مصنوعی

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

۶. رنگ آمیزی

در گذشته اضافه کردن رنگ به فیلم های سیاه و سفید یکی از وقت گیرترین شغل ها در تولید رسانه بود. اما به لطف مدل های یادگیری عمیق و هوش مصنوعی افزودن رنگ به عکسها و فیلمهای B/W، اکنون از همیشه راحت تر است.

٧. تجزیه و تحلیل تصویر و تولید زیرنویس

دیپ لرنینگ و یادگیری عمیق و تجزیه و تحلیل تصویر و هوش مصنوعی

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

٨. تولید متن

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

٩. شناسایی زبان

دیپ لرنینگ و یادگیری عمیق و شناسایی زبان و هوش مصنوعی

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

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

آموزش دیپ لرنینگ آکادمی آمانج


Deep learning world

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

 

 

 

نقش دیپ لرنینگ در پیشرفت اتومبیل های بدون راننده

در طی یک دهه گذشته، یادگیری عمیق و هوش مصنوعی به اصلی ترین فناوری ها در پیشرفت بسیاری از تکنولوژی ها از قبیل روباتیک، پردازش زبان طبیعی، سیستم های ضد ی و اتومبیل های بدون راننده تبدیل شدند.
در این راستا، هوش مصنوعی، دیپ لرنینگ و شبکه های عصبی می توانند در این سه زمینه موثر باشند:
• استفاده از داده های حسگر به منظور طراحی صحنه
• تشخیص علائم و قوانین رانندگی
• یادگیری مداوم به منظور بهبود ایمنی و عملکرد
در حال حاضر، سیستم های کمک راننده، عملکردهای رانندگی نظیر: مسیریابی، کنترل حرکت بین خطوط، جلوگیری از تصادف و پارک کردن را کنترل می کنند. اما آن ها قادر به رانندگی بدون حضور انسان نیستند. حال آنکه هوش مصنوعی و فناوری های یادگیری عمیق، با استفاده از حسگرهای پیشرفته و نقشه برداری مسیر، کمک می کنند تا اتومبیل ها کاملاً خودمختار و ایمن تر از خودروهای رانده شده توسط انسان حرکت کنند.
مسیر پیشرفت اتومبیل های خودران دارای چندین سطح است:
• سطح ٠: اتومبیل به طور کامل توسط انسان هدایت می شود.
 سطح ١: فرمان، ترمز، شتاب، پارکینگ و سایر کارکردها می توانند به صورت اتوماتیک توسط اتومبیل انجام شوند، اما راننده همیشه آماده است تا کنترل اتومبیل را به دست بگیرد.
• سطح ٢: حداقل یک سیستم کمک به راننده کاملا خودکار وجود دارد (مانند کنترل سرعت و مسیر حرکت) اما راننده هوشیار است تا در صورت عدم موفقیت سیستم، حوادث یا اشیاء را تشخیص داده و عکس العمل نشان دهد.
• سطح ٣: رانندگان می توانند هنگامی که شرایط محیطی و ترافیکی را مناسب دیدند، عملکردهای اصلی را به طور کامل به وسیله نقلیه واگذار کنند. در این سطح، برخلاف سطوح قبلی، نیازی به نظارت دائمی توسط راننده وجود ندارد.
• سطح ۴: وسیله نقلیه کاملاً خودمختار بوده و قادر به انجام کلیه عملکردهای مهم رانندگی در ایمنی و نظارت بر شرایط جاده برای یک سفر کامل است.
• سطح ۵: وسیله نقلیه کاملا خودمختار عمل می کند؛ و به اثبات می رسد که بهتر از یک انسان رانندگی می کند.
امروزه بیشتر اتومبیل های موجود در جاده ها در سطح صفر قرار دارند؛ در حالی که بسیاری از وسایل نقلیه تولید شده در چند سال گذشته دارای استقلال سطح ١یا ٢ هستند. سطوح بالاتر نیازمند هوش مصنوعی هستند. سطح ۴ و ۵ با استفاده از فناوریهای پیشرفته یادگیری عمیق ساخته خواهد شد.

نیازهای عملکردی در رانندگی بدون راننده

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

حسگر:

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

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

 

مسیریاب:

اتومبیل های هوشمند از داده های GPS برای رسیدن باز نقطه A به نقطه B استفاده می کنند. اما همچنان به ترجیحات راننده نیز نیاز دارند تا نقشه برداری از مسیر را تا حد امکان کارآمدتر کنند.

 

ت رانندگی:

سیستم های خودکار باید بدانند چه زمانی خطوط را عوض کرده یا سرعت را تغییر دهند. رانندگان انسانی مجموعه ای از ت ها را متناسب با سبک رانندگی و شرایط رانندگی خود ایجاد می کنند. اتومبیل های بدون راننده نیز برای اتخاذ تصمیمات ایمن، به مجموعه ای از ت های جامع نیاز دارند.
سیستم عامل های اتوموبیل های خودران باید:
o به طور پیوسته اجرا شوند
o قادر به فعالیت ایمن در شرایط سخت ( هوای بد یا ترافیک سنگین) و شب باشند
o به رفتار غیر قابل پیش بینی سایر وسایل نقلیه، عابرین، تعمیرات جاده ای و غیره بدون درصد خطا واکنش نشان دهند.
هر یک از این نیازها بیانگر چندین چالش در فناوری است. یکی از مهمترین الزامات که به درستی توسط یادگیری عمیق پوشش داده می شود؛ توانایی درک کل تصویر در لحظه است (که توسط چندین سنسور شکل می گیرد).

شبکه های عصبی صحنه را ترسیم می کنند

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

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

شبکه های عصبی پیچشی (CNN):

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

شبکه های عصبی بازگشتی(RNN):

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

شبکه های عصبی تقویتی (DRL):

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

جمع بندی:

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

منبع:

https://amanjacademy.com/how-self-driving-cars_become-to-reality/


Deep learning world

تبلیغات

آخرین ارسال ها

آخرین جستجو ها

تجهیزات ساختمانی دل نوشته بروزترین ترفند ها و برنامه های اندرویدی و کاربردی فلزیاب | طلایاب | معدن یاب | دفینه | زیرخاکی | آثار باستانی ياسهاي عاشق یومانی ، وبلاگ فروغی تله شاپ مرکز پزشکی، دندانپزشکی یوسف آباد جاده