Как развернуть мою изученную модель .pkl, сделанную с помощью fastai, на моей другой машине с python на рабочем столе - PullRequest
1 голос
/ 11 марта 2020

Я следовал документации fastai и видеороликам о том, как создать модель ML, которая может определять различные продукты для домашнего ухода, такие как мыло и дезодоранты и так далее. Теперь я пришел к тому, что у меня есть модель, которая предположительно работает с частотой ошибок 0,03 ... насколько я понимаю, она примерно на 97% точной модели, однако я понятия не имею, как прогнозировать другие изображения на другом компьютере. Я экспортировал его, используя "learn.export ('Home_Care_Model.pkl')", как сказано в документации, но безуспешно.

Теперь в документации говорится, что мне нужно было бы снова определить модель с помощью классов, учебных наборов и т. Д., Но теперь я нахожусь на другом компьютере, поэтому у меня нет этих файлов и Я не могу go запустить его в Интернете, поскольку предполагается, что он будет запускаться как сценарий python на любом рабочем столе (конечная цель).

То, к чему я иду, это то, где у меня есть один файл с несортированными изображениями, который затем при запуске модели разделит изображения на две разные папки в соответствии с прогнозом.

Я искал ответ на этот вопрос и, честно говоря, я не уверен если я просто недостаточно хорошо это понимаю или что-то в этом роде, потому что я теряю все силы, пытаясь заставить эту модель работать.

Вот мой тренировочный код:

from fastai import *
from fastai.vision import *
%matplotlib inline
%reload_ext autoreload
%autoreload 2
import os


os.environ['KMP_DUPLICATE_LIB_OK']='True'


path = Path('my files path...')
print(path)


for folder in ('soap','deo'): # I have more but it will waist space.
print (folder)
verify_images(path/folder, max_size=500)
np.random.seed(42)


data = ImageDataBunch.from_folder(path, train='.', valid_pct=0.3, ds_tfms=get_transforms(), 
size=224, num_workers=4).normalize(imagenet_stats)


data.classes


from fastai.metrics import error_rate
learn= create_cnn(data, models.resnet34, metrics=error_rate)


learn


defaults.device = torch.device('cuda')
learn.fit_one_cycle(5)


learn.unfreeze()


learn.lr_find()


learn.recorder.plot()


learn.fit_one_cycle(4, max_lr=slice(3e-6,3e-5))


learn.save('day2Test_02')


from fastai.widgets import *


ds, idxs = DatasetFormatter().from_toplosses(learn)


ImageCleaner(ds, idxs, path)


df = pd.read_csv(path/'cleaned.csv', header='infer')
df.head()


df[(df['name'].apply(lambda x: len(x)<5))]


np.random.seed(42)
db =(ImageList.from_df(df,path).random_split_by_pct(0.2).label_from_df().transform(get_transforms(), size= 224).databunch(bs=8)).normalize(imagenet_stats)


data.classes, data.c, len(data.train_ds), len(data.valid_ds)


db.classes, db.c,len(db.train_ds), len(data.valid_ds)


learn.data = db


learn.freeze()

learn.fit_one_cycle(4)


learn.save('day2Test_02_01')


learn.unfreeze()


learn.lr_find()


learn.recorder.plot()


learn.fit_one_cycle(4, max_lr=slice(3e-5,3e-4))


learn.save('dat2Test_test2')


interp = ClassificationInterpretation.from_learner(learn)


interp.plot_confusion_matrix()


learn.export('day2Test_test2.pkl')
...