我目前在学习百度的深度学习框架----paddlepaddle,在平台上运行出结果是比较简单的,因为有算力的支持,一个模型能很快地训练出来.
大家可以在AI Studio上FORK这个项目,下载数据集和代码:
但是我想检验一下学习的效果如何,于是我尝试着在我自己的电脑上运行一个目标检测的项目,大家也可以通过以下代码来下载数据集:
import sys
import os.path as osp
import logging
DATASETS = {
'fruit': ([(
'https://dataset.bj.bcebos.com/PaddleDetection_demo/fruit-detection.tar',
'ee4a1bf2e321b75b0850cc6e063f79d7', ), ], ["fruit-detection"]),
}
def download_dataset(path, dataset=None):
if dataset not in DATASETS.keys():
logger.error("Unknown dataset {}, it should be "
"{}".format(dataset, DATASETS.keys()))
return
dataset_info = DATASETS[dataset][0]
for info in dataset_info:
get_path(info[0], path, info[1], False)
logger.info("Download dataset {} finished.".format(dataset))
logging.basicConfig(level=logging.INFO)
download_path = osp.split(osp.realpath(sys.argv[0]))[0]
download_dataset(download_path, 'fruit')
飞桨(PaddlePaddle)是国际领先的端到端开源深度学习平台,集深度学习训练和预测框架、模型库、工具组件和服务平台为一体,拥有兼顾灵活性和高性能的开发机制、工业级的模型库、超大规模分布式训练技术、高速推理引擎以及系统化的社区服务等五大优势,致力于让深度学习技术的创新与应用更简单。
今天的内容需要用到paddlepaddle,大家可以到官网上下载安装:
https://www.paddlepaddle.org.cn/
安装好以后,就可以在本地运行项目了,由于在本地运行,我需要在cli.py里配置一下网络:
该项目默认使用GPU,然而,我的电脑没有GPU…
所以它报错了:
所以我们来到yolov3_mobilenet_v1_fruit.yml这个文件里改一下配置:
我们还需要改一下一些文件的路径:
把anno_file改成本地的地址
开始训练!在百度云的服务器上跑这个程序,大概只需要12分钟,而在本地使用cpu跑的时候,速度很慢…
太慢了…
当然,paddlepaddle还有一个更快的方式,可以用paddlehub上直接下载模型文件,以下是yolov3_coco2017
使用方法特别简单:
import paddlehub as hub
yolov3 = hub.Module(name="yolov3_coco2017")
test_img_path = "/Users/Administrator/Desktop/apple_demo.jpg"
# set input dict
input_dict = {"image": [test_img_path]}
# execute predict and print the result
results = yolov3.object_detection(data=input_dict)
for result in results:
print(result['path'])
print(result['data'])
这是任选的两张待测试图片(训练的图片):
以下是非训练/验证的图片:
这是我自己拍的照片,效果不是很好.
当然,做到这一步还远远不够,2019年12月7日,我参加了华为云DevRun Summit: Login 2020,大会上Android无障碍工程师吴益明让我感触很深,他说:“视障不是Bug,只是一个Runtime。”
信息无障碍研究会高级信息无障碍工程师 吴益明
(图片源自公众号: 华为云和TA的朋友们)
作为一名开发者,我开始考虑,如何通过我做的程序,让1700万障碍人群摆脱束缚,享受平等自由的世界,因此,我做了一个小小的语音合成demo:
import win32com.client
speaker = win32com.client.Dispatch("SAPI.SpVoice")
text = "输入要语音合成的内容"
speaker.Speak(text)
短短四行代码,其实就能实现这一功能,以下是测试效果,我做成了一个视频:
但是,这还远远不够…
当前,技术的颠覆性发展不断激励开发者们打破故有的思维方式和商业模式,以5G、云和AI为锚点,探索技术与行业的无缝结合。作为一名开发者,我会尽我所能,构建万物互联的智能世界,为盲人朋友带来福音。