자동차 한 대가 테슬라인지 패스트를 사용하지 않는지 검사하는 딥러닝.인공지능

여보게, 네가 모든 것이 순조롭길 바란다.그래서 요즘 금식을 겪기 시작했어요.인공지능 심도 있는 학습 과정, 두 명의 재능이 넘치는 제리미 호화드와 서추 토마스 교수가 심도 있는 학습을 한다.하나는 매우 경험이 많은 프로그래머이고, 다른 하나는 수학자이기 때문에 어떤 더 좋은 조합이 있을까.

쾌속 학습.인공지능


이 과목의 흥미로운 점은 위에서 아래로의 교수 방법을 채택한다는 데 있다. 이것은 먼저 모델을 작성하고 훈련한 후에야 수학이나 그 배후의 기본 개념을 이해할 수 있다는 것을 의미한다.다양한 경험에 따르면 이런 방법은 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)

  • 첫 번째 줄: 여기에 두 개의 주요 부류를 설정했습니다. 우리는 이미지를 분류할 것입니다.

  • 두 번째 줄: 사실 방금'테슬라 자동차'에서 이미지를 캡처한 후에 너무 모호하다는 것을 깨달았기 때문에 테라의 모든 특정 모델에 따라 모델을 훈련시켜 모델의 정확성을 높일 수 있도록 이 목록을 열거했습니다.

  • 세 번째 줄: 여기는 '이미지' 라는 폴더로 경로를 설정했을 뿐입니다.

  • 네 번째 줄: 여기에서 폴더를 만듭니다.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)
    
  • 첫 번째 줄: 보시다시피 "classify car"그룹의 두 종류를 훑어보고 있습니다.
  • 두 번째 줄: 여기category로 새 경로를 설정했습니다.
  • 세 번째 줄: 여기 새 폴더를 만들었습니다.
  • 네 번째 줄: Duckduckgo search () 함수로 그림을 다운로드합니다.
  • duckduckgo search() 함수에 대한 자세한 정보:
  • 첫 번째 매개 변수: 이미지를 다운로드하는 경로.
  • 두 번째 인자: 그림의 새 폴더를 다운로드하지만 필요 없습니다.
    폴더를 만들었기 때문에 비워 두겠습니다.
  • 세 번째 매개 변수: DuckDuckGo 검색엔진
  • 에서 검색할 검색어입니다.
  • 네 번째 인자: 다운로드할 최대 이미지 수입니다.
  • 따라서 실행 후, '이미지' 에는 '자동차' 와 '테슬라 자동차' 두 개의 새 폴더가 있어야 한다. 폴더마다 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)
    
  • DataLoader에 데이터를 로드했습니다.
  • 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에서 모든 코드를 찾을 수 있습니다.네가 좋아하면 스타가 돼라.🌟 !!

    나는 또한 유튜브에 컴퓨터 과학과 관련된 내용을 만들고 내 개인 사이트에 블로그를 쓴다.🧡✔


    나는 네가 어떤 것들을 좋아하고 배웠으면 하고, 평론을 해서 네 생각을 알게 해 주기를 바란다.🤞😃

    좋은 웹페이지 즐겨찾기