مجموعهای از سامانههایی که طراحی و پیادهسازی کردهام — از بینایی ماشین در مقیاس کشوری تا کشف تخلف، امنیت و سیستمهای تخفیف. برای دیدن جزئیات هر پروژه اسکرول کنید.
چهار سامانهای که از ایده تا استقرار روی آنها کار کردهام.
موتور بینایی ماشینی که اشیای درون تصاویر را تشخیص، برچسبگذاری و ایندکس میکند تا بتوان در میان دیتاستهای صدها میلیونی، شیء مورد نظر را در کسری از ثانیه پیدا کرد — با دو حالت استقرار لوکال و توزیعشده روی شبکه.
از میلیونها فریم خام تا یافتن یک شیء، در کسری از ثانیه
چالش اصلی، یک کلمه بود: مقیاس. چطور میتوان میلیونها فریم را پردازش کرد و بعد، یک شیء مشخص را میان آنها برقآسا یافت؟ پاسخ، تفکیک دو مسئله بود — پردازش سنگینِ تصویر، و جستوجوی سریع روی نتایج.
در لایهٔ پردازش، تصاویر با مدلهای تشخیص شیء تحلیل و اشیای کشفشده برداری و ایندکس میشوند؛ سپس یک رابط کاربری ساده اجازه میدهد کاربر بهدنبال آنچه میخواهد بگردد؛ سامانه نزدیکترین تصاویر را بهترتیب بیشترین شباهت بازمیگرداند و حتی محل دقیق شیء در تصویر را روی همان عکس مشخص میکند.
همین معماری، سامانه را تا چند ده میلیون تصویر مقیاسپذیر کرد: حالت لوکال با بیش از یک میلیون تصویر در ساعت روی یک GPU انویدیا ۲۰۸۰، و حالت توزیعشده روی شبکهٔ ۱ گیگابیتی با سه سرور V100 و توان بیش از ۱۰ میلیون تصویر در شبانهروز — سامانهای که در سطح کشوری بهکار گرفته شد.
هر فریم اسکن میشود، اشیا تشخیص داده و با کادر و برچسب علامتگذاری میشوند
کافی است نام شیء را بنویسید؛ سامانه از روی ایندکس، فریمهای مرتبط را برمیگرداند
از یک ایستگاه کاری منفرد تا خوشهٔ سرورها روی شبکه
پردازش روی یک ایستگاه کاری با کارت گرافیک
پردازش توزیعشده روی خوشهٔ سرورها
ظرفیت هر حالت در بازهٔ زمانی متناظر خود
از ورود تصویر تا جستوجوی شیء
آنچه قلب این سامانه را شکل میدهد
فناوریهای بهکاررفته در پیادهسازی این سامانه
موتوری برای کشف ناهنجاری و تخلف که هر مسئله را با بیش از ۵۰ الگوریتم و در دو حالت Supervised و Unsupervised تحلیل میکند — و نکتهٔ کلیدی: نهفقط داده، بلکه خودِ ساختِ رابط کاربری را هم موتور هوش مصنوعی تعیین میکند؛ فرانتاند از پیش چیزی از صفحه نمیداند و تنها آنچه موتور دستور میدهد را میسازد.
از دادهٔ خام تا کشف رکوردهای مشکلدار — و داشبوردی که خودش ساخته میشود
هر دیتاست تعریف متفاوتی از «ناهنجاری» دارد. بهجای تحمیل یک روش ثابت، سامانه بیش از ۵۰ الگوریتم را در اختیار میگیرد و بسته به ماهیت مسئله، مناسبترینها را برای نگاه از زوایای مختلف به داده انتخاب و ترکیب میکند.
متمایزکنندهٔ اصلی، رابط کاربریِ کاملاً موتورمحور است: فرانتاند از پیش هیچ تصوری از اجزای صفحه ندارد. این موتور هوش مصنوعی است که — علاوه بر داده — تصمیم میگیرد چه اجزایی روی صفحه ساخته و چگونه چیده شوند و این دستورها را از طریق پروتکلهای استانداردی که توسعه دادیم به فرانتاند میفرستد؛ فرانتاند تنها همان چیزی را که موتور میگوید میسازد و نمایش میدهد. همین، کار را بهشدت داینامیک میکند و جابهجایی میان مسائل کاملاً متفاوت را بدون هیچ تغییری در فرانتاند ممکن میسازد. سامانه مسئله را در دو حالت Supervised و Unsupervised حل میکند و انتخاب با خود کاربر است.
همین انعطاف، سامانه را به ابزاری برای استقرارهای حساس کشوری بدل کرد: از کشف الگوهای اپیدمی کرونا در سطح کشور تا تحلیل دادههای بیمهٔ بازنشستگان نیروهای مسلح و بیمهٔ سلامت ایرانیان.
جریان داده وارد میشود، الگوریتمها اعمال میشوند و رکوردهای پرت علامتگذاری میشوند
بیش از ۵۰ روش که بسته به مسئله، انتخاب و ترکیب میشوند
سامانه ساختار داده را میخواند و رابط متناسب با آن را خودش میسازد
از ورود دیتاست تا نمایش روی داشبورد
مسائلی که با این سامانه حل شدند
کشف الگوهای ناهنجار و کانونهای شیوع کرونا در سطح کشور برای پایش و تصمیمگیری بهموقع.
سطح کشوریتحلیل دادههای بیمهای بازنشستگان نیروهای مسلح برای یافتن تراکنشها و موارد ناهنجار و مشکوک به تخلف.
سازمانیشناسایی ناهنجاری و تخلف در دادههای بیمهٔ سلامت ایرانیان برای صیانت از منابع.
کشوریآنچه قلب این سامانه را شکل میدهد
فناوریهای بهکاررفته در پیادهسازی این سامانه
پلتفرم فینتکی که تخفیف را لحظهٔ کشیدن کارت بانکی روی پوز و کاملاً آنلاین محاسبه و از مبلغ خرید کم میکرد — بدون کارت عضویت، بدون اپلیکیشن جداگانه و مستقل از PSP.
تخفیف نامرئی، روی همان کارتی که همیشه در جیب کاربر است
ایدهٔ اصلی ساده اما سخت بود: تخفیف باید بدون عنوان کردن اینکه شخص عضو باشگاه تخفیف است اعمال شود. کاربر تا ۱۰ کارت بانکی عضو شبکهٔ شتاب را یکبار معرفی میکرد و دیگر هیچ صدور کارت عضویتی لازم نبود؛ ثبتنام هم بهصورت انفرادی با لینک یا دستهای از سوی سازمان انجام میشد.
برای تحقق این تجربه، باید با روال اختصاصی هر PSP یکپارچه میشدیم. سامانه با سپ، بهپرداخت ملت، پککو، پارسیان و فنآوا کارت — که رویهم بیش از ۹۰٪ بازار تراکنش را در اختیار داشتند — طرف قرارداد بود و کارتهای کاربر را مطابق رویهٔ هر PSP ثبت میکرد.
هنگام خرید در شبکهٔ بیش از ۶۰۰۰ پذیرنده، تراکنش بیدرنگ دریافت، تخفیف بهصورت آنلاین محاسبه و از مبلغ کسر میشد؛ مبلغ اصلی، تخفیف و مبلغ پرداختی روی فیش پوز چاپ و همزمان پیامک خرید برای کاربر ارسال میشد. تخفیفها داینامیک بودند و در مناسبتها فراتر از نرخ پایهٔ فروشگاه میرفتند.
از کشیدن کارت تا کسر تخفیف و چاپ فیش — همه بهصورت آنلاین
آنچه این سیستم را متمایز میکرد
عضویت کاربران هم بهصورت دستهای از طرف سازمان و هم انفرادی از طریق لینک ثبتنام.
هر کاربر میتوانست تا ۱۰ کارت بانکی عضو شبکهٔ شتاب را به سیستم معرفی کند.
تخفیف ثابت یا متغیر؛ در مناسبتهای مختلف بیش از تخفیف پایهٔ فروشگاه اعمال میشد.
پیامک فوری شامل محل خرید، مبلغ خرید و میزان تخفیف، همزمان با تراکنش.
کاربر در یک UI یکپارچه ریز همهٔ خریدهایش را مستقل از PSP مشاهده میکرد.
نیازی به صدور یا ارائهٔ کارت عضویت نبود؛ کارت بانکی خودِ کاربر کافی بود.
پوشش بیش از ۹۰٪ بازار تراکنش
فناوریهای بهکاررفته در پیادهسازی این سیستم
پاسخی کشوری به استاکسنت: موتور ضدبدافزار بومی برای ویندوز ۷ که در مرکز آپای دانشگاه شیراز ساخته شد — بیش از ۱۶ زیرماژول مستقل که از طریق Named Pipe با یکدیگر گفتوگو میکردند.
از یک تهدید سایبری کشوری تا یک محصول امنیتی بومی
حملهٔ استاکسنت نشان داد اتکای زیرساختهای حیاتی کشور به آنتیویروسهای خارجی یک ریسک راهبردی است. در پاسخ، توسعهٔ یک موتور ضدبدافزار بومی در سطح دانشگاهی به شش دانشگاه برتر کشور سپرده شد.
مرکز آپای دانشگاه شیراز مسئول نسخهٔ ویندوز ۷ شد. هستهٔ محصول با C/C++ نوشته شد و معماری آن بر پایهٔ بیش از ۱۶ زیرماژول مستقل بنا شد؛ هر ماژول یک مسئولیت داشت — از محافظت از هستهٔ برنامه و انطباق با الگوهای ویروس تا زمانبندی اسکن خودکار و یافتن فایلها.
اجزای مستقل از طریق Named Pipe با هم در ارتباط بودند؛ تصمیمی معماریمحور که جداسازی، پایداری و محافظت متقابل ماژولها را تضمین میکرد — اگر بخشی از کار میافتاد، بقیه سالم میماندند.
انطباق فایلها بر الگوهای ویروس و قرنطینهٔ موارد مشکوک
اجزای مستقل، متصل از طریق Named Pipe
\\.\pipe\ Named Pipeآنچه این محصول امنیتی را شکل میداد
ماژولی برای دفاع از خودِ آنتیویروس در برابر تلاش بدافزارها برای متوقفکردن یا دستکاری فرایندهای آن.
تطبیق محتوای فایلها با پایگاه امضاهای بدافزار برای شناسایی موارد آلوده.
اجرای خودکار و دورهای فرایند بررسی، بدون نیاز به دخالت دستی کاربر.
ماژول یافتن و پیمایش فایلها برای تغذیهٔ موتور انطباق با اهداف بررسی.
اتصال اجزای مستقل از طریق Named Pipe برای ارتباط بینفرایندی پایدار و امن.
ماژول UI مستقل برای کنترل، گزارش وضعیت اسکن و مدیریت تهدیدها؛ بهدلیل مشکل موجود در Qt با MFC پیادهسازی شد.
پشتهٔ فنی استفادهشده در پروژه
پشتهٔ فنی بهکاررفته در پیادهسازی این پروژه
از دل توسعهٔ محصول تا گزارش یک باگ به جامعهٔ توسعهدهندگان
در جریان توسعهٔ این پروژه، شخصاً یک باگ در فریمورک Qt شناسایی کردم و آن را در StackOverflow مطرح و مستند کردم. همین مشکل سبب شد ماژول رابط کاربری در نهایت با MFC پیادهسازی شود.
مشاهدهٔ پروفایل StackOverflow ↗برنامهنویس ارشد Back-End با بیش از ۱۵ سال تجربه در طراحی و توسعهٔ سیستمهای مقیاسپذیر، event-driven و مبتنی بر میکروسرویس. متخصص در Python (FastAPI + AsyncIO) و Java، با تمرکز عمیق روی راهکارهای هوش مصنوعی در حوزهٔ سلامت و تشخیص تقلب.
سابقهٔ موفق در راهاندازی مجدد یک شرکت دادهمحور، پیادهسازی Ontology پزشکی، مدلهای تشخیص تومور مغزی (BRATS) و یکپارچهسازی با PSPهای اصلی کشور.
برای همکاری یا اطلاعات بیشتر دربارهٔ پروژهها در دسترس هستم.