मैं एक छवि अपलोड करके अपने मॉडल का परीक्षण करना चाहता था लेकिन मुझे यह त्रुटि मिली। और मुझे लगता है कि मुझे इन पंक्तियों में कहीं त्रुटि मिली है, मुझे यकीन नहीं है कि कैसे ठीक किया जाए।

IMAGE_SIZE = [244,720]
inception = InceptionV3(input_shape=IMAGE_SIZE + [3], weights='imagenet',include_top=False)

मेरी परीक्षण छवि अपलोड करने का कोड भी यहां दिया गया है

picture =  image.load_img('/content/DSC_0365.JPG', target_size=(244,720))
img = img_to_array(picture)
prediction = model.predict(img)
print (prediction)

मैं अभी भी मशीन लर्निंग में नौसिखिया हूं इसलिए अभी मेरा ज्ञान इतना गहरा नहीं है।

1
Oblivion 2 जून 2021, 18:55

1 उत्तर

सबसे बढ़िया उत्तर

यह ज्यादातर इसलिए है क्योंकि आपने अपने इंसेप्शन मॉडल के लिए अपना इनपुट (इसका आयाम) तैयार नहीं किया था। यहाँ एक संभावित समाधान है।


मॉडल

from tensorflow.keras.applications import *

IMAGE_SIZE = [244,720]
inception = InceptionV3(input_shape=IMAGE_SIZE + [3], 
                         weights='imagenet', include_top=False)

# check it's input shape 
inception.input_shape
(None, 244, 720, 3)

अनुमान

आइए इसे मॉडल में पास करके एक नमूने का परीक्षण करें।

from PIL import Image 

a = Image.open('/content/1.png').convert('RGB')
display(a)

enter image description here

इसके मूल गुणों की जाँच करें।

a.mode, a.size, a.format
('RGB', (297, 308), None)

तो, इसका आकार पहले से ही (297 x 308 x 3) में है। लेकिन इसे मॉडल में पास करने में सक्षम होने के लिए, हमें एक अतिरिक्त अक्ष की आवश्यकता होती है जो बैच अक्ष है। ऐसा करने के लिए, हम कर सकते हैं

import tensorflow as tf
import numpy as np 

a = tf.expand_dims(np.array(a), axis=0)
a.shape
TensorShape([1, 308, 297, 3])

ज्यादा बेहतर। अब, हम अपने डेटा को सामान्य बनाना चाहते हैं और मॉडल इनपुट आकार के अनुसार इसका आकार बदल सकते हैं। ऐसा करने के लिए, हम कर सकते हैं:

a = tf.divide(a, 255)       
a = tf.image.resize(a, [244,720])  
a.shape
TensorShape([1, 244, 720, 3])

और अंत में, इसे मॉडल को पास करें।

inception(a).shape
TensorShape([1, 6, 21, 2048])

# or, preserve the prediction to later analysis 
y_pred = inception(a)

अद्यतन

अगर आप [tf.keras] इमेज प्रोसेसिंग फ़ंक्शन जो छवि को जनहित याचिका प्रारूप में लोड करता है, तो हम बस कर सकते हैं:

image = tf.keras.preprocessing.image.load_img('/content/1.png', 
                                             target_size=(244,720))
input_arr = tf.keras.preprocessing.image.img_to_array(image)
input_arr = np.array([input_arr])  # Convert single image to a batch.

inception(input_arr).shape
TensorShape([1, 6, 21, 2048])
0
M.Innat 2 जून 2021, 19:50
शुक्रिया महाशय! मैं अपना कोड संपादित करूंगा और परिणाम प्राप्त करने के बाद मैं आपको अपडेट करूंगा।
 – 
Oblivion
2 जून 2021, 19:22
वो कर गया काम। :) लेकिन जोड़ने के लिए, छवि की भविष्यवाणी के लिए मैं उस आकार की छवि को अपने कोड में कैसे सम्मिलित कर सकता हूं (कोड मेरी अद्यतन पोस्ट में बताया गया है)?
 – 
Oblivion
2 जून 2021, 19:41
चित्र = image.load_img('/content/DSC_0365.JPG', target_size=(244,720)) img = img_to_array(Picture) भविष्यवाणी = model.predict(img) प्रिंट (भविष्यवाणी)
 – 
Oblivion
2 जून 2021, 19:41
वह मेरा पिछला कोड था। मैं वहां आकार बदलने वाली छवि कैसे सम्मिलित कर सकता हूं?
 – 
Oblivion
2 जून 2021, 19:42
1
ऊह वाह मैं देखता हूँ। शुक्रिया जनाब! समस्या हल हो गई। मैं आपके प्रयास की सराहना करता हूं, अधिक शक्ति! आपका दिन शुभ हो!
 – 
Oblivion
2 जून 2021, 21:23