از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
طبقه بندی تصاویر با مدل از پیش آموزش دیده با استفاده از Keras
سرفصلهای مطلب
مدلهای Computer Vision راه درازی را پیمودهاند – و شما میتوانید از مدلهای موجود، از قبل آموزش دیده، استفاده کنید روی مجموعه بزرگی از داده ها، و فقط آنها را به خط لوله پیش بینی خود وصل کنید.
در حالی که تنظیم دقیق یک شبکه بهترین راه است – وارد کردن یک مدل موجود و اجرای پیشبینیها از همان ابتدا یک مورد استفاده معتبر در مراحل اولیه نمونهسازی یا صرفاً به خاطر آزمایش یک مدل است. برای یک راهنمای عمیق و دقیق روی تنظیم دقیق از طریق آموزش انتقال – درس رایگان ما را بخوانید روی “انتقال آموزش برای کامپیوتر ویژن با کراس”!
همانطور که گفته شد – متغیر اصلی است چگونه شما یک تصویر را بارگذاری می کنید، قابل توجه ترین روش ها استفاده از OpenCV، PIL و روش های کمکی پیش پردازش Keras است.
OpenCV
OpenCV برای Computer Vision است، همان چیزی که Scikit-Learn برای یادگیری ماشین است. این یک کتابخانه محبوب و کامل است که به طور گسترده در صنعت استفاده می شود، با منحنی یادگیری کمی تندتر از کتابخانه های پردازش تصویر مانند PIL.
ما یک تابع کمکی اختصاصی ایجاد می کنیم تا تصویری را از طریق URL به آرایه NumPy به دست آوریم و تبدیل کنیم و سپس آن را با استفاده از یک مدل از پیش آموزش دیده طبقه بندی کنیم. keras.applications
:
from tensorflow import keras
from keras.applications.efficientnet import preprocess_input, decode_predictions
import urllib
import cv2
import numpy as np
def url_to_array(url):
req = urllib.request.urlopen(url)
arr = np.array(bytearray(req.read()), dtype=np.int8)
arr = cv2.imdecode(arr, -1)
arr = cv2.cvtColor(arr, cv2.COLOR_BGR2RGB)
arr = cv2.resize(arr, (224, 224))
return arr
url = 'https://upload.wikimedia.org/wikipedia/commons/0/02/Black_bear_large.jpg'
img = url_to_array(url)
img_batch = np.expand_dims(img, 0)
effnet = keras.applications.EfficientNetV2B0(weights='imagenet', include_top=True)
pred = effnet.predict(img_batch)
print(decode_predictions(pred))
بیایید تصویر را با پیش بینی تجسم کنیم:
plt.imshow(img)
plt.title(f'Class: {decode_predictions(pred)(0)(0)(1)}\nConfidence: {decode_predictions(pred)(0)(0)(2)*100}%')
plt.show()
پیش پردازش Keras
Keras توابع و کلاس های کمکی پیش پردازش را ارائه می دهد که به ما امکان می دهد تصاویر را به عنوان آرایه های NumPy بارگیری و آماده کنیم:
from tensorflow import keras
from keras.applications.efficientnet import preprocess_input, decode_predictions
from tensorflow.keras.preprocessing import image
import urllib.request
import matplotlib.pyplot as plt
import numpy as np
url = 'https://upload.wikimedia.org/wikipedia/commons/0/02/Black_bear_large.jpg'
urllib.request.urlretrieve(url, 'bear.jpg')
img = image.load_img('bear.jpg', target_size=(224, 224))
img = image.img_to_array(img)
img_batch = np.expand_dims(img, 0)
effnet = keras.applications.EfficientNetV2B0(weights='imagenet', include_top=True)
pred = effnet.predict(img_batch)
print(decode_predictions(pred))
بیایید آن را طرح کنیم:
plt.imshow(img.astype('int'))
plt.title(f'Class: {decode_predictions(pred)(0)(0)(1)}\nConfidence: {decode_predictions(pred)(0)(0)(2)*100}%')
plt.show()
PIL
در نهایت، PIL یک کتابخانه پردازش تصویر عموماً محبوب است و به طور طبیعی می تواند برای بارگذاری تصاویر به عنوان آرایه های NumPy استفاده شود:
from tensorflow import keras
from keras.applications.efficientnet import preprocess_input, decode_predictions
from tensorflow.keras.preprocessing import image
import PIL
import urllib.request
import matplotlib.pyplot as plt
import numpy as np
url = 'https://upload.wikimedia.org/wikipedia/commons/0/02/Black_bear_large.jpg'
img = PIL.Image.open(urllib.request.urlopen(url))
img = img.resize((224, 224))
img_batch = np.expand_dims(img, 0)
effnet = keras.applications.EfficientNetV2B0(weights='imagenet', include_top=True)
pred = effnet.predict(img_batch)
print(decode_predictions(pred))
بیایید آن را طرح کنیم:
plt.imshow(img)
plt.title(f'Class: {decode_predictions(pred)(0)(0)(1)}\nConfidence: {decode_predictions(pred)(0)(0)(2)*100}%')
plt.show()
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-05 06:05:08