PlaidML plaidvision - eiichiromomma/CVMLAB GitHub Wiki
PlaidML) plaidvision
(PlaidMLを使った物体認識のサンプル
導入
配布元に書かれている通り。PlaidML導入済みの仮想環境で
git clone https://github.com/plaidml/plaidvision
cd plaidvision
pip install -r requirements.txt
で導入完了
物体認識
python plaidvision.py
を実行すると
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
usage: plaidvision.py [-h] [--plaid | --no-plaid] [--fp16] [-v [VERBOSE]]
[--input INPUT] [--output OUTPUT] [--json JSON]
[--headless] [--weights WEIGHTS] [--frames FRAMES]
{inception_v3,mobilenet,resnet50,vgg16,vgg19,xception}
plaidvision.py: error: the following arguments are required: model
に出てくる通りで
- inception_v3
- mobilenet
- resnet50
- vgg16
- vgg19
- xception
からモデルを選べる。例えばxceptionの場合
python plaidvision.py --plaid xception
で起動する。
metal_amd_radeon_r9_m380.0の環境で
VGAで10fpsくらいは出る。
なお,WebCAMが複数ある場合はinputオプションで指定できる筈だが,macOSの場合デバイスのパス指定は面倒なのでplaidvision.pyの
class Input:
def __init__(self, path, stop):
self.path = path
self.count = 0
self.stop = stop
def open(self):
if self.path:
self.cap = cv2.VideoCapture(self.path)
else:
self.cap = cv2.VideoCapture(0)
のVideoCapture(0)の数字を書き換えれば良い。あるいはself.pathが数字か判断して数字だったらintにすれば--input 1みたいな指定が出来る。 雑だが下記のようにすればデバイス番号指定でいける。
--- a/plaidvision.py
+++ b/plaidvision.py
@@ -71,7 +71,10 @@ class Input:
def open(self):
if self.path:
- self.cap = cv2.VideoCapture(self.path)
+ if self.path.isdigit():
+ self.cap = cv2.VideoCapture(int(self.path))
+ else:
+ self.cap = cv2.VideoCapture(self.path)
else:
self.cap = cv2.VideoCapture(0)
self.cap.set(CAP_PROP_FRAME_WIDTH, CAP_WIDTH)