问题描述
我想使用Nvidia GPU而不是cpu来改善CNN面部识别代码。因此,我在these instructions之后找到并安装了特定的dlib_cuda。
安装进行得很顺利,所以我检查了python环境中的dlib是否使用cuda:
Python 3.6.9 (default,Jul 17 2020,12:50:27)
[GCC 8.4.0] on linux
>>> import dlib
>>> dlib.DLIB_USE_CUDA
True
>>>print(dlib.cuda.get_device())
1
因为它对我来说看起来不错,所以我尝试再次使用我的代码,但是它们没有任何改善,并且在检查GPU之后,它仍然没有使用。所以我尝试了以下命令:
>>> print(dlib.cuda.get_device())
它返回:
0
我不确定这些消息的含义。经过大量研究,我仍然无法确定dlib没有使用我的GPU。之前有人遇到过同样的问题吗?
我的工作区在Jetson AGX Xavier(Jetpack 4.4)上,并与Ubuntu和Cuda版本10.2.89一起运行
PS:我还使用了tensorFlow和Keras库,它们都已安装为与CUDA环境一起使用
解决方法
如果您熟悉Tensorflow和Keras,建议您使用Deepface进行人脸识别。它包装了最新的人脸识别模型,并在后台构建Keras模型。这就是为什么,如果您安装了tensorflow-gpu软件包,其默认用法将在GPU上执行。
import json
import urllib.parse
import boto3
import csv
s3 = boto3.client('s3')
def lambda_handler(event,context):
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'],encoding='utf-8')
file_name = s3.get_object(Bucket=bucket,Key=key)
csv_reader = csv.reader(file_name)
with open('/outputlv/output.csv','w') as output_file:
wtr = csv.writer(output_file)
for i in csv_reader:
wtr.writerow(i[0],i[2],i[3])
target_bucket = 'outputlv'
final_file = 'outputlv/output.csv'
s3.put_object(Bucket=target_bucket,Key=final_file)