@ [TOC](TensorflowAPI的环境构建)
#下载对应tensorflow版本的API
1.首先要明确自己下载其中tensorflow版本的API
[tensorflow各版本的CUDA和Cudnn版本对应关系](https://blog.csdn.net/qq_27825451/article/details/89082978)![在这里插入图片描述(https://img-blog.csdnimg.cn /2020080310452154.png?x-oss-process=图像/水印,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDI2ODIwOA ==,FF_16,color_
2.下载Tensorflow对象检测
[API网址](https://github.com/tensorflow/models)通过标签标签选择对应的版本,在这里我下载的是1.120的版本,进入此版本的目录之后,右上角下载zip就是对应的版本从github上下载项目(右上角“克隆或下载”-“ DownloadZIP”),下载到本地目录(避免中文),解压。
![在这里插入图片描述(https://img-blog.csdnimg.cn/20200803104641123.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZGGGG_FA_L_N
我的下载目录如下,自己根据自己的需求选择目录即可![在这里插入图片描述](https://img-blog.csdnimg.cn/20200803104652267.png)##配置对应的tensorflow环境这一步的如果没有阿纳康达,CUDA,CUDNN,参考链接进行配置](https://blog.csdn.net/weixin_44268208/article/ details / 96455642)使用Windows + R:运行窗口,输入cmd打开命令窗口:命令窗口中输入以下命令,进行环境配置
这里我配置的是3.6的python环境,不写版本默认下载最高版本,tfAPI是我给这个环境起的名字。
康达创建--name tfAPI蟒= 3.6 ```激活环境```畅达激活tfAPI ```下载对应版本的tensorflow,注意命名和之前有所变化,-i后面是更多源大的网址,可以自行选择[参考连接](https://blog.csdn.net/panyingzeng/article/details/105000714)```PIP安装-i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow GPU的== 1.12.0 ```4.验证tensorflow安装成功,从命令窗口进入蟒蛇进行验证,出现以下内容都是安装成功[在这里插入图片描述(HTTPS:// IMG-博客csdnimg CN / 20200803104954632.png?X-oSS-过程=图像/水印,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDI2OFFwOA,颜色为[107-oss-过程=图像/水印,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDI2ODIwOA ==,size_16,color_FFFFFF,t_70)# #5。Protobuf安装与配置
在https://github.com/google/protobuf/releases网站中选择windows版本(最下面),解压后将bin文件夹中的【protoc.exe】放到C:\ Windows
在模型\研发\目录下打开命令行窗口,输入:输入下面这个命令不报错即为成功```。#来自tensorflow /模型/ protoc object_detection / PROTOS / * .proto --python_out = ```在这一步有时候会出错,可以尝试把/*.proto这部分改成文件夹下特定的文件名,一个一个试,每运行一个,文件夹下应该出现对应的.py结尾的文件。不报错即可。## 6.PYTHONPATH环境变量设置在'此电脑'-'属性'-'高级系统设置'-'环境变量'-'系统变量'中新建称为'PYTHONPATH'的变量,将模型/研究/及模型/研究/ slim两个文件夹的完整目录添加,分号替换,效果如下图:![在这里插入图片描述(https://img-blog.csdnimg.cn/20200803105127646.png?x- OSS-过程=图像/水印,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDI2ODIwOA ==,size_16,color_FFFFFF,t_70)可以测试的API,在模型/科研/文件夹下测试:盒品带在目录模型\研究\ object_detection找到object_detection_tutorial.ipynb文件,可以使用jupyter进行运行,也可以使用Pycharm进行运行` `
在numpy为np的ossix.moves.urllib为urllib的sys文件中导入tar文件流tensorflow为tf的zip文件从distutils.version开始从集合StrictVersion从io传递defaultdict从matplotlib到StringIO从matplotlib到pyplot作为从PIL到图像的PLT#这是必需的,因为笔记本存储在object_detection文件夹中。来自object_detection.utils的sys.path.append(“..”)如果StrictVersion(TF。__版本__)<StrictVersion(“ 1.9.0'):导入('请升级TensorFlow安装到v1.9。*或更高版本!)#需要显示图像。#%matplotlib从utils内联约会utils✓label_map_util从vissutil视觉化_utils#要下载的模型。'http ://download.tensorflow.org/models/object_detection/'#冻结检测图的路径。这是对象检测的实际模型。PATH_TO_FROZEN_GRAPH= MODEL_NAME +'/ Frozen_inference_graph .pb'#用一个框PATH_TO_LABELS = os .path.join('数据','mscoco_label_map.pbtxt')打开器= urllib.request.URLopener()打开器。获取(DOWNLOAD_BASE + MODEL_FILE,MODEL_FILE)tar_file = tarfile。 getmembers():文件名= os.path.basename(文件名)如果文件名中的'frozen_inference_graph.pb':tar_file.extract(文件,os.getcwd())detection_graph = tf.Graph(),带有detection_graph .as_default():od_graph_def = tf.GraphDef(),带有tf。“” category_index = label_map_util.create_category_IMAGET_IMAGET_IMAGET =
[os.path.join(PATH_TO_TEST_IMAGES_DIR,'image {}。jpg'.format(i))对于范围为i(1,3)的i)#输出图像的尺寸,以英寸为单位。IMAGE_SIZE=(12, 8)def run_inference_for_single_image(图像,图形):带有graph.as_default():tf.Session()评估:#获取输入和输出张量的句柄ops = tf.get_default_graph()。get_operations()all_tensor_names = {在tensor_dict = {}在['num_detections','detection_boxes','detection_scores,'detection_classes','detection_masks'中键入tensor_name = key +':0',如果all_tensor_names中的tensor_name:tensor_dict [key] =tf。get_default_graph()。”] [0] ,tf。int32)detection_boxes = tf。切片(detection_boxes,[0,0],[real_num_detection,-1])detection_masks = tf。切片(detection_masks,[0,0,0],[real_num_detection]] ,,,-1,-1])detection_masks_reframed =utils_ops。reframe_box_masks_to_image_masks(detection_masks,detection_boxes,图像)。形状[0],图像。形状[1])detection_masks_reframed =
.cast(tf.greater(detection_masks_reframed,0.5),tf.uint8)
#顺序程序,按批处理尺寸
tensor_dict ['detection_masks'] = tf.expand_dims(
detection_masks_reframed,0)
image_tensor = t(get_get_graph).get_tensor_by_name('image_tensor:0')#正在运行output_dict = sess.run(tensor_dict,feed_dict = {image_tensor:image,0)})#所有这些都是float32 numpy方法,因此将进行类型转换为适当的output_dict ['num_detections'] = int(output_dict ['num_detections'] [0])output_dict ['detection_classes'] = output_dict ['detection_classes'] [0] .astype(np.uint8)output_dict ['detection_boxes' ] = output_dict ['detection_boxes'] [0] output_dict ['detection_scores'] = output_dict ['detection_scores'] [0] 如果 output_dict中的“ detection_masks” :output_dict ['detection_masks'] = output_dict ['detection_masks'] [0]在TEST_IMAGE_PATHS中 返回image_path的output_dict : image = Image.open(image_path)
#稍后将使用基于数组的图像表示形式,以准备
带有框和标签的#结果图像。
image_np = load_image_into_numpy_array(image)
#扩展尺寸,因为模型期望图像具有以下形状:[1,None,None,3]
image_np_expanded = np.expand_dims(image_np,axis = 0)
#实际检测。
output_dict = run_inference_for_single_image(image_np,detection_graph)
#可视化检测结果。
vis_util.visualize_boxes_and_labels_on_image_array(
image_np,
output_dict ['detection_boxes'],
output_dict ['detection_classes'],
output_dict ['detection_scores'],
category_index,
instance_masks = output_dict.get('detection_masks'),
use_normalized_coordinates = True,
line_thickness = 8)
plt.figure(figsize = IMAGE_SIZE)
plt.imshow(image_np)```
##在运行过程中如果出现以下问题:
###如果出现ModuleNotFoundError:没有名为“ object_detection”的模块
在win10上转到(\ model master \ models-master \ research)在此路径中打开cmd并键入python setup.py install如果出现ModuleNotFoundError:没有名为“ nets”的模块[参考链接](https:// blog。 csdn.net/qq_37644877/article/details/92772820)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200803105338232.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDI2ODIwOA==,size_16,color_FFFFFF,t_70)
### 如果出现ModuleNotFoundError: No module named 'tensorflow.compat.v1'
[安装对应版本](https://blog.csdn.net/kudou1994/article/details/88427296)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200803105415615.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDI2ODIwOA==,size_16,color_FFFFFF,t_70)
### 如果出现AttributeError: keypoints
[参考链接](https://stackoverflow.com/questions/62296937/attributeerror-keypoints-object-detection-using-tensorflow-1-14)
照着回答1的人修改 Visualzation_utils和 object_detection_tutorial.py里面的代码,可以直接把他里面的代码拷贝过来https://github.com/osrf/tensorflow_object_detector/blob/master/src/object_detection/utils/label_map_util.py#L58
### 如果没有出现框框
[参考链接](https://blog.csdn.net/lalalanddd/article/details/105231015?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task -blog-BlogCommendFromMachineLearnPai2-1.channel_param)
### 如果出现ModuleNotFoundError: No module named 'nets'
[参考链接](https://blog.csdn.net/qq_37644877/article/details/92772820)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201222170631231.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDI2ODIwOA==,size_16,color_FFFFFF,t_70)
##注:整体文章参考链接[博客参考链接](https://blog.csdn.net/dy_guox/article/details/79081499?utm_source=app)