معرفی مفاهیم پایه بینایی کامپیوتر در scikit-learn
در حالی که scikit-learn به طور سنتی به عنوان کتابخانهای برای یادگیری ماشین شناخته میشود، در حال حاضر امکانات یادگیری عمیق و بینایی کامپیوتر را نیز به مجموعه قابلیتهای خود اضافه کرده است. این امر، چشماندازهای تازهای را برای کاربران این کتابخانه محبوب ترسیم میکند و به آنها اجازه میدهد تا از مزایای پردازش تصویر و ویدیو در طیف گستردهای از وظایف، بدون نیاز به تسلط بر چارچوبهای یادگیری عمیق پیچیده مانند TensorFlow یا PyTorch، بهرهمند شوند.
با این حال، توجه به این نکته ضروری است که scikit-learn در حال حاضر مجموعه کاملی از ابزارهای بینایی کامپیوتر را در مقایسه با کتابخانههای تخصصی مانند OpenCV یا SimpleITK ارائه نمیدهد. با وجود این، scikit-learn ابزارهای مفیدی را برای انجام وظایف پایه بینایی کامپیوتر مانند:
- پیش پردازش تصویر: شامل عملیاتی مانند تغییر اندازه، برش، تبدیل نوع داده و اعمال فیلترها میشود.
- استخراج ویژگی: شامل استخراج اطلاعات کلیدی از تصاویر مانند رنگ، بافت، لبهها و اشکال میشود.
- طبقهبندی تصویر: شامل دستهبندی تصاویر به دستههای از پیش تعریفشده مانند گربه، سگ، ماشین و غیره میشود.
- تشخیص اشیاء: شامل شناسایی و مکانیابی اشیاء خاص در تصاویر میشود.
مفاهیم کلیدی:
- تصویر: آرایهای از پیکسلها که هر پیکسل دارای مقادیر مربوط به رنگ (مانند RGB) یا شدت (در تصاویر تک رنگ) است.
- ویژگی تصویر: عددی یا برداری که اطلاعات خاصی در مورد تصویر مانند رنگ، بافت یا شکل را نشان میدهد.
- دستهبندی تصویر: فرآیند دستهبندی تصاویر به دستههای از پیش تعریفشده.
- تشخیص اشیاء: فرآیند شناسایی و مکانیابی اشیاء خاص در تصاویر.
ابزارهای scikit-learn:
skimage
: کتابخانهای برای پردازش تصویر و تحلیل که در scikit-learn ادغام شده است.joblib
: کتابخانهای برای موازیسازی و ذخیرهسازی مدلها که در scikit-learn استفاده میشود.OpenCV
: کتابخانهای تخصصی برای پردازش تصویر و بینایی کامپیوتر که میتواند با scikit-learn ادغام شود.
مثال: طبقهبندی تصاویر دست نوشته با استفاده از scikit-learn
در ادامه، مثالی از طبقهبندی تصاویر دست نوشته از مجموعه داده MNIST با استفاده از scikit-learn ارائه میشود:
from sklearn.datasets import mnist
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
# بارگذاری و پیش پردازش داده ها
X, y = mnist.load_data()
X = X.astype('float32') / ۲۵۵.۰
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=۰.۲)
# آموزش مدل Naive Bayes
model = GaussianNB()
model.fit(X_train, y_train)
# پیشبینی بر روی مجموعه داده تست
y_pred = model.predict(X_test)
# ارزیابی عملکرد مدل
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
منابع:
- مستندات scikit-learn: یادگیری عمیق: https://scikit-learn.org/stable/modules/neural_networks_supervised.html
- آموزش بینایی کامپیوتر با scikit-learn: [https://realpython.com/courses/splitting-datasets-scikit-learn-train-test-split/]