تشخیص خودرو در تصویر

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

ماشین‌های پیدا شده، با مستطیل سبز رنگ مشخص شده‌اند

۱. ۱. مقدمه

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

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

1)سیستم‌های کنترل ترافیک (برای مثال بررسی حجم ترافیک یا شناسایی متخلفین ) [3][16]
2)برنامه‌ریزی شهری[3] [6][16]
3)برای شناسایی یک خودرو که عکس آن در خیابان گرفته شده‌است[2]
4)خودرو‌های بدون راننده
5)هر سیستمی که قصد هدایت خود را در خیابان و محیط‌های شامل خودرو دارد
6)مدیریت پارکینگ‌ها با اعلام ورود خودرو به مکان مورد نظر توسط ماشین(یا برای مثال برای باز کردن اتوماتیک در پارکینگ هنگامی‌که خودرو در مقابل آن قرار می‌گیرد)
7)در صورتی‌که ویژگی‌های خودرو مانند رنگ،مدل،شمارپلاک و غیره را بتوان توسط ماشین شناسایی کرد می‌توان برای تشخیص خودروی سرقت شده، متخلف
و یا هر موردی که در تعقیب است از آن استفاده کرد.[3]

پیدا کردن خودرو در تصویر کمی پیچیده است،زیرا برای مثال صورت انسان ساختار ساده‌تر و انعطاف‌پذیری کمتری دارد[1]، اما خودرو‌ها شکل‌ها و رنگ ها مدل‌های بسیار متفاوتی دارند چون طراحی‌شان با یکدیگر متفاوت است[4].همچنین بررسی خودرو‌ها در شرایط متفاوت آب و هوایی و در روز و شب باهم متفاوت است .انتظار می‌رود که خودرو‌ها مستقل از زاویه دید 1 شناسایی شوند.برای این کار باید ماشین را برای تشخیص خودرو از زوایای مختلف تعلیم داد[1].

شکل(1) تصویر شامل خودرهای مختلف و خروجی مورد نظر ما که خودروها با کادر قرمز مشخص شدند

۲. ۲. کارهای مرتبط

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

  • در روش اول اشیاء دودویی2 در یک چارچوب آماری طبقه‌بندی می‌شوند.سپس مجموعه‌ای از ویژگی‌ها بررسی و ارزیابی می‌شود.در نهایت به چارچوب لازم برای طبقه‌بندی عکس می‌رسیم. در این روش در واقع یک طبقه بندی سلسله مراتبی جامع برای خودرو انجام می‌شود که بتوان به وسیله آن تشخیص داد که قسمت مورد نظر جزئی از خودرو است یا خیر.[1]

    شکل(2) این تصویر پرمعنی ترین نقاط کلیدی خودرو را با رنگ قرمز و نقاط کلیدی زمینه را با رنگ سبز نمایش می دهد.
    • روش دوم استفاده از تکنیک‌های بینایی کامپیوتر 3 است . باید با آنالیز داده با استفاده از تصاویر زیاد به الگوریتم آموخته‌شود در کدام تصاویر خودرو وجود دارد یا وجود ندارد.سپس ویژگی‌های پرمعنا را از تصویر استخراج شود.سپس ماشین تشخیص می‌دهد که خودرو کجا قرار دارد یا اینکه اصلا وجود ندارد.[5] [8] [13]

      شکل(3) آنالیز تصویر

    • در روش سوم دنباله ای از تصاویر شامل خودرو موجود است،یعنی فرض می‌شود صحنه پویاست. ماشین برای یافتن خودرو سه راه دارد: 1)با متدهای مشخص زمینه را حذف کند2)ویژگی‌ها را با متدهایی استخراج کند3)با استفاده از متدهایی ،قالب‌های متفاوت را در تصویر از یکدیگر جدا کند و اجسام متحرک را در تصویر تشخیص دهد.[6][12]

      شکل(4) شناسایی اجسام متحرک
      شکل(5)شناسایی اجسام متحرک

    • روش چهارم استفاده از ویژگی‌های Haar-like است که ایده اصلی آن به این شرح است:با توجه به ویژگی‌های ساده‌‌ای که طبقه‌بندی کننده در چند مرحله ساماندهی کرده‌است یک شیء به صورت آبشاری تعریف می‌شود(یا به صورت پله پله).سیستم پیشنهادی بر اساس شبکه عصبی مصنوعی 4کار می‌کند. [7] [9][14][15]

      شکل(6) شناسایی چهره با استفاده از ویژگی مذکور در مراحل مختلف

  • روش پنجم طراحی طبقه‌بندی‌کننده5ای است که بتواند تشخیص دهد در تصویر ماشینی وجود دارد یا خیر.تفاوت این روش با روش دوم در این است که در این روش علاوه‌بر ویژگی‌های شکلی جسم، هم از ویژگی‌های رنگ و شکل و هم از ویژگی‌هایرنگ به تنهایی استفاده می‌شود. مجموع این اطلاعات برای طبقه‌بندی تصویر کافی است.[10]
    در مقاله‌‌ی [16] با استفاده ازیادگیری عمیق 6سعی بر پیدا‌کردن و شمردن خودرو‌ها از روی عکس‌های هوایی اتوماتیک7شده‌است.اما از الگوریتم‌های خاصی برای افزایش کارایی استفاده‌ شده‌است.روش‌های یادگیری عمیق برای استخراج ویژگی‌ها 8نیاز به حجم داده 9 بالا دارد اما در مقاله ذکر شده با متدهای خاص آموزشی ویژگی ها استخراج شده اند و در SVM وظیفه یادگیری را بر عهده دارد که به علت پیچیدگی از آن می‌گذریم.

    شکل(7) نمودار متد مورد نظر به کمک یادگیری عمیق

    در شکل 7، CNN در واقع شبکه عصبی پیچیده10 و SVM ماشین بردار پشتیبانی11 هستند.

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

۳. ۳. آزمایش‌ها

برای این قسمت از روشی ساده برای آزمایش استفاده شده‌است که مبتنی بر ویژگی‌های Cascade HAARمی‌باشد.ابزار لازم برای انجام این آزمایش‌ها یک کامپایلر برای پایتون 2.7 است که می‌توانید ازPycharm استفاده کنید. همچنین برای پیاده‌سازی این روش لازم است از کتابخانه openCV استفاده‌شود .
برای آشنایی با نحوه نصب و کار با ابزار مورد نیاز می‌توانید از این لینک استفاده کنید.
داده‌ها
برای انجام آزمایش در برخی از مقاله‌ها فقط از تصاویر شامل یک خودرو و فاقد خودرو استفاده‌شده است.علاوه بر این‌ها در این پژوهش تصاویر شامل چند خودرو هم مورد بررسی قرار گرفته‌اند اما تصاویری که شامل خودروهای بسیار زیاد هستند خروجی مناسبی ندارند و ارزیابی نشده اند..
این تصاویر از زوایای مختلف کد را مورد آزمایش قرار داده‌اند.
برای دریافت کد و چند نمونه داده ورودی از این لینک گیت هاب استفاده کنید.[26]

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

import cv2
car_cascade = cv2.CascadeClassifier('cars.xm');

هرویژگی با تفریق مجموع پیکسل‌های مستطیل سفید از مجموع پیکسل‌های مستطیل سیاه به شکل زیر به‌دست‌می‌آید.

شکل(8) ویژگی های HAAR

شکل(9) ویژگی های استخراج شده و ویژگی هایی که روی خودرو پیدا شده است

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

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

img = cv2.imread('NameOfInputFile' ,1)
gray =cv2.cvtColor( img , cv2.COLOR_BGR2GRAY)
cars = car_cascade.detectMutiScale(gray , 1.2 , 1)

بعضی مواقع لازم است برای به‌دست آوردن خروجی بهتر پارامتر مقیاس تابع detectMultiScale غییر کند (بین 1.1 ، 1.2 و 1.3).
پس از شناسایی با یک حلقه ساده دور خودرو‌های شناسایی شده یک مستطیل کشیده می‌شود و تصویر خروجی نهایی نشان داده می‌شود.

نمونه خروجی‌های صحیح

شکل 10: نمونه خروجی مناسب

شکل 11: خروجی مناسب

اما بسیاری از خروجی ها با توجه به پارامترهای مختلف قابل قبول نیستند
شکل 12: نمونه خروجی نامناسب و غیردقیق

شکل 13: نمونه خروجی غلط

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

فرمول به دست آوردن درصد پاسخ های صحیح ، صورت کسر نتایج صحیح و مخرج مجموع نتایج صحیح و غلط

برای داده‌های ورودی از 34 تصویراستفاده شده‌است که 13 عدد از این تصاویر شامل 1 خودرو ، 11 عدد شامل بیش از 1خودرو و 10 عدد بدون خودرو هستند. نتایج آزمایش در جدول (1) قابل ملاحظه است.

جدول(1) نتایج درست

بهبود نتایج
برای بهبود نتایج می توان از فیلتر های خاص استفاده کرد و دقت را بالا برد ، اما راه دیگر استفاده از یک طبقه بندی کننده با روشی متفاوت است که در ادامه به این موضوع پرداخته شده است:
بررسی ویژگی‌های الگوهای دودویی محلی 12 روش دیگری برای به‌دست‌آوردن خروجی است.این ویژگی‌ها بسیار شبیه به ویژگی‌های HAARاست و همانند آن از خانواده‌ی ویژگی‌های آبشاری می‌باشد.
تصویر به تعداد مشخصی پیکسل تقسیم می‌شود و برای هر پیکسل 8 پیکسل که اطراف آن را فراگرفته مانند شکل در نظر گرفته‌می‌شوند به این صورت که اگر پیکسل همسایه از پیکسل مرکزی بزرگتر یا مساوی آن بود عدد آن یک می‌شود در غیر این صورت صفر می‌شود که در این صورت یک عدد دودویی به
دست‌می‌آید.[25]
شکل 14: ویژگی LBP

شکل 15 : تصویر با ویژگی الگوی دودویی محلی

تعلیم دادن این سیستم مانند سیستم قبلی با تصاویر مثبت و منفی است با تفاوت اینکه وضوح این تصاویر اعداد مشخصی هستند یعنی 64 در 64 یا 128 در128 یا 256 در 256. این طبقه‌بندی کننده در برخی موارد خروجی را بهبود می‌بخشد و موثر است.
شکل 16: نمونه نحوه تعلیم _ با تصاویر مثبت و منفی

نمونه خروجی با استفاده از روش بهبود یافته :

شکل 17 : خروجی بهبود یافته

شکل 18 : نمونه خروجی بهبود یافته

جدول(2) نتایج درست

همانطور که ملاحظه می‌شود مقایسه جدول 1 و 2 نشان می‌دهد که در تصویر‌هایی که شامل یک یا چند خودرو بودند نتایج بهبود نیافته اما تشخیص درست
در تصاویری که شامل خودرو نیستند به 100% رسیده‌است که بهبود چشمگیری می‌باشد.پس بهبود ایجاد شده شامل تصاویر بدون خودرو می باشد.
در کل در می بینیم که در برخی موارد Haar دقت بیشتری دارد اما برای تشخیص عدم وجود خودرو استفاده از LBP بهتر است. اما از طرفی چون LBP با اعداد صحیح کار می کند سرعت بیشتری دارد پس بهتر است وقتی هدف افزایش سرعت است از آن استفاده شود. از طرفی هم فایل آموزشی LBP سبکتر است که می تواند مزیتی برای آن به حساب بیاید.
نمودار1 : صحت روش های مختلف

در پژوهش [25] نمودار 1 به چشم می خورد که ادعای فوق را تایید می کند. همانطور که مشاهده می شود در قسمتی از نمودار نسبت پاسخ های صحیح LBP بالاتر است اما در کل روش Haar دقیق تر و بهتر است .اما مشاهده می شود که Cascade LBP GPU خیلی دقیق تر از انواع HAAR است که این موضوع هم می تواند به عنوان کارهای آینده مورد بررسی قرار گیرد. اما یک توضیح کلی برای آن این است که سرعت پیدا کردن شیء در آن بسیار بالا می باشد.برای اطلاعات بیشتر به [27] مراجعه نمایید.

۴. ۴. کارهای آینده

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

شکل 19

همچنین می‌توان از روش‌های دقیق تر دیگر هم مانند الگوریتم‌های ژنتیک استفاده کرد.[24]
دقت این روش در حدی است که مقالات زیادی در مورد خودروهای بدون راننده‌ای که توسط این الگوریتم خود را هدایت ‌می‌کنند تالیف شده‌است.
با توجه به مقالات بررسی شده دیده‌می‌شود که دقیق‌ترین نتایج با استفاده از الگوریتم‌هایی به‌دست آمده است که پژوهشگران به نحو مناسبی آن را تعلیم داده‌اند و به شکل بهینه استفاده نموده‌اند.[16]

۵. ۵. مراجع

[1] B.Leung, Component-based Car Detection in Street Scenes Images ,Department of Electrical Engineering and Computer Science , 2004
[2] S.Yamaguchi, A Car Detection System Using the neocognitron , IEEE International joint conference on, Singapore , 2002
[3] T.Tang ,S.Zhou, Z.Deng, H.Zou, L.Lei ,Vehicle Detection in Aerial Images Based on Region Convolutional Neural Networks and Hard Negative Example Mining , Sensor ,2017
[4] S.Cheung,A.Chu , Make And Model Recognition of Cars,Department of Computer Engineering University of California ,San Diego , 2008
[5]https://chatbotslife.com/vehicle-detection-and-tracking-using-computer-vision-baea4df65906
[6]R.Hadi ,G.Sulong ,E.George , Vehicle Detection And Tracking Techniques:A Concise Review , Malaysia,Iraq,2014
[7]M.Oliveria,V.Santos,Automatic Detection of Cars in Real Roads using Haar-like Features, Department of Mechanical Engineering, University of Aveiro ,Portugal ,2008
[8] https://github.com/JunshengFu/vehicle-detection
[9]https://github.com/andrewssobral/vehicle_detection_haarcascades
[10]https://github.com/NikolasEnt/Vehicle-Detection-and-Tracking
[11] م.سعادتمند، یک روش جدید برای تشخیص خودرو در تصویر، کنفرانس توسعه کاربردهای صنعتی اطلاعات ارتباطات و محاسبات ، مشهد ، 1390
[12]https://github.com/andrewssobral/simple_vehicle_counting
[13]https://github.com/ckirksey3/vehicle-detection-with-svm
[14]A.Naba, B.Pratma,A.Nadhir ,Haar-like feature based-time neuro car detection system, Indonesia ,2016
[15] Y.Wang,Monocular Vehicle Detection and Tracking, Department of Electrical and Computer Engineering University of California, San Diego
[16]N.Ammour,H.Alhichri,Y.Bazi,B.Benjdira,N.Alajan,M.Zuair,Deep Learning Approach for Car Detection in UAV Imagery,Computer Engineering Department, College of Computer and Information Sciences, King Saud University,2017
[17]https://en.wikipedia.org/wiki/Computer_vision
[18]https://en.wikipedia.org/wiki/Artificial_neural_network
[19](https://en.wikipedia.org/wiki/Deep_learning
[20]https://pixabay.com/en/videos/cars-motorway-speed-motion-traffic-1900/
[21]https://pixabay.com/en/videos/roads-motorways-highway-1952/
[22]https://pixabay.com/en/videos/freeway-transportation-highway-road-6329/
[23]https://pixabay.com/en/videos/traffic-cars-via-road-2532/
[24]http://www.mdpi.com/2078-2489/6/3/339/pdf
[25]http://www.mi.fu-berlin.de/inf/groups/ag-ki/publications/Online-vehicle-detection1/03411.pdf
[26]https://github.com/duyetdev/opencv-car-detection/blob/master/Vehicle%20detection.ipynb
[27]http://on-demand.gputechconf.com/gtc/2013/presentations/S3297-Efficient-Object-Detection-GPU-MB-LBP-Forest.pdf
پیوندهای مفید


  1. view

  2. binary

  3. computer vision

  4. ANN

  5. classifier

  6. Deep Learning

  7. UAV Imagery

  8. features

  9. data

  10. convolutional neural network

  11. support vector machine

  12. LBP

سید ابوالفضل مهدی زاده

با عرض سلام و خسته نباشید
در متن این نوع گزارش‌ها معمولا از لفظ ما استفاده نمی‌کنند. در متن مقالات کنفرانسی که چندین نفر بر روی یک مسئله کار کرده‌اند این کار مرسوم است. بهتر است در این گزارش از لفظ ما استفاده نشود.
شرح مسئله در مقدمه مناسب است. کاربردهای مسئله را به خوبی شرح داده‌اید. بهتر است مشکلات و چالش‌های آن را هم بیشتر ذکر کنید.
برخی از اصطلاحات استفاده شده در این گزارش معادل دارند. برای مثال بینایی ماشین معادل Computer Vision و یادگیری عمیق معادل Deep Learning است. بهتر است معادل فارسی این لغات را ذکر کرده و اصل آن‌ها را در پاورقی ذکر کنید. اصلا از پاورقی استفاده نکردید.
در قسمت کارهای مرتبط ترجمه صورت گرفته روان نیست. بهتر است فقط مطالبی که متوجه شدید را ذکر کنید. آموزش مدل‌های عمیق (شبکه‌های عصبی عمیق) نیازمند حجم بالایی از داده است. در مقاله ذکر شده از شبکه‌ای آموزش دیده برای استخراج ویژگی استفاده شده و ماشین بردار پشتیبان (SVM) وظیفه یادگیری را بر عهده دارد.
در ادامه گزارش حتما مجموعه داده‌ای که قصد استفاده از آن را دارید معرفی کنید. چند نمونه از این داده را آورده و در مورد آن‌ها توضیح دهید.
امیدوارم موارد ذکر شده را رعایت کرده و کیفیت کار و گزارش خود را در مراحل بعد بالا ببرید.
با احترام

رد شده

با توجه به زمان بهتر بود دقیقتر عمل میکردید و نتایج و ازمایشات را کاملتر شرح میدادید.

سید ابوالفضل مهدی زاده

با سلام و خسته نباشید.

شما بخشی از کد یک ابزار آماده را دریافت و اجرا کردید. ایکاش ویدئویی از اجرای این کد در سیستم خودتان در حد چند ثانیه تهیه کرده و در جایی آپلود می‌کردید. به هر حال بهتر بود لینک دسترسی به کد اصلی را هم در متن ذکر می‌کردید (https://github.com/MicrocontrollersAndMore/OpenCV_3_Car_Counting_Cpp)
قطعا کدهای ساده‌تری هم وجود دارند. توقع ما از شما تسلط به کد و توضیح جزئیات و روش کار است. متاسفانه در گزارش شما این موضوع دیده نمی‌شود.

رد شده

امروزه الگوریتم open cv فارغ از قابل قبول بودن برای بسیاری از پروژه ها، به دلیل ماهیت الگوریتمی بودن آن، در بیشتر پروژه های کاربردی امروزی قابل پیاده سازی نیست، زیرا الگوریتم open cv فقط روی دستگاه های سنگین قابل پیاده سازی هست، به گونه ایی که بر روی دستگاه های embedded system غیرقابل پیاده سازی است، ولی در مقابل الگوریتم های deep learning که امروزه بسیار پرکاربرد است، به دلیل اینکه پس از train شدن یک مدل، به راحتی بر روی embedded system ها قابل اجرا شدن هستند و نسبت به الگوریتم open cv سریعتر پاسخ میدهند
در این روش open cv به دلیل اینکه از یک فیلم برای تشخیص یک خودرو استفاده میشود ( به جای تصویر) ممکن است گزینه بهینه ای نباشد برای مثال اگر بنا بر تکان خوردن یک شی در یک فیلم،خودرو بودن آن تشخیص داده شود، ممکن است یک شی دیگری مثل آدم متحرک را به اشتباه، خودرو در نظر بگیرد. بنابراین انجام این چالش تشخیص خودرو امروزه به وسیله الگوریتم deep learning ( همان طور که در روش پنجم توضیح داده شد) بهیینه ترین راه است.

سلام، لینکی که برای گیت پروژه گذاشته بودید خالی بود. البته توضیحاتتون برای پیاده‌سازی به نظرم کامل بود.
خسته نباشید

تایید شده

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

تایید شده

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

رد شده

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

سید ابوالفضل مهدی زاده