การทำนายแบบเรียลไทม์โดยใช้ ResNet Model
ResNetเป็นโมเดลที่ได้รับการฝึกฝนมาก่อน มันคือการฝึกอบรมโดยใช้ImageNet RESNET น้ำหนักรุ่นก่อนการฝึกอบรมในImageNet มีไวยากรณ์ต่อไปนี้ -
keras.applications.resnet.ResNet50 (
include_top = True,
weights = 'imagenet',
input_tensor = None,
input_shape = None,
pooling = None,
classes = 1000
)
ที่นี่
include_top หมายถึงเลเยอร์ที่เชื่อมต่อเต็มรูปแบบที่ด้านบนสุดของเครือข่าย
weights อ้างอิงการฝึกอบรมล่วงหน้าเกี่ยวกับ ImageNet
input_tensor หมายถึง Keras tensor ที่เป็นอุปกรณ์เสริมเพื่อใช้เป็นอินพุตภาพสำหรับรุ่น
input_shapeหมายถึงทูเพิลรูปร่างเสริม ขนาดอินพุตเริ่มต้นสำหรับรุ่นนี้คือ 224x224
classes อ้างถึงจำนวนคลาสเสริมเพื่อจัดประเภทรูปภาพ
ให้เราเข้าใจโมเดลโดยการเขียนตัวอย่างง่ายๆ -
ขั้นตอนที่ 1: นำเข้าโมดูล
ให้เราโหลดโมดูลที่จำเป็นตามที่ระบุด้านล่าง -
>>> import PIL
>>> from keras.preprocessing.image import load_img
>>> from keras.preprocessing.image import img_to_array
>>> from keras.applications.imagenet_utils import decode_predictions
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> from keras.applications.resnet50 import ResNet50
>>> from keras.applications import resnet50
ขั้นตอนที่ 2: เลือกอินพุต
ให้เราเลือกภาพอินพุต Lotus ตามที่ระบุด้านล่าง -
>>> filename = 'banana.jpg'
>>> ## load an image in PIL format
>>> original = load_img(filename, target_size = (224, 224))
>>> print('PIL image size',original.size)
PIL image size (224, 224)
>>> plt.imshow(original)
<matplotlib.image.AxesImage object at 0x1304756d8>
>>> plt.show()
ที่นี่เราได้โหลดภาพ (banana.jpg) และแสดงมัน
ขั้นตอนที่ 3: แปลงรูปภาพเป็นอาร์เรย์ NumPy
ให้เราแปลงอินพุตของเรา Banana ลงในอาร์เรย์ NumPy เพื่อให้สามารถส่งผ่านไปยังโมเดลเพื่อวัตถุประสงค์ในการทำนาย
>>> #convert the PIL image to a numpy array
>>> numpy_image = img_to_array(original)
>>> plt.imshow(np.uint8(numpy_image))
<matplotlib.image.AxesImage object at 0x130475ac8>
>>> print('numpy array size',numpy_image.shape)
numpy array size (224, 224, 3)
>>> # Convert the image / images into batch format
>>> image_batch = np.expand_dims(numpy_image, axis = 0)
>>> print('image batch size', image_batch.shape)
image batch size (1, 224, 224, 3)
>>>
ขั้นตอนที่ 4: การคาดคะเนโมเดล
ให้เราป้อนข้อมูลของเราลงในแบบจำลองเพื่อรับคำทำนาย
>>> prepare the image for the resnet50 model >>>
>>> processed_image = resnet50.preprocess_input(image_batch.copy())
>>> # create resnet model
>>>resnet_model = resnet50.ResNet50(weights = 'imagenet')
>>> Downloavding data from https://github.com/fchollet/deep-learning-models/releas
es/download/v0.2/resnet50_weights_tf_dim_ordering_tf_kernels.h5
102858752/102853048 [==============================] - 33s 0us/step
>>> # get the predicted probabilities for each class
>>> predictions = resnet_model.predict(processed_image)
>>> # convert the probabilities to class labels
>>> label = decode_predictions(predictions)
Downloading data from https://storage.googleapis.com/download.tensorflow.org/
data/imagenet_class_index.json
40960/35363 [==================================] - 0s 0us/step
>>> print(label)
เอาต์พุต
[
[
('n07753592', 'banana', 0.99229723),
('n03532672', 'hook', 0.0014551596),
('n03970156', 'plunger', 0.0010738898),
('n07753113', 'fig', 0.0009359837) ,
('n03109150', 'corkscrew', 0.00028538404)
]
]
ที่นี่แบบจำลองทำนายภาพเป็นกล้วยได้อย่างถูกต้อง