車を検出するテスラまたは高速で深い学習を使用していません.愛


おい、あなたがよくやっていることを願っています.それで、最近、私は速いものを経験し始めました.2つの輝かしい人-ジェレミーハワードとレイチェルトマスが深い学習を教えるAI深い学習カリキュラム.一つは非常に経験豊富なプログラマーであり、もう一つは数学者です.

高速での学習。愛


コースについての興味深いことは、それを教えるためにトップダウンのアプローチを取ることを意味し、最初のコードと列車のモデルを意味し、後にその背後にある数学や基礎にある概念を理解する.そして、様々な経験によると、このアプローチは、I . E .ボトムアップを教えるアンドリューNGの方法よりも優れています.何でもあなたのために働く.私は人の手のより多くであるので、これは私のために大きいです.

テスラかどうか!


さて今話題になりましょう.だから、レッスン2では、画像認識やオブジェクトの識別と高速を行う方法を学びます.人工知能ライブラリは非常に簡単にいくつかの行で行うことができます.
そして、私はいつも私のYouTubeの動画でいつもあなたの手汚いcuzを得るために言っているので、あなたが本当に学ぶ方法であるので、私は車がテスラであるかどうか検出するモデルを作ることに決めました.明らかに、あなたはエロン崇拝者から何を期待することができますか.

ハウツーとスタイル


さあ、それが起こるようにするコードの行を通して行きましょう.
いくつかのより多くの文脈のために、私はより速くモデルを訓練するためにGPUインスタンスでGoogle Colabノートでこれを書きました.

プログラムで必要なパッケージをインストールしましょう。


!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 * 

分類カテゴリの作成


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)

  • ここでは、画像を分類する2つの主要親カテゴリを設定します.

  • 第2行:実際に「テスラカー」でイメージをこすった後、私は、それがあまりに曖昧であると理解したので、私はモデルの精度を増やすためにTelsaのすべての特定のモデルに基づいてモデルを訓練するためにこのリストを作りました.

  • 行3 :ここでは' image 'という名前のパスを設定します.

  • 行4 :ここでフォルダを作成します.mkdir関数と' exists ' okタグを指定します.
  • 4 .スクラップとイメージデータを取得しましょう。


    より良い文脈のために、現在、我々の「経路」変数は現在、空である'イメージ'フォルダにあります.
    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)
    
  • 行1 :ここでは、' classifycar - car '配列の2つのカテゴリを通過します.
  • 2行目で新しいパスを設定します.
  • 新しいフォルダを作成します.
  • 行4 :ここでDuckDuckgoCount search ()関数を使用して画像をダウンロードします.
  • DuckDuckgoCount search ()関数については、
  • 最初の引数:画像がダウンロードされるパス.
  • 第2引数:画像をダウンロードする新しいフォルダですが、必要はありません
    我々はすでにフォルダを作ったので、我々は空白のままにします.
  • 第3引数:それはDuckDuckgo検索エンジンで検索される検索用語です
  • 第4引数:それがダウンロードされる画像の最大数です.
  • したがって、それが実行された後、あなたは“画像”I ';E ';車';と';テスラ車の中にそれぞれの150の画像で2つの新しいフォルダーを持っている必要があります.
    次のループでは、同じテスラが起こります.ここでは「テスラ車」へのパスを設定しています.また、テスラモデルの配列から特定のモデルを渡して、イメージをフォルダーにダウンロードします.

    5 .画像のチェックアウト


    files = get_image_files(path)
    len(files)
    

  • 行1:ちょうど'画像'フォルダ内のすべての画像を取得します.
  • *行2 *:これは、合計またはファイルの数を印刷します.
  • 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 :モデルとして入力とカテゴリとしてイメージに基づいているので、我々は'ブロック=(imageblock、categoryブロック)を使用します.

  • 2行目:すべてのイメージファイルを取得します.

  • 行3 : yは出力として考えられますので、
    私たちが新しいイメージを分類するとき、我々の出力が何であるかは、イメージが位置するフォルダの名前です.

  • データセットの20 %を検証セットに分割しました.

  • ここで、我々は、データセットの均一性を維持するために128×128の正方形にそれらをすべて変えることによって、我々のイメージを変えます.
  • 7 .データの読み込み


    data_load = data.dataloaders(path)
    
  • ここでデータを最終的にDataAladerにロードします.
  • 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 Factoryメソッドを使用すると、データに適したカスタムヘッドを指定したアーキテクチャから自動的に事前にモデルを取得することができます.
    あなたのモデルの仕上げトレーニングの後、このようなことを見なければなりません.

    では、混乱行列を見て、モデルがどのように実行されたかを見てみましょう.
    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をテストする.
    以下のようになります.

    私は現在の展開に取り組んでいるし、質問があれば尋ねる!

    あなたは私のgithubのすべてのコードを見つけることができますHERE . 閉じるこの動画はお気に入りから削除されています🌟 !!

    私はまた、私の個人的なサイト上の書き込みブログでYouTubeのコンピュータサイエンス関連のコンテンツを作成します。🧡✔


    あなたが好きで、何かを学んで、コメントをして、私にあなたの考えを知らせさせてください。🤞😃