سفارش تبلیغ
صبا ویژن

چه قدر میتوانم وزن کم کنم؟

 

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

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

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


دوربین مداربسته مخفی و کاربردهایش

 

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

 

ویژگی های دوربین مخفی:

عدم قابلیت دید در شب: دوربین مخفی فاقد قدرت دید در شب IR است. بنابراین در شب نمی توان انتظار تصاویر با کیفیتی را از آنها داشت.

لنز ثابت: لنز بکار رفته در دوربین مخفی اغلب از نوع ثابت است. 

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

 

 

کاربردهای دوربین مخفی

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

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

1. نظارت بر افراد و اماکن به صورت مخفی و نامحسوس مانند نظارت بر پرستار

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

 

 قیمت دوربین مخفی

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

  • باتری خور بودن دوربین مدار بسته مخفی
  • داشتن رزولوشن بالا
  • داشتن منوی OSD
  • قابلیت ضبط صدا
  • قابلیت دید در شب
  • اندازه (هر چقد اندازه دوربین کوچکتر باشد ، قیمت بیشتر دارد)
  • داشتن قاب (مثل قاب خودکار ، قاب چشمی ، قاب شارژر و سایر مدل ها)

 

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


بهترین گروه آموزش رقص آذری

آموزش رقص آذربایجانی در تهران و شهرستان ها

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

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

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

برای آشنایی بیشتر با اجراهای گروه آیلان و کلاس ها به سایت آیلان مراجعه نمایید


چگونه با استفاده از پایتون یک چت بات ساده بسازیم؟

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

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

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

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

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

چت بات چیست؟

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

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

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

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

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

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

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

پیش نیازها:
داشتن دانش کلی از کتابخانه 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 ، وزنی است که اغلب در بازیابی اطلاعات و استخراج متن مورد استفاده قرار می گیرد. این وزن یک معیار آماری است که برای ارزیابی اهمیت کلمه در یک اسندیا مجموعه.
مثال:
سندی را در نظر بگیرید که شامل 100 کلمه است و در آن کلمه “تلفن” 5 بار تکرار شده است. TF برای این کلمه 5/100 است. حال ، فرض کنید ما 10 میلیون سند داریم و کلمه تلفن در هزار مورد از آنها تکرار شده است. آنگاه 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 only
sent_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 و آشنایی با چت بات است. این مثال به شما کمک می کند تا به طراحی و چالش های ایجاد چت بات بیاندیشید.


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

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

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

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

چالش:

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

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

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

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

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

طبقه بندی نهایی در مجموعه آزمون Nexar با اندازه مدل 84/7 مگابایت به دقت 95/94 درصد دست یافت.
فرایند دستیابی به دقت بالاتر شامل تعداد زیادی آزمون و خطاست. در پشت برخی از آن ها منطقی وجود داشت و بعضی دیگر فقط بر اساس حدس و گمان جلو رفتند.

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

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

SqueezeNet

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

چرخش تصاویر

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

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

اگرچه این بخش بزرگی از مجموعه داده ها نیست، اما می خواستیم مدل، آن ها را به درستی طبقه بندی کند.
متأسفانه ، هیچ داده ای در تصاویر jpeg که جهت گیری را مشخص می کند، وجود نداشت. به منظور تکمیل تصاویر از آموزش مدل در “میانگین پیش بینی ها” در چرخش های 0? ، 90? ، 180? و 270? استفاده کردیم. منظور از میانگین پیش بینی ها، میانگین احتمالات تولید شده توسط مدل در هر یک از این چرخش هاست.

برش نمونه ها

در طول آموزش، شبکه SqueezeNet برای اولین بار به طور پیش فرض برش تصادفی تصاویر ورودی را انجام داد و ما آن را تغییر ندادیم. این نوع تقویت داده باعث می شود که شبکه بهتر تعمیم پیدا کند. به طور مشابه، هنگام تولید پیش بینی، چندین برش روی تصویر ورودی ایجاد کرده و میانگین نتایج را به دست آوردیم. از 5 برش استفاده کردیم. 4 برش از گوشه و 1 برش از مرکز ( با استفاده از کد Caffe).
چرخش و برش تصاویر پیشرفت بسیار کمی را نشان داد. از 92 درصد به 46/92 درصد.

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

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

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

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

در ابتدا داده های خود را به سه مجموعه تقسیم کردم: آموزش (64?) ، اعتبارسنجی (16?) و آزمون (20?). بعد از گذشت چند روز به این نتیجه رسیدیم که صرف نظر کردن از 36? از داده ها ممکن است خیلی زیاد باشد. در نتیجه مجموعه های آموزشی و اعتبار سنجی را با هم ادغام شده و از مجموعه آزمون برای بررسی نتایج استفاده شد.

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

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

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

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

داده ها متعادل نبودند. 19 درصد از تصاویر بدون چراغ راهنمایی، 53 درصد در چراغ قرمز و 28 درصد در چراغ سبز بودند. ما سعی کردیم با بیش نمونه گیری ( oversampling) داده های کمتر متداول، مجموعه داده ها را متعادل کنیم؛ اما پیشرفتی حاصل نشد.

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

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

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

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

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

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

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

 

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

 

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