Classifying Images with ImageNet
一、ImageNet
有關ImageNet,以下是維基百科的說明
ImageNet项目是一个大型视觉数据库,用于视觉目标识别软件研究。该项目已手动注释了1400多万张图像[1][2],以指出图片中的对象,并在至少100万张图像中提供了边框[3]。ImageNet包含2万多个典型类别[2],例如“气球”或“草莓”,每一类包含数百张图像[4]。尽管实际图像不归ImageNet所有,但可以直接从ImageNet免费获得标注的第三方图像URL[5]。2010年以来,ImageNet项目每年举办一次软件竞赛,即ImageNet大规模视觉识别挑战赛(ILSVRC)。挑战赛使用1000个“整理”后的非重叠类[6],软件程序比赛正确分类和检测目标及场景。
將Nvidia網站圖像分類使用ImageNet所分享的模型實作
學習資料來源 https://github.com/dusty-nv/jetson-inference/blob/master/docs/imagenet-console-2.md
目前有很多深度學的神經網路是可以取的被使用的,包括辨識,檢測/定位和語義分析,目前最常被拿來學習的是影像辨識,尤其是 ImageNet已經有許多被訓練完非常精確的模型,也就是為什麼Nvidia直接在入門體驗上使用這個模型。
這兩個範例可以做適度的修改,有趣的是可以提供多種影像的來源方式(包含介面與通訊協定)達7種之多,輸出也有5種,其實已經包山包海了。
請參閱Camera Streaming and Multimedia
https://github.com/dusty-nv/jetson-inference/blob/master/docs/aux-streaming.md
二、開始吧
$ cd jetson-inference
切換到jetson-inference目錄
$ docker/run.sh
執行docker container
$ cd build/aarch64/bin/
切換到這個目錄喔,可以翻閱前面的其他文章
不然會出現 bash: ./imagenet.py: No such file or directory
預設提供了兩隻程式,我選擇python的
# C++
$ ./imagenet images/orange_0.jpg images/test/output_0.jpg # (default network is googlenet)
# Python
$ ./imagenet.py images/orange_0.jpg images/test/output_0.jpg # (default network is googlenet)
執行完畢
請到指定目錄檢視
有96.68%像橘子喔
來測試車子的影像辨識吧!
下載影片網址 https://drive.google.com/file/d/1Pu8J-2ZJLdJzV4rT_PVnYqaDH1CJMTKp/view?usp=sharing
將下載的影片搬到 jetson-inference/data/images
處理影片
如果是在本機端執行阿,就可以馬上看到辨識的結果喔,而且是即時的,不過...好像我下載的影片有點長啦...要耐心等待
# Python
$ ./imagenet.py images/car.mp4 images/test/output_car.mp4
辨識完成的影像
範例影片辨識
一樣需要先下載影片,然後做模型的辨識喔
# Download test video (thanks to jell.yfish.us) 這個是叫您下載影片
建議先切換到 jetson-inference/data/images資料夾,再執行這段下載程式碼
$ wget https://nvidia.box.com/shared/static/tlswont1jnyu3ix2tbf7utaekpzcx4rc.mkv -O jellyfish.mkv
# C++
$ ./imagenet --network=resnet-18 images/jellyfish.mkv images/test/jellyfish_resnet18.mkv
# Python 我選擇這個
$ ./imagenet.py --network=resnet-18 images/jellyfish.mkv images/test/jellyfish_resnet18.mkv
辨識中
辨識完成
三、使用不同的模型
接下來測試其他的模型(--network=resnet-18),我一樣是選用python程式
當選之前沒用過的辨識模型,第一次載入需要比較久的時間喔
# C++
$ ./imagenet --network=resnet-18 images/jellyfish.jpg images/test/output_jellyfish3.jpg
# Python
$ ./imagenet.py --network=resnet-18 images/jellyfish.jpg images/test/output_jellyfish3.jpg
使用resnet18模型辨識
使用Imagenet模型辨識
四、其他模型
我們下載的模型是detectnet的,所以就不是使用 imagenet.py,要改用 detectnet-console.py
# Python
$ ./detectnet-console.py images/a01.jpeg images/test/output_a01.jpg
$ ./detectnet-console.py images/a02.jpg images/test/output_a02.jpg
a01.jpeg
a02.jpg