이제는 사용하지 않는 공부방/Artificial intelligence

fastai vision tutorial/single label classification

환상상상속상 2021. 1. 14. 16:54

반드시 runtime에서 gpu로 바꿔줘야한다!!

 

1. path = untar_data(URLs.PETS)

 

외부로부터 다운받아 압축한 아카이브의 위치를 가지고 온다.

untar_data is a helper function to download datasets that are present in URLs

 

2.path.ls()

 

정보를 알 수 있다.



3. files = get_image_files(path/"images")

 

이미지파일을 가져온다.

 

4. def label_func(f): return f[0].isupper()

 

대문자가 고양이를 뜻하므로 고양이를 판별하는 함수를 만들어주자.

 

5. dls = ImageDataLoaders.from_name_func(path, files, label_func, item_tfms = Resize(224))

 

1)모델을 위해서 데이터를 준비하려면 꼭 DataLoaders객체에 넣어줘야한다.

(이미지를 사용하므로 ImageDataLoaders 클래스를 사용한다.)

2)from_name_func: 파일이름을 사용하여 라벨링하는 함수

-> 이 함수에 우리가 작업하는 폴더, 파일들, 라벨링 함수, item_tfms를 넘겨주었다.

--> item_tfms는 transform으로 모든 데이터셋을 224 by 224로 바꿔준다.

--->224로 바꾸지 않으면 아이템을 한번에 묶을 수 없다고 한다.

 

6.dls.show_batch()

 

묶인 사진들이 보이게된다.

dls는 데이터로 show_batch 메소드를 통해서 샘플을 볼 수 있다.

 

7. learn = cnn_learner(dls, resnet34, metrics=error_rate)

learn.fine_tune(1)

 

learner은 객체로 데이터와 모델을 결합해준다.

해당 객체는 transfer learning을 fine_tune() 메소드를 통해서 사용할 수 있다.

(resnet은 imagenet을 미리 학습한 모델이다.)

 

미리 학습된 덕분에 에러율이 굉장히 적은 좋은 모델을 얻을 수 있다.

 

8.learn.predict(files[0]) or learn.show_results()

 

learner객체의 predict메소드를 통해 쉽게 예측할 수 있다.

 

[정리]

데이터를 모으고 확인한 후에 learner객체를 만들고, 모델을 학습시키고 예측한다.