मैं छवि वर्गीकरण के लिए एक पूर्व-प्रशिक्षित एमएलमॉडल का उपयोग कर रहा हूं। मॉडल छवि के प्रारूप के रूप में इनपुट के रूप में 3 x 224 x 224 मल्टीएरे लेता है। मेरे वर्तमान एप्लिकेशन के लिए, मैं UIImage के साथ काम कर रहा हूं। क्या UIImage को MLMultiArray में बदलने का कोई तरीका है?

मैंने केरस मॉडल से कोरएमएल मॉडल में कनवर्ट करने के संबंध में कुछ जवाब देखे हैं, लेकिन मेरा मॉडल पहले से ही एमएलमॉडल प्रारूप में है और डेटा तक पहुंच नहीं है।

2
Rohit Chouhan 12 मई 2019, 23:00

1 उत्तर

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

सबसे आसान उपाय यह है कि एमएलमॉडल फ़ाइल में इनपुट के प्रारूप को बदल दिया जाए। आप ऐसा तब भी कर सकते हैं जब आपके पास मूल केरस मॉडल न हो।

पायथन लिपि में निम्न कार्य करें:

import coremltools
import coremltools.proto.FeatureTypes_pb2 as ft 

spec = coremltools.utils.load_spec("YourModel.mlmodel")

input = spec.description.input[0]
input.type.imageType.colorSpace = ft.ImageFeatureType.RGB
input.type.imageType.height = 224 
input.type.imageType.width = 224

coremltools.utils.save_spec(spec, "YourNewModel.mlmodel")

UIImage को MLMultiArray में बदलना भी संभव है, लेकिन यदि आपका मॉडल वास्तव में छवियों पर काम करता है, तो इनपुट प्रकार को छवि में बदलना सबसे अच्छा है।

वैसे, यदि आपके पास अभी भी मूल केरस मॉडल है, तो आप कोरमलटूल केरस कनवर्टर को image_input_names="your_input" प्रदान करके स्वचालित रूप से ऐसा कर सकते हैं। उस मामले में एक नई पायथन लिपि लिखने की जरूरत नहीं है।

7
Matthijs Hollemans 31 मई 2019, 18:37