人工智能现在可以说是相当的火爆的,像现在的美图秀秀,百度的OCR文本识别等等我们身边的应用都有人工智能的支持。作为一个还刚刚接触了一丢丢这方面知识的小菜鸟的我,想要将目前已经了解的知识化为实践,好好地吸收一下,所以今天就准备自己动手制作一个用python做的简单目标检测小程序吧。
1.第一步:实现简单的界面设计(GUI),使用的是python的内置库tkinter,我也是才了解的,所以就只是简单地对界面进行了下布局,样式和代码如下,代码量很少。
图片来自网络,侵删
import tkinter as tk
from PIL import ImageTk, Image
import tkinter.filedialog as fd
root = tk.Tk()
root.title("目标检测小程序")
# 背景
canvas = tk.Canvas(root, width=800, height=600, bd=0, highlightthickness=0)
imgpath = 'bg.gif' #这里注意,图片只能是gif格式的,否则会报错
img = Image.open(imgpath)
photo = ImageTk.PhotoImage(img)
canvas.create_image(0,0,image=photo)
canvas.pack()
label = tk.Label(text="目标检测",width=100,height=50,font=("宋体",32))
canvas.create_window(100, 50, width=200, height=50,
window=label)
btn = tk.Button(text="上传文件",command=uploadFile)
canvas.create_window(420, 275, width=200, height=50,
window=btn)
root.mainloop() #显示窗口
第二步:实现上传文件,并实现图片检测,这里的代码也十分简单,通过上传文件的按钮获取到选择的文件的绝对路径,然后利用python的os.system去执行cmd的命令,这里执行的目标检测测试的命令是pytorch版的yolov3算法,这里贴下pytorch版yolov3的GitHub地址:
https://github.com/ultralytics/yolov3
具体代码如下:
def uploadFile():
file_name = fd.askopenfilenames()
print(file_name)
str = "python detect.py --name coc.names --cfg yolov3-tiny.cfg --weights yolov3-tiny.weights --source %s"%file_name
print(str)
os.system(str)
可以一起来看一下效果,使用的权重是yolov3-tiny.weights,也可以去官网下载yolov3.weights替换进行测试。
image.png
总结:说实话今天文章并没有什么技术分享,就只是可以说给一个非常牛逼的模型套了个壳子,能够进行可视化的操作,而不是在命令行输入命令去执行,可以说这篇文章就是简单了解一下目标检测哈。