یادگیری عمیق
طبقه بندی مارک خودرو در یادگیری عمیق با پایتون
انتقال یادگیری VGG16 و Resnet 50 با استفاده از Keras
عکس توسط Beat Jau در Unsplash
مقدمه
در این مقاله ، طبقه بندی مارک خودرو را با استفاده از تصاویر پیاده سازی می کنیم از خودروهای 3 مارک: مرسدس ، آئودی و لامبورگینی.
VGG-16 یک شبکه عصبی کانولوشن عمیق 16 لایه است که می تواند تصاویر را در 1000 دسته اشیا طبقه بندی کند.
این داده ها مجموعه شامل تصاویر خودرو مورد استفاده برای طبقه بندی مارک است. در اینجا ، ما دو پوشه داریم به نام train and test ، هر کدام دارای سه پوشه به نام های Lamborghini ، Audi و Mercedes هستند. میلیون ها نقطه داده دارای برچسب برای آموزش چنین مدلهای پیچیده ای ندارید.
اکنون بیایید همه کتابخانه های مورد نیاز را وارد کنیم
در اینجا ، ما از Keras استفاده می کنیم زیرا آزمایش سریع با شبکه های عصبی عمیق را امکان پذیر می کند. به ما مدل خود را با کمک Resnet 50 می سازیم زیرا می تواند شبکه های عصبی عمیق را با لایه های متعدد آموزش دهد.
ما باید نمونه های آموزشی جدیدی را از نمونه های موجود ایجاد کنیم ، این فرایند در حال حاضر افزایش تصویر است. این را می توان با استفاده از Image Data Generator انجام داد.
مجموعه داده مورد استفاده را می توانید از اینجا بارگیری کنید: مجموعه عکس تصاویر نام تجاری خودرو | Kaggle
# وارد کردن کتابخانه های مورد نیاز
از tensorflow.keras.layers وارد کردن ورودی ، Lambda ، Dense ، Flatten
از tensorflow.keras.models مدل واردات
از tensorflow.keras.applications.resnet50 وارد ResNet50
#واردات VGG16
از tensorflow.keras.applications.resnet50
preprocess_input را وارد کنید
از tensorflow.keras.preprocessing import image
از واردات tensorflow.keras.preprocessing.image
ImageDataGenerator ، load_img
from tensorflow.keras.models import Sequential
import numpy as np
import matplotlib.pyplot as plt
from glob import glob
همه تصاویر را به اندازه [224 ، 224] تغییر دهید و یک فهرست با دو پوشه جداگانه با نام train و test ایجاد کنید. این پوشه ها شامل تصاویر اتومبیل های مورد نیاز برای طبقه بندی هستند. = 'مجموعه داده ها/قطار'
valid_path = 'مجموعه داده ها/آزمایش'
ما از وزن های imagenet استفاده می کنیم زیرا نیازی به آموزش شبکه عصبی از ابتدا نیست.
# استفاده از وزن imagenet
resnet = ResNet50 (input_shape = IMAGE_SIZE + [3] ، وزن = 'imagenet' ،
include_top = False)
عکس نویسنده
در اینجا ما از Resnet استفاده می کنیم زیرا پیشرفت اساسی در ResNet این بود که به ما اجازه داد شبکه های عصبی بسیار عمیق را با بیش از 150 لایه با موفقیت آموزش دهیم.
# وزنه های موجود را آموزش ندهید
برای لایه در resnet.layers:
layer.trainable = False
# این به دریافت تعداد کلاسهای خروجی کمک می کند
پوشه ها = glob ('مجموعه داده ها/قطار/*')
# لایه های ما
x = Flatten () (resnet.output)
prediction = متراکم (len (پوشه ها) ، فعال سازی = 'softmax') (x)
# ایجاد مدل شی
model = model (ورودی = resnet.input ، خروجی = پیش بینی)
model.summary ()
خلاصه مدل عکس نویسنده
در اینجا از categorical_crossentropy استفاده می کنیم یک تابع ضرر است که در کارهای طبقه بندی چند طبقه ای استفاده می شود.
# مدل را
کامپایل کنید. کامپایل (loss = 'categorical_crossentropy'، optimizer = 'adam'،
metrics = ['دقت'])
# استفاده از مولد داده های تصویری
از tensorflow.keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator (بازپرداخت = 1./255 ، محدوده برشی =
0.2 ، zoom_range = 0.2 ، horizontal_flip = True)
test_datagen = ImageDataGenerator (رسپرس = 1./255)
training_set= train_datagen.flow_from_directory ("مجموعه داده ها/قطار" ،
target_size = (224 ، 224) ،
batch_size = 32 ،
class_mode = 'طبقه بندی')
#output:
64 تصویر متعلق به 3 کلاس پیدا شد.
test_set = test_datagen.flow_from_directory ("مجموعه داده ها/تست" ،
target_size = (224 ، 224) ،
batch_size = 32 ،
class_mode = ‘categorical’)
#output:
58 تصویر متعلق به 3 کلاس یافت شد.
دوره ها = 50 ، steps_per_epoch = لن (مجموعه_آموزش) ،
validation_steps = len (test_set)
آموزش مدل. عکسی از نویسنده
پیش بینی قیمت بیت کوین با RNN و LSTM در پایتون
پیش بینی قیمت بیت کوین با استفاده از Deep Learningpub.towardsai.net اکنون ، نقشه ضرر
# طرح ضرر
plt.plot (r.history [' ضرر '] ، label =' از دست دادن قطار ')
plt.plot (r.history ['val_loss']، label = 'val loss')
plt.legend ()
plt.show ()
plt.savefig ('LossVal_loss')
# ترسیم دقت
plt.plot (r.history ['دقت'] ، label = 'acc accrain')
plt.plot (r.history ['val_accuracy']، label = 'val acc')
plt.legend ()
plt.show ()
plt.savefig ('AccVal_acc')
نمودار ضرر و دقت. عکسی از نویسنده
از نمودار فوق ، می توانیم استنباط کنیم که ضرر اعتبار بیشتر از تلفات قطار و دقت قطار بیشتر از اعتبار اعتبار است.
اکنون ما باید مدل خود را ذخیره کنیم با فرمت فایل h5 برای آزمایش بیشتر مدل.
model.save ('model_resnet50.h5')
پس از بارگذاری مدل ، بیایید پیش بینی هایی را در مجموعه آزمایش انجام دهیم.
y_pred = model.predict (test_set)
y_pred
مقادیر پیش بینی. عکسی از نویسنده
Np.argmax () در اینجا برای بدست آوردن شاخصهای حداکثر عنصر از یک آرایه استفاده می شود.
y_pred = np.argmax (y_pred، axis = 1)
y_pred
عکس نویسنده
از tensorflow.keras .models وارد کنید load_model
#بارگذاری فایل h5 در مدل
model = load_model ('model_resnet50.h5')
اکنون ما مدل را بر روی هر تصویر تصادفی از داده های آزمایش آزمایش می کنیم.
img = image.load_img ('مجموعه داده ها/تست/لامبورگینی /11.jpg'،target_size=(224،224))
x = image.img_to_array (img)
x
عکس نویسنده
#شکل از تصویر
x.shape
#output:
(224 ، 224 ، 3)
#عادی سازی مقادیر پیکسل های تصویر
x = x/255
#ابعاد تصویر را گسترش دهید
x = np.expand_dims (x، axis = 0)
img_data = preprocess_input (x)
img_data.shape
#output:
(1 ، 224 ، 224 ، 3)
در حال حاضر ، پیش بینی در مورد img_data
model.predict (img_data)
#output:
آرایه ([[0.01513638 ، 0.01566849 ، 0.9691952]] ، dtype = float32)
a = np.argmax (model.predict (img_data) ، محور = 1)
a == 1
#output:
آرایه ([درست])
بنابراین ما طبقه بندی تصویر را بر روی مجموعه داده انجام می دهیم.
نتیجه گیری:
این مقاله یک روش عملی برای طبقه بندی خودروها ارائه می دهد تصاویر مارک از این مدل می توان برای پیش بینی مارک خودرو با استفاده از فایل "h5" استفاده کرد.
امیدوارم مقاله را دوست داشته باشید. در LinkedIn و توییتر خود با من تماس بگیرید.
مقالات توصیه شده
1. NLP - صفر به قهرمان با پایتون
2. ساختارهای داده پایتون انواع داده ها و اشیاء
3. استثناء مفاهیم دستکاری در پایتون
4. چرا LSTM در یادگیری عمیق مفیدتر از RNN است؟
5. شبکه های عصبی: ظهور شبکه های عصبی مکرر
6. رگرسیون خطی به طور کامل با پایتون توضیح داده شده است
7. رگرسیون لجستیک به طور کامل با پایتون توضیح داده شده است
8. تفاوت بین concat () ، ادغام () و پیوستن () به پایتون
9. نزاع داده ها با پایتون - قسمت 1
10. ماتریس گیجی در یادگیری ماشین
تله کابین
[ بازدید : 20 ] [ امتیاز : 3 ] [ نظر شما :
]