Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

install and test #1

Closed
parsibox opened this issue Apr 23, 2020 · 18 comments
Closed

install and test #1

parsibox opened this issue Apr 23, 2020 · 18 comments

Comments

@parsibox
Copy link

hi
how can i install and test it?

@parsibox
Copy link
Author

when i run it say :

python3.6 DigitWrittenDetection_MLP.py 
Reading Train 60000.cdb ...
Traceback (most recent call last):
  File "DigitWrittenDetection_MLP.py", line 10, in <module>
    train_images, train_labels = read_hoda_cdb('./DigitDB/Train 60000.cdb')
  File "/home/mohsen/Persian-Digit-Recognition/HodaDatasetReader.py", line 59, in read_hoda_cdb
    yy = struct.unpack_from('H', data, offset)[0]
struct.error: unpack_from requires a buffer of at least 2 bytes

@VahidSaadat
Copy link
Owner

hi
how can i install and test it?

سلام
پکیج‌هایی که لازم هست نصب باشه این‌هاست:
opencv-python, numpy, scikit-learn

@parsibox
Copy link
Author

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

@parsibox
Copy link
Author

hi
how can i install and test it?

سلام
پکیج‌هایی که لازم هست نصب باشه این‌هاست:
opencv-python, numpy, scikit-learn

این پکیج ها تمامشون نصب هستند اما ارور میده

[mohsen@localhost Persian-Digit-Recognition]$ pip3 install scikit-learn
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: scikit-learn in /usr/lib64/python3.6/site-packages (0.22.2.post1)
Requirement already satisfied: scipy>=0.17.0 in /usr/lib64/python3.6/site-packages (from scikit-learn) (1.3.0)
Requirement already satisfied: joblib>=0.11 in /usr/lib/python3.6/site-packages (from scikit-learn) (0.14.1)
Requirement already satisfied: numpy>=1.11.0 in /home/mohsen/.local/lib/python3.6/site-packages (from scikit-learn) (1.18.3)
[mohsen@localhost Persian-Digit-Recognition]$ pip3 install numpy
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: numpy in /home/mohsen/.local/lib/python3.6/site-packages (1.18.3)
[mohsen@localhost Persian-Digit-Recognition]$ pip3 install opencv-python
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: opencv-python in /home/mohsen/.local/lib/python3.6/site-packages (4.2.0.34)
Requirement already satisfied: numpy>=1.11.3 in /home/mohsen/.local/lib/python3.6/site-packages (from opencv-python) (1.18.3)

@VahidSaadat
Copy link
Owner

فکرمی‌کنم شما دارین درست اجرا می‌کنین
فایل اصلی که همون DigitWrittenDetection_MLP.py هست باید با پایتون اجرا بشه

پوشه DigitDB و محتویاتش به درستی در کنار برنامه اصلی قرار داره؟

@parsibox
Copy link
Author

image
بله محتویات دقیقا سایزش مطابق سایز مخزن شما هست اما فایل Train 60000.cdb در مخزن شما هم خالی است

@VahidSaadat
Copy link
Owner

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

@parsibox
Copy link
Author

بعد ببخشید این کد شما را چجوری میشه بهش عکس مورد نظرمون را بدیم و اعداد فارسی را توش تشخیص بده؟
image
من قصدم تشخیص اعداد داخل این عکس هست
لطفا راهنمایی کنید
شاید اصلا مسیر را دارم اشتباه میرم

@VahidSaadat
Copy link
Owner

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

@parsibox
Copy link
Author

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

@parsibox
Copy link
Author

الان فایلتون را آپدیت کردم و درست اجرا شد
شما اصلا فرض کن من یک فایل عکس دارم که توش اعداد دست نویس هست
یه کدی به من میتونید بدید که عکسه را بهش بدم و اعداد را داخل عکس را بهم بده؟

@parsibox
Copy link
Author

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

@parsibox
Copy link
Author

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

@VahidSaadat
Copy link
Owner

VahidSaadat commented Apr 23, 2020

برای همین پروژه هم لازم هست تصویرتون رو با پردازش تصویر به حالت استاندارد دربیارید. همون کاری که در فایل HodaDatasetReader.py انجام شده رو با کمی تغییر مرتبط با مسئله‌اتون انجام بدین

بعد کافیه از چنین دستوری در انتها فایل اصلی برای تشخیص عکس رقم پیش‌پردازش شده استفاده کنید:
clf.predict(test_image_prep)

@parsibox
Copy link
Author

ممنون

@parsibox
Copy link
Author

ببخشید الان خروجی clf.predict مگه نباید اعدادی باشه که برای هر عکس تشخیص داده؟
الان یه جدول خروجی میده این شکلی
‍‍‍‍‍‍‍```
precision recall f1-score support

       0       0.99      0.95      0.97      2000
       1       0.93      0.99      0.96      2000
       2       0.94      0.96      0.95      2000
       3       0.97      0.94      0.95      2000
       4       0.96      0.96      0.96      2000
       5       0.98      0.96      0.97      2000
       6       0.95      0.97      0.96      2000
       7       0.99      0.97      0.98      2000
       8       0.98      0.98      0.98      2000
       9       0.96      0.98      0.97      2000

accuracy                           0.97     20000

macro avg 0.97 0.97 0.97 20000
weighted avg 0.97 0.97 0.97 20000

آیا خروجی نباید اعداد تشخیص داده شده باشه؟چجوری میشه خروجی عددیش را بگیرم؟

@VahidSaadat
Copy link
Owner

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

این خروجی که الان داره نمایش داده میشه دقت کار هست که با دستور classification_report انجام میشه

آخر پروژه رو به این صورت تغییر بدین:

pred = clf.predict(test_images_prep)
print(pred)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants