<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های Sanaz Khalili</title><link>https://virgool.ir/feed/@S.Kh</link><description>https://github.com/sanazkhalili - https://www.kaggle.com/skhalili</description><language>fa</language><pubDate>2026-11-11 03:41:40</pubDate><image><url>https://virgool.ir/images/default-avatar.jpg</url><title>Sanaz Khalili</title><link>https://virgool.ir/@S.Kh</link></image><item><title>الگوهای طراحی در پایتون 4</title><link>https://virgool.ir/@S.Kh/الگوهای-طراحی-در-پایتون-4-ucj4q0x0fnkk</link><description>به نام خداالگوی builder، اجازه می دهد تا اشیا پیچیده را مرحله به مرحله بسازیم. بیایید با یک مثال آن را بررسی کنیم.فرض کنید یک شرکت تولید کامپیوتر داریم که سیستم هایی با امکانات سخت افزاری متفاوت می سازد. برای مدیریت کارآمد سفارشات سیستم ها از این الگو استفاده می کنیم.در ابتدا ما یک محصول داریم که می تواند اجزای آن مقادیر متفاوت داشته باشند پس یک کلاس برای محصول می سازیم.در این کلاس تابعی برای ساخت لیست خالی از اشیائی که می تواند در این محصول باشد، تابعی برای اضافه کردن مقادیر محصولات و تابعی برای برگرداندن مشخصات محصول وجود دارد. حال یک سازنده یا builder می سازیم که توابعی برای ساخت اجزای محصول به شکل abstract ارائه می کند.کلاس دیگری برای پیاده سازی متدهای builder برای ویژگی های خاص ذکر شده می سازیم.سپس کلاسی به نام Director پیاده سازی می کنیم که با شیئی که از builder به عنوان ورودی دریافت می کند، سروکار دارد.بعد با استفاده از builder که از Director  می سازیم مقادیر محصول مشخص می کنیم.</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Tue, 12 Sep 2023 10:45:53 +0330</pubDate></item><item><title>الگوهای طراحی در پایتون 1</title><link>https://virgool.ir/@S.Kh/الگوهای-طراحی-در-پایتون-1-gg6rrfu0mr3l</link><description>به نام خداالگوهای طراحی، راهی برای  حل مشکلاتی هستند که در طراحی و توسعه یک نرم افزار رخ می دهد.  این الگوها را در 3 دسته، دسته بندی می کنند:دسته اول: Creational patternsمکانیزم هایی برای ساخت اشیا ارائه می دهد به نحوی که کدهای نوشته شده، flexible و قابل استفاده مجدد باشند.این دسته شامل الگوهای زیر است:1- Factory Method2- Abstract Method3- Builder4- Prototype5- Singletonدسته دوم: Structural patternsکمک می کند تا ساختار اشیا و کلاس های بزرگ را به گونه ای بنویسیم که flexible و efficient تر باشند.1- Adopter2- Bridge3- Composite4- Decorator5- Facade6- Flyweight7- Proxyدسته سوم: Behavioral patternsبه ارتباطات اشیا توجه می کند و وظیفه ی هر یک را مشخص می کند.Command PatternInterpreter PatternIterator PatternMediator PatternMemento PatternObserver PatternState PatternStrategy PatternTemplate PatternVisitor PatternNull Object</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Tue, 12 Sep 2023 10:09:20 +0330</pubDate></item><item><title>الگوهای طراحی در پایتون 3</title><link>https://virgool.ir/@S.Kh/الگوهای-طراحی-در-پایتون-3-m0okng0o4xaa</link><description>به نام خدادر این پست می خواهیم abstract factory را در پایتون بررسی کنیم.به این مدل می توان factory of factories نیز گفت یعنی کارخانه ای که خودش کارخانه تولید می کند. اجازه دهید آن را با مثالی بررسی کنیم.فرض کنید می خواهیم یک رابط کاربری برای دو سیستم عامل mac و ویندوز طراحی کنیم و فرض بر این است در هر دو اینها یک دکمه و یک textview داریم.پس کارخانه ی ما در واقع قرار است یک textview , button بسازد. پس همین را می نویسیم:اما نحوه نمایش و کار با آن ها در دو سیستم عامل متفاوت است پس نیاز است دو زیر کارخانه از این کارخانه بسازیم که عملیات متفاوتی برای ویندوز و mac انجام دهد. حال برای پیاده سازی دکمه ها و textviewهای این دو سیستم عامل نیاز است تا کلاسی برای هریک بسازیم.حال اگر بخواهیم برای ویندوز رابط کاربری را آماده کنیم فقط کافی است کارخانه اش را صدا بزنیم و با استفاده از آن دو کامپوننت دکمه  و textview را بسازیم.چیزی که در متغیر windows_app قرار می گیرد، دو شی دکمه و textview است که برای کار با آن ها فقط کافیست توابعشان را صدا بزنیم:منبع مثال: ChatGPT</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Tue, 12 Sep 2023 10:07:49 +0330</pubDate></item><item><title>error: Microsoft Visual C++ 14.0 or greater is required. Get it with &#34;Microsoft C++ Build Tools&#34;</title><link>https://virgool.ir/@S.Kh/error-microsoft-visual-c-140-or-greater-is-required-get-it-with-microsoft-c-build-tools-eqvba6arcqky</link><description>به نام خداگاهی اوقات هنگام نصب یک کتابخانه در پایتون به خطای error: Microsoft Visual C++ 14.0 or greater is required. Get it with &#34;Microsoft C++ Build Tools&#34;: https://visualstudio.microsoft.com/visual-cpp-build-tools/برخورد می کنیم.برای حل آن می بایست به همان آدرسی که در خطا مشخص کرده است رفته و سپس نرم افزار را نصب کنیم.سپس مطابق تصاویر زیر ابزارهای مورد نیاز را نصب کنیم.منبع:https://stackoverflow.com/questions/64261546/how-to-solve-error-microsoft-visual-c-14-0-or-greater-is-required-when-inst</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Mon, 17 Jul 2023 15:48:54 +0330</pubDate></item><item><title>تفاوت at , loc در pandas</title><link>https://virgool.ir/@S.Kh/تفاوت-at-loc-در-pandas-iypglgjtqwrh</link><description>به نام خداهر دو دستور at , loc سطری از یک دیتافریم را بر می گردانند(یا حتی مقداری از یک ویژگی در سطری خاص). تغاوت در این است که loc می تواند مقادیر را برای چند سطر و ستون برگرداند اما دستور at فقط می تواند مقادیر یک سطر و ستون را بر گرداند. برای روشن شدن تفاوت به مثال زیر توجه کنید:منبع:https://www.statology.org/pandas-at-vs-loc/#:~:text=loc%20can%20take%20multiple%20rows,one%20column%20as%20input%20arguments</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Sun, 02 Jul 2023 15:44:59 +0330</pubDate></item><item><title>*args, **kwargs</title><link>https://virgool.ir/@S.Kh/args-kwargs-yf25gtwuwmjk</link><description>به نام خدادر تعریف آرگومان های بعضی از توابع می بینیم که متغیرهایی مثل args , **kwargs *وجود دارد. اما این ها به چه معنی هستند؟زمانی که قبل از یک متغیر یک ستاره وجود دارد یعنی ممکن است هر تعداد آرگومان ورودی به این تابع وجود داشته باشد(برای حالتی که تعداد ورودی ها را نمی دانیم.)مثالdef test(*args):&#xA;     for arg in args:&#xA;            print(arg)اما در حالتی که 2 ستاره وجود دارد به این معناست که زمان فرخوانی هر تعداد مقادیر شامل key , value را می توانیم برای این تابع ارسال کرده و با استفاده از کلیدها به مقادیرش دسترسی داشته باشیم.def test(**k):&#xA;      print(k[&#39;name&#39;])&#xA;&#xA;test(name=&#39;sanaz&#39;)&#xA;test(name=&#39;sanaz&#39;, family=&#39;khalili&#39;)</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Sun, 02 Jul 2023 08:41:26 +0330</pubDate></item><item><title>Ellipsis in python</title><link>https://virgool.ir/@S.Kh/ellipsis-in-python-nt6q2wp1qjzk</link><description>به نام خدادر زبان انگلیسی زمانی از سه نقطه یا ... استفاده می کنیم که چیزی را کنار بگذاریم. در پایتون این یک ثابت شناخته شده است(یا built-in constant) که برای استفاده از آن احتیاجی به import شدن ندارد.اما چه زمانی استفاده می شود؟1- به عنوان placeholderدر جایی که فعلا نمی خواهیم کدنویسی انجام دهیم مثلا در بدنه ی یک تابع می توانیم از ... یا Ellipsis  استفاده کنیم.def test():&#xA;      ...&#xA;test()استفاده از ... از نظر بصری به کد خوانایی بهتری می دهد.نکته: به فانکشن یا کلاسی که هنوز پیاده سازی نشده است stub می گویند.def test():&#xA;passمثل ... از pass هم می شود استفاده کرد اما ... برای حالت stub متداول تر است.نکته: type hinting یک راه عالی برای مشخص کردن نوع داده ها در پایتون است تا نوع متغیرها مشخص شوند و گیج کننده نباشد.2- برای مواردی از type hinting می توان از ... استفاده کرد.number: tuple[int, ...]به این معناست که همه ی عناصر آن تاپل int باشد.def partial(func: Callable[..., str], *args) -&gt; Callable[..., str]:&#xA;# Bodyبا استفاده از Ellipsis  در آرگومان های ورودی تابع مشخص کرده است که تابع func دارای ورودی از هر نوع می تواند باشد اما خروجی آن str است.([str, ...])3- استفاده از ... برای برگرداندن ابعادی که در آرایه ی نامپای اهمیتی ندارد نیز می تواند استفاده شود.import numpy as np&#xA;a = np.random(5,2,3)&#xA;a[1,...]در این کد Ellipsis  به این معناست که در بعد اول این آرایه فقط سطر اول را می خواهیم و برای ابعاد دیگر همه ی مقادیر را می خواهیم(به عبارتی ابعاد دیگر اهمیتی ندارد از بعد اول فقط عدد 1 را قرار داده ایم.)منابع:https://realpython.com/python-ellipsis/#:~:text=In%20Short%3A%20Use%20the%20Ellipsis%20as%20a%20Placeholder%20in%20Python,-While%20you%20can&amp;text=That%20means%20you%20can%20use,parts%20of%20your%20code%20online.https://medium.com/techtofreedom/3-uses-of-the-ellipsis-in-python-25795aac723d</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Sat, 01 Jul 2023 16:18:53 +0330</pubDate></item><item><title>Text analyzer in elasticsearch</title><link>https://virgool.ir/@S.Kh/text-analyzer-in-elasticsearch-kxxzhaovbyrp</link><description>به نام خدایک پردازشی است که داده های متنی بدون ساختار مثل متن ایمیل یا توضیح یک محصول را در ساختاری قالب بندی می کند که این کار، عملیات جستجو را راحت تر می سازد. Analysis با استفاده از tokenization امکان سرچ را در کل متن میسر می کند. هر متن را به قسمت های کوچکی که   به آن توکن می گویند می شکند. در بیشتر موارد این توکن فقط یک کلمه است. اما در این جستجو عبارتی مثل fox  با foxes زمانی که سرچ شود، مطابقت داده نمی شود و بر نمی گردد. یا کلمه ای مثل quick و Quick در سرچ یکسان در نظر گرفته نمی شوند.برای این که این مشکل حل شود از normalize کردن استفاده می کنیم. Text analysis برای اجرا، از analyzer ها استفاده می کند. analyzer ها یک سری قوانین اند که بر کل فرایند حاکم هستند. الستیک یک آنالایز پیش فرض به نام standard analyzer دارد. ساختار یک آنالایزر:هر دو نوع آنالایزر( custome یا built-in ) شامل 3 قسمت سطح پایین تر زیر است:1- character filters  2- tokenizers3- token filtersبخش character filter:در این بخش متن اصلی را به عنوان یم stream از کاراکترها دریافت می کند و با کم، تغییر یا زیادکردن کاراکترها می توان آن ها را به stream دیگری تبدیل کند. مثلا تبدیل یک سری عدد فارسی به انگلیسی. یک آنالایزر می تواند هر تعداد character filter داشته باشد.(حتی اصلا نداشته باشد.)بخش Tokenizer:این قسمت، استریمی از کاراکترها را دریافت می کند و آن را به توکن هایی می شکند که معمولا توکن ها تک کلمه ها هستند. tokenizer  مسئول نگهداری موقعیت و ترتیب ترم هاست. هر آنالایزر دقیقا یک Tokenizer دارد.بخش Token filters:یک token filters، استریمی از توکن ها را دریافت می کند و ممکن است به آن توکن هایی اضافه، کم یا تغییر دهد.  یک آنالایزر می تواند هر تعداد Token filters داشته باشد.(حتی اصلا نداشته باشد.)تحلیل متن یا text analysis در دو زمان انجام می شود:زمان index هنگامی که یک index ایجاد می شود، هر مقدار فیلد متنی آنالیز می شود.زمان search یا query هنگام اجرای جستجوی full-text در یک فیلد متنی.</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Sat, 24 Jun 2023 13:46:03 +0330</pubDate></item><item><title>تمپلیت ها در الستیک سرچ</title><link>https://virgool.ir/@S.Kh/تمپلیت-ها-در-الستیک-سرچ-cwgcchyf5jbd</link><description>به نام خداتمپلیت راهی است که به الستیک می گوید تنظیمات و پیکربندی های یک اندیس را هنگام ساختن آن چگونه در نظر بگیرد. در واقع پیکربندی از پیش تعریف شده ای را برای اندیس هایی که ساخته می شوند در نظر می گیرد. دو نوع تمپلیت وجود دارد:1) index template 2) component templateتمپلیت ها قابلیت ارث بری ندارند. بعنی اگر قرار باشد تمپلیت جدیدی بسازیم که کمی با تمپلیت قبلی متفاوت است باید دوباره همه ی ویژگی های تمپلیت جدید را تعریف کنیم. از این رو می توانیم قسمت های مختلف یک index template را با استفاده  از component template ها تعریف کنیم و از آن ها به صورت مشترک در index template های مختلف استفاده کنیم.یک اندیس شامل ویژگی های alias، mapping و setting است.در قسمت mapping مشخصات و ویژگی های فیلدها یا متغیرهای runtime که نیاز است را می توان تعریف کرد. در بخش setting تنظیماتی مثل تعداد shard های primary و replicas را برای اندیس می توان مشخص نمود و در نهایت از alias می توان برای ساخت نام های دیگر این اندیس استفاده کرد.به مثالی که در زیر آمده توجه نمایید:1- ساخت یک component template برای بخش setting ها :در این قسمت برای تنظیمات، یک primary shard و دوتا replica shard در نظر گرفته ایم.2- ساخت یک component template برای بخش mapping:3- ساخت component template برای بخش alias:ساخت index template با استفاده از component template های ساخته شده:در این تمپلیت، الگویی را مشخص می کنیم که اگر اندیس جدیدی که ساخته می شود شامل این الگو باشد، این پیکربندی ها را داشته باشد. در این جا باید انتهای نام آن اندیس test باشد. ممکن است چند index template داشته باشیم که این الگو را داشته باشند. می توانیم با استفاده از priority مشخص کنیم که کدام یک اولویت  بیشتری دارد و در نظر گرفته شود.حال اگر یک اندیس بسازیم که با کلمه ی test تمام شود، ویژگی های alias، mapping و setting  آن موارد بالا خواهد بود.نکته:در قسمت mapping برای source می توانیم این ویژگی را مشخص کنیم که مقادیر source نمایش داده شوند یا خیر. در صورتی که false باشد مثل کد گفته شده در بالا مقادیر ویژگی در source نشان داده نمی شوند و فقط ویژگی های دیگر داکیومنت ها نشان داده می شود.ساخت فیلد runtime در تمپلیت با نام run_field_test:در زمان سرچ برای مشاهده ی این فیلد باید نام آن را در قسمت فیلدها آورد. در کوئری سرچ خود به خود نمایش داده نمی شود.&#xA;منابع:https://www.elastic.co/guide/en/elasticsearch/reference/current/index-templates.htmlhttps://opster.com/guides/elasticsearch/data-architecture/index-composable-templates/</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Sat, 24 Jun 2023 12:34:40 +0330</pubDate></item><item><title>بخش alias در الستیک سرچ به زبان ساده</title><link>https://virgool.ir/@S.Kh/بخش-alias-در-الستیک-سرچ-به-زبان-ساده-laybamdlafuq</link><description>به نام خدادستور alias در واقع تعریف نام دومی برای گروهی از اندیس هاست که می توان برای آن ها دستوراتی از جمله فیلتر هم اعمال کرد.ساخت یک alias به همراه اضافه کردن یک اندیس به آن در زیر آمده است.اضافه کردن یک اندیس به همراه اعمال فیلتری به آنحذف یک اندیس از aliasمنبع: https://www.elastic.co/guide/en/elasticsearch/reference/current/aliases.html#aliases</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Sat, 24 Jun 2023 10:15:22 +0330</pubDate></item><item><title>تعریف متغیر سراسری در کدهای flask</title><link>https://virgool.ir/@S.Kh/تعریف-متغیر-سراسری-در-کدهای-flask-m5sx8iy4diqg</link><description>به نام خدااگر نیاز باشد تا یک متغیر سراسری در کدهای flask خود تعریف کنیم که مثلا کار شمارش را انجام دهد، نمی توانیم با استفاده از کلمه ی کلیدی global این کار را انجام دهیم. چون کدهای flask که یک اپلیکیشن WSGI است به صورت multi processing کارشان را انجام می دهند. برای اینکه بتوانیم با وجود این ویژگی، متغیر مناسبی تعریف کنیم، می توانیم از multiprocessing.Value استفاده کنیم.این Value یک شیئی می سازد که حافظه ی خود را به صورت اشتراکی بین فرزندان پردازش ها به اشتراک می گذارد.منابع:https://docs.python.org/3/library/multiprocessing.html#multiprocessing.Valuehttps://stackoverflow.com/questions/42680357/increment-counter-for-every-access-to-a-flask-view</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Mon, 12 Jun 2023 15:04:20 +0330</pubDate></item><item><title>تغییر اکانت گیت هاب در ویندوز</title><link>https://virgool.ir/@S.Kh/تغییر-اکانت-گیت-هاب-در-ویندوز-x4pllmn16g53</link><description>به نام خدابرای تغییر اکانت گیت هاب ویندوز، می توانیم درcontrol panel به قسمت Credential Manager رفته و گیت هاب را در آن پیدا کرده و حذف یا تغییر داد. منبع:https://dev.to/kasuken/change-github-account-on-windows-2b91#:~:text=To%20change%20and%20to%20switch,%22%20or%20%22git%20push%22.</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Sat, 04 Mar 2023 16:40:08 +0330</pubDate></item><item><title>4 روش برای معکوس کردن یک لیست</title><link>https://virgool.ir/@S.Kh/بر-عکس-کردن-یک-آرایه-iuqe1jws7rfk</link><description>به نام خدا4 روش برای معکوس کردن لیست های پایتون در لینک زیر آمده است.https://www.kaggle.com/code/skhalili/reverse-one-list-in-pythonدو روش با استفاده از حلقه ی for انجام می شود. روش دیگر با استفاده از تابع reversed است. می توان از عملگر برش نیز برای معکوس کردن آرایه به شکل ساده استفاده کرد.</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Sat, 30 Jul 2022 21:55:17 +0430</pubDate></item><item><title>دانلود فایل با پسوند ipynb از گیت هاب</title><link>https://virgool.ir/@S.Kh/دانلود-فایل-با-پسوند-ipynb-از-گیت-هاب-b5hadfoendaz</link><description>به نام خداگاهی اوقات نیاز است به جای clone کردن کل یک پروژه در گیت هاب فقط یک فایل از آن را دانلود کنیم اما گزینه ای برای دانلود آن وجود ندارد. می توان از روش زیر برای ذخیره ی آن استفاده کرد.فرض کنید به کد زیر احتیاج داریم:https://github.com/sanazkhalili/YOLOv3/blob/master/codes/Calculate_mAP.ipynbبر روی گزینه ی Raw کلیک می کنیم.سپس صفحه ی باز شده را با راست کلیک روی صفحه یا دکمه های  Ctrl + s را با پسوند ipynb ذخیره می کنیم.در نهایت با نرم افزار جوپیتر می توانیم آن را باز کنیم.منبع:https://stackoverflow.com/questions/45622602/how-to-save-jupyter-notebooks-from-github</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Thu, 28 Jul 2022 18:53:06 +0430</pubDate></item><item><title>پیدا کردن nتا بزرگترین مقدار در ماتریس همبستگی</title><link>https://virgool.ir/@S.Kh/پیدا-کردن-nتا-بزرگترین-مقدار-در-ماتریس-همبستگی-tnsus8t1dsvu</link><description>به نام خدادر برخی مسائل نیاز داریم بدانیم کدام ویژگی ها با هم بیشترین همبستگی را دارند. برای تعیین میزان همبستگی ها می توانیم از تابع زیر استفاده کنیم تا همبستگی همه ی داده ها را مشاهده کنیم(این دستور برای دیتافریم ها در کتابخانه ی Pandas است).گاهی اوقات تعداد ویژگی ها زیاد است و سخت است این مقادیر را پیدا کنیم. برای اینکه بتوانیم ویژگی هایی که بیشترین همبستگی را دارند پیدا کنیم می توانیم از کدی که در لینک زیر قرار دادم استفاده کنیم.https://www.kaggle.com/code/skhalili/find-the-nth-largest-value-in-a-correlation-matrix?scriptVersionId=101892455در این کد تابعی نوشته شده است که می تواند به تعداد دلخواه ویژگی هایی که بیشترین همبستگی را دارند مشخص کند.</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Wed, 27 Jul 2022 20:43:53 +0430</pubDate></item><item><title>خانواده ی یولو(پست دوم: یولو1)</title><link>https://virgool.ir/@S.Kh/خانواده-ی-یولوپست-دوم-یولو1-jhe8dlpknksu</link><description>به نام خدایولو1 در سال 2016 توسط جوزف ردمون و همکارانش با عنوان You Only Look Once: Unified, Real-Time Object Detection در کنفرانس CVPR ارائه شد. این الگوریتم اولین الگوریتم single stage برای تشخیص اشیا است. کلمه ی YOLO از عبارت you only look once گرفته شده است به این معنی که این الگوریتم مثل بینایی بشر فقط یکبار به تصویر نگاه می کند و مکان اشیا و کلاس آن ها را پیش بینی می کند.یولو1 الگوریتمی سریع است که در هر ثانیه 45 فریم(یا FPS -&gt;Frames Per Second) را پردازش می کند. نویسنده های مقاله نسخه ای سریعتر از این نسخه را نیز به نام Fast YOLO ارائه کردند که تعداد لایه های کانولوشنی کمتر و سریعتر است. FPS آن 155 است. مقدار mAP در یولو نسبت به الگوریتم DPM دو برابر بهتر است و می تواند به صورت Real-Time پیش بینی را انجام دهد.شکل1) مقایسه دقت و سرعت یولو(منبع)جزئیات یولو1در واقع یولو1 یک مسئله ی رگرسیون و دارای معماری anchor-less( از جعبه های لنگر استفاده نمی کند) است. یولو، یک شبکه عصبی end to end است یعنی مثل شبکه های two stage نیست که قرار باشد قسمت های مختلف جدا از هم کار کنند و خروجی هر قسمت به ورودی بخش دیگری فرستاده شود. در این شبکه، تصویر فقط به یک شبکه عصبی داده  می شود، ویژگی ها از کل تصویر استخراج می شوند و در نهایت خروجی شبکه مختصات bounding box و کلاس آن اشیا خواهد بود.شکل زیر شبکه ی عصبی یولو1 را نشان می دهد.شکل2) معماری شبکه ی یولو1(منبع)همان طور که مشخص است این شبکه از 24 لایه ی کانولوشنی، ماکس پولینگ، 2 لایه ی تمام متصل و  Dropout استفاده کرده است. ساختار این شبکه از GoogLeNet الهام گرفته است و برای کاهش عمق نقشه های ویژگی از کانولوشن 1×1 استفاده می کند.(این کانولوشن 1×1 در شبکه گوگل نت برای کاهش پارامترها استفاده شد.) یولو، تصویر ورودی با ابعاد 448×448 را دریافت می کند و آن را به یک گرید S×S تبدیل می کند که در یولو1 مقدار S برابر 7 است. در واقع خروجی این شبکه یک تنسور با ابعاد 30×7×7 است. این تنسور را شکل3 نشان می دهد. قسمت مشکی این شکل، یک سلول را با عمق آن نشان می دهد.شکل3) ساختار کلی خروجی شبکه ی یولو1(منبع)کل یک تصویر در این شبکه به 49 سلول تقسیم می شود که مرکز هر شیئی که درون یک سلول باشد آن سلول مسئول پیش بینی آن شی می شود(یعنی توقع داریم آن سلول خاص آن شی را پیش بینی کند.). هر سلول می تواند B جعبه یا شی را پیش بینی کند که در یولو1، B مقدار 2 را دارد. پس در نتیجه در یولو1 حداکثر 98 شی یا جعبه می تواند پیش بینی شود(49×2 = 98).پیش بینی هر جعبه شامل یک سری اطلاعات:1- مشخصات جعبه که شامل مختصات مرکز جعبه و طول و عرض آن می باشد.2- امتیاز اطمینان یا confidence score برای هر جعبه3- به تعداد کلاس های مجموعه داده ی train، احتمال تعلق به آن کلاس ها را خواهیم داشت یعنی در یولو1 که مجموعه داده شامل 20 کلاس است، 20 خانه داریم که در هر یک از آن ها میزان احتمال  تعلق آن شیئی که پیش بینی شده به آن دسته قرار می گیرد.با این وجود 4 عدد برای مختصات یک جعبه وجود دارد که علاوه بر آن برای هر کدام یک امتیاز اطمینان داریم پس برای 2 جعبه 10 عدد و 20 کلاس هم وجود دارد پس در مجموع یک سلول 30 خانه دارد که به شکل4 است.شکل4  به طور خلاصه هر سلول در این گرید اطلاعات زیر را می تواند پیش بینی کند.شکل5) نمایی از تنسور خروجی یولو1(منبع)یک confidence score میزان احتمالی که درون این bounding box شیئی وجود دارد را مشخص می کند. این امتیاز می تواند توسط رابطه6 محاسبه شود.شکل6در این رابطه P(objetc) دو مقدار 0 و 1 را می تواند داشته باشد که اگر شیئی موجود باشد مقدار 1 و اگر نباشد مقدار 0 است. در واقع در صورت وجود شی مقدار IoU مقدار امتیاز اطمینان خواهد بود.(این رابطه در زمان train شبکه استفاده می شود.)مقادیر بعدی در شکل4،  x, y, width, height هستند. مقادیر x, y نشان دهنده ی مرکز جعبه در سلولی خاص است که می توانند عددی بین 0و 1 باشند. مقادیر width و height نسبت به کل تصویر پیش بینی می شوند و می توانند مقادیری بزرگتر از 1 داشته باشند.تابع Loss functionبرای تعریف تابع loss باید خطای تک تک مواردی که پیش بینی می شود را با هم جمع کنیم.شکل7) loss function YOLO(منبع)توضیح جزئیات این رابطه:1- اگر جعبه ای با یک شی match باشد قسمت اول میزان خطای مرکز جعبه ی محاطی را به  روش Sum-Squared Error (SSE) محاسبه می کند.2- اگر جعبه ای با یک شی match باشد قسمت دوم میزان خطای طول و عرض جعبه را نسبت به مقدار واقعی آن محاسبه می کند.3- توضیح بیشتر در شکل 8 آمده است.شکل8) منبعمنابع https://pyimagesearch.com/2022/04/11/understanding-a-real-time-object-detection-network-you-only-look-once-yolov1/https://pyimagesearch.com/2022/04/04/introduction-to-the-yolo-family/https://www.harrysprojects.com/articles/yolov1.html</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Thu, 14 Jul 2022 10:47:18 +0430</pubDate></item><item><title>خطای Access denied with the following error</title><link>https://virgool.ir/@S.Kh/خطای-access-denied-with-the-following-error-zvmsvqxb59gk</link><description>به نام خداگاهی اوقات برای دانلود فایل از درایو در پایتون خطای زیر را دریافت می کنیم.برای حل آن می توان به شکل زیر آن را بازنویسی کرد.(توضیح دانلود فایل از درایو در پایتون)file_id = &#39;1-z8e2CnvrX8ZSu2kk0QT4giFWurOKMr0&#39;&#xA;gdown.download(    f&#34;https://drive.google.com/uc?export=download&amp;confirm=pbef&amp;id={file_id}&#34;,    &#39;model.h5&#39;&#xA;)توضیحات بیشتر و منبع:Permission denied although I have set to &amp;amp;quot;anyone with link&amp;amp;quot; · Issue #146 · wkentaro/gdown (github.com)</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Fri, 01 Jul 2022 16:11:48 +0430</pubDate></item><item><title>متغیر key در تابع های min و max</title><link>https://virgool.ir/@S.Kh/متغیر-key-در-تابع-های-min-و-max-n0uf6jsr4nnc</link><description>به نام خداتابع min و max توابعی از پیش ساخته شده یا Built-in function هستند. کد تابع min به شکل زیر است:1- برای اعداد:min (num1, num2, *args[, key])مثال2- برای iterationها:min(iterable, *[, key, default])مثال:یکی از موارد اختیاری در تابع min و max، آرگومان key هست که می تواند یک تابع باشد. اما دلیل استفاده از آن چیست؟ بگذارید آن را با مثالی توضیح دهیم. فرض کنید کد زیر نوشته شده است حال خروجی چیست؟در این جا key تابع بدون نامی است که ورودی x را دریافت کرده و طول آن را بر می گرداند. کاری که در این جا تابع min انجام می دهد این است که در ابتدا تک تک خانه های list_test به جای x در تابع بدون نام می نشینند و طولشان بدست می آید. سپس چون تابع min است نگاه می کند ببیند از این موارد کدام یک مقدار کمتری دارد سپس مقدار متناظر آن را از list_test بر می گرداند.روند برنامه:1- محاسبه ی تابع مقابل key برای تک تک عناصر iteration که در min یا max آمده است که در این جا عناصر list_test بررسی می شود. برای مثال بالا: [4, 5, 3, 6]2- اگر تابع min باشد، کوچکترین مقدار را بر می گرداند که در این مثال عدد 3 است.3- حال بررسی می کند که کدام خانه ی list_test مقدار 3 شده است که آن خانه ی &#39;red&#39; هست در نتیجه مقدار red به عنوان خروجی بر می گردد.پس در کل خروجی به شکل زیر است.مثال بیشتر و منبع:https://medium.com/analytics-vidhya/how-to-use-key-function-in-max-and-min-in-python-1fdbd661c59c</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Fri, 01 Jul 2022 11:25:22 +0430</pubDate></item><item><title>ذخیره ی کتابخانه های استفاده شده در یک پروژه پایتون</title><link>https://virgool.ir/@S.Kh/ذخیره-ی-کتابخانه-های-استفاده-شده-در-یک-پروژه-پایتون-mcdvml0ex8ue</link><description>شکل1به نام خداممکن است پروژه ای به زبان پایتون داشته باشیم که نیاز باشد روی سیستم دیگری اجرا شود. برای اجرای درست آن نیاز است تا همه ی کتابخانه های موردنیاز با همان ورژن در سیستم مقصد هم نصب شوند. برای اینکه فایل txt حاوی کتابخانه های یک پروژه را دریافت کنیم می توانیم از کتابخانه ی pipreqs استفاده کنیم.ابتدا آن را با دستور  pip install pripreqs نصب می کنیم و سپس در محیط cmd وارد پوشه ی پروژه می شویم و دستور pipreqs را اجرا می کنیم. در نهایت فایل requirements.txt در فایل پروژه ایجاد می شود که شامل نام کتابخانه ها و ورژن آن هاست مانند شکل1.منبع:https://stackoverflow.com/questions/31684375/automatically-create-requirements-txt </description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Wed, 29 Jun 2022 01:11:42 +0430</pubDate></item><item><title>دیتاست تشخیص پلاک ماشین ایرانی</title><link>https://virgool.ir/@S.Kh/دیتاست-تشخیص-پلاک-ماشین-ایرانی-hlsgpizecq2t</link><description>https://www.kaggle.com/datasets/skhalili/iraniancarnumberplate/codeبه نام خدااگر به دیتاستی جهت تشخیص پلاک ماشین احتیاج دارید می توانید به لینک زیر مراجعه کرده و از این دیتاستی که تولید کرده ام استفاده نمایید:https://www.kaggle.com/datasets/skhalili/iraniancarnumberplateاین دیتاست از طریق جمع آوری 442 تصویر ماشین از سایت شیپور ساخته شده است. با استفاده از نرم افزار LabelImg اطلاعات مختصات هر جعبه در فایل xml متناظر آن تصویر موجود است و در هر تصویر فقط یک پلاک ماشین وجود دارد. برای استفاده از این دیتاست لینک زیر را ببینید.https://www.kaggle.com/code/skhalili/guide-for-reading-number-plate-dataset</description><category>Sanaz Khalili</category><author>Sanaz Khalili</author><pubDate>Sat, 18 Jun 2022 12:53:54 +0430</pubDate></item></channel></rss>