자동차 한 대가 테슬라인지 패스트를 사용하지 않는지 검사하는 딥러닝.인공지능
쾌속 학습.인공지능
이 과목의 흥미로운 점은 위에서 아래로의 교수 방법을 채택한다는 데 있다. 이것은 먼저 모델을 작성하고 훈련한 후에야 수학이나 그 배후의 기본 개념을 이해할 수 있다는 것을 의미한다.다양한 경험에 따르면 이런 방법은 Andrew Ng의 교수법보다 효과적이며, 즉 아래에서 위로 올라가는 교수법도 좋다.너한테만 도움이 된다면나는 손찌검하는 것을 더 좋아하기 때문에 이것은 나에게 매우 좋다.
테슬라든 아니든!
자, 이제 주제로 들어갑시다.따라서 제2과에서 당신은 이미지 식별이나 물체 식별을 어떻게 하고 신속하게 식별하는지 배울 것입니다.인공지능 라이브러리는 그것으로 하여금 이 점을 매우 쉽게 할 수 있게 한다. 단지 몇몇 줄에 있을 뿐이다.
내가 유튜브 영상에서 자주 말했듯이 손을 자주 더럽혀야 한다. 이것은 네가 진정으로 공부하는 방식이기 때문에 나는 차 한 대가 테슬라인지 아닌지를 검사하기 위해 모형을 만들기로 결정했다.분명히 너는 에른의 숭배자로부터 무엇을 얻을 수 있다.
어떻게?
이제 그것을 실현하는 코드 줄을 살펴보자. 나는 당신에게 실제 발생한 상황을 설명할 것이다.
GPU 인스턴스가 있는 Google Colab 노트에 더 많은 컨텍스트를 이해하기 위해 모델을 더 빨리 훈련할 수 있도록 작성했습니다.
1. 프로그램에 필요한 소프트웨어 패키지를 설치합니다.
!pip install fastai
!pip install -Uqq fastbook
!pip install jmd_imagescraper
현재, 이 프로그램을 실행하면, 그 중 일부는 colab에 설치되어 있으며, 다음과 같은 결과를 얻을 수 있습니다.
이것은 단지 일부 소프트웨어 패키지가 이미 설치되어 있기 때문에 우리는 안전하기 때문에 계속할 것이다.
2. 필요한 가방을 가져오겠습니다.
import fastbook
fastbook.setup_book()
from fastbook import *
from fastai.vision.widgets import *
from pathlib import Path
from jmd_imagescraper.core import *
3. 분류 범주 만들기
classify_car = 'cars', 'tesla car'
tesla_models= 'tesla model x','tesla model y','tesla model s','tesla model 3', 'tesla roadster','tesla cybertruck'
path= Path('images')
path.mkdir(exist_ok= True)
!pip install fastai
!pip install -Uqq fastbook
!pip install jmd_imagescraper
import fastbook
fastbook.setup_book()
from fastbook import *
from fastai.vision.widgets import *
from pathlib import Path
from jmd_imagescraper.core import *
classify_car = 'cars', 'tesla car'
tesla_models= 'tesla model x','tesla model y','tesla model s','tesla model 3', 'tesla roadster','tesla cybertruck'
path= Path('images')
path.mkdir(exist_ok= True)
첫 번째 줄: 여기에 두 개의 주요 부류를 설정했습니다. 우리는 이미지를 분류할 것입니다.
두 번째 줄: 사실 방금'테슬라 자동차'에서 이미지를 캡처한 후에 너무 모호하다는 것을 깨달았기 때문에 테라의 모든 특정 모델에 따라 모델을 훈련시켜 모델의 정확성을 높일 수 있도록 이 목록을 열거했습니다.
세 번째 줄: 여기는 '이미지' 라는 폴더로 경로를 설정했을 뿐입니다.
네 번째 줄: 여기에서 폴더를 만듭니다.mkdir 함수와 "exist ok"표시는 칸을 여러 번 실행할 때 폴더가 생성되었는지 확인합니다.
4. 이미지 데이터를 폐기하고 가져오도록 합니다.
더 좋은 상하문을 얻기 위해서 현재 'path' 변수는 '이미지' 폴더에 있습니다. 이 폴더는 현재 비어 있습니다.
for model in classify_car:
mpath = (path/model)
mpath.mkdir(exist_ok= True)
img = duckduckgo_search(mpath,'',f"{model}",max_results=150)
for models in tesla_models :
tpath=(path/'tesla car')
img = duckduckgo_search(tpath,'',f"{model}",max_results=150)
폴더를 만들었기 때문에 비워 두겠습니다.
이제 다음 for 순환에서도 같은 일이 일어났다. 나는 방금 테슬라 자동차의 경로를 설정하고 테슬라 자동차 진열의 특정 차종을 폴더에 전송해서 그들의 이미지를 다운로드했다.
5. 그림 보기
files = get_image_files(path)
len(files)
1행: 이미지 폴더의 모든 이미지만 가져옵니다.
corrupted= verify_images(files)
corrupted
corrupted.map( Path.unlink) #Remove corrupted files
6. 로드할 데이터 준비
data= DataBlock(blocks=(ImageBlock,CategoryBlock),
get_items=get_image_files,
get_y= parent_label,
splitter = RandomSplitter(valid_pct=0.2,seed=42 ),
item_tfms = Resize(128))
여기에서, 우리는 DataBlock 을 사용합니다. 이것은 고급api입니다. 데이터 불러오기 전에 데이터를 준비하는 최종 형식입니다.여기서 무슨 일이 일어났는지 봅시다.
1행: 모델이 이미지를 가져오고 카테고리를 출력하므로 Blocks=(ImageBlock, CategoryBlock)을 사용합니다.
두 번째 줄: 우리는 모든 이미지 파일을 얻을 수 있습니다.
세 번째 줄: 이 y는 출력으로 간주되기 때문에 "parent label"으로 설정합니다. 이 탭은
이미지가 있는 폴더의 이름입니다. 이것은 우리가 새 이미지를 분류할 때의 출력입니다.
4행: 여기서 우리는 20%의 데이터 집합을 검증 집합으로 나누었다.
다섯 번째 줄: 여기서 우리는 모든 이미지를 128 x 128 정사각형으로 조정하여 데이터 집중의 일치성을 유지한다.
7. 데이터 로드
data_load = data.dataloaders(path)
data_load.valid.show_batch(max_n=10 , nrows=2)
data = data.new(item_tfms=Resize(128), batch_tfms=aug_transforms())
data_load = data.dataloaders(path)
여기서 우리는 aug_transformer를 사용하여 데이터 집합을 더욱 최적화시켰다. 이것은 실용 함수로 회전, 회전, 축소, 비뚤어짐과 조명 변환 목록을 쉽게 만들 수 있다.8. 모형을 훈련시키자
model = cnn_learner(data_load, resnet18 , metrics=error_rate)
model.fine_tune(10)
여기서 우리는 cnn_learner 공장 방법의 훈련 모델을 사용하여 귀하가 자동으로 주어진 체계 구조에서 예비 훈련 모델을 얻을 수 있도록 도와줍니다. 이 모델은 귀하의 데이터에 적합한 사용자 정의 헤더를 가지고 있습니다.당신의 모델이 훈련을 마친 후에 당신은 반드시 이런 장면을 보게 될 것입니다.
이제 혼동 행렬을 살펴보고 우리의 모델이 어떻게 표현되는지 살펴보자.
interp= ClassificationInterpretation.from_learner(model)
interp.plot_confusion_matrix( )
괜찮아 보여요!
이 모델을 성공적으로 훈련시킨 것을 축하합니다.
우리 이제 진실의 순간을 예측합시다
tst= (path/'test')
tst.mkdir(exist_ok=True)
img = download_images(tst,urls=['https://www.businessinsider.in/photo/52674243/with-model-3-demand-surging-tesla-is-bringing-back-a-66000-version-of-its-model-s.jpg'])
image = PILImage.create('/content/images/test/00000000.jpg')
pred, predId, prob = model.predict('/content/images/test/00000000.jpg')
if pred=='cars':
print(f'Hey I am {prob[predId]*100:.04f} % sure that this image is a NOT a Tesla ')
else :
print(f'Hey I am {prob[predId]*100:.04f}% sure that this image is a Tesla !')
image
"url=[...] 에서 url을 변경하면 됩니다테스트하고 싶은 그림의 URL입니다.그것은 다음과 같아야 한다.
나는 지금 배치를 진행하고 있으니, 만약 당신에게 어떤 문제가 있으면 반드시 물어야 합니다!
my GitHubHERE에서 모든 코드를 찾을 수 있습니다.네가 좋아하면 스타가 돼라.🌟 !!
나는 또한 유튜브에 컴퓨터 과학과 관련된 내용을 만들고 내 개인 사이트에 블로그를 쓴다.🧡✔
나는 네가 어떤 것들을 좋아하고 배웠으면 하고, 평론을 해서 네 생각을 알게 해 주기를 바란다.🤞😃
Reference
이 문제에 관하여(자동차 한 대가 테슬라인지 패스트를 사용하지 않는지 검사하는 딥러닝.인공지능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/saumyanayak/detecting-a-car-is-tesla-or-not-using-deep-learning-with-fast-ai-4i3p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)