提交 29e0bd01 编写于 作者: littletomatodonkey's avatar littletomatodonkey

fix infer for dir

上级 8a80a7da
...@@ -12,13 +12,17 @@ ...@@ -12,13 +12,17 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import utils
import argparse
import numpy as np
import paddle.fluid as fluid
from ppcls.modeling import architectures
from ppcls.utils.save_load import load_dygraph_pretrain from ppcls.utils.save_load import load_dygraph_pretrain
from ppcls.modeling import architectures
import paddle.fluid as fluid
import numpy as np
import argparse
import utils
import os
import sys
__dir__ = os.path.dirname(os.path.abspath(__file__))
sys.path.append(__dir__)
sys.path.append(os.path.abspath(os.path.join(__dir__, '../..')))
def parse_args(): def parse_args():
...@@ -66,6 +70,23 @@ def postprocess(outputs, topk=5): ...@@ -66,6 +70,23 @@ def postprocess(outputs, topk=5):
return zip(index, prob[index]) return zip(index, prob[index])
def get_image_list(img_file):
imgs_lists = []
if img_file is None or not os.path.exists(img_file):
raise Exception("not found any img file in {}".format(img_file))
img_end = ['jpg', 'png', 'jpeg', 'JPEG', 'JPG', 'bmp']
if os.path.isfile(img_file) and img_file.split('.')[-1] in img_end:
imgs_lists.append(img_file)
elif os.path.isdir(img_file):
for single_file in os.listdir(img_file):
if single_file.split('.')[-1] in img_end:
imgs_lists.append(os.path.join(img_file, single_file))
if len(imgs_lists) == 0:
raise Exception("not found any img file in {}".format(img_file))
return imgs_lists
def main(): def main():
args = parse_args() args = parse_args()
operators = create_operators() operators = create_operators()
...@@ -78,22 +99,25 @@ def main(): ...@@ -78,22 +99,25 @@ def main():
with fluid.dygraph.guard(place): with fluid.dygraph.guard(place):
net = architectures.__dict__[args.model]() net = architectures.__dict__[args.model]()
data = preprocess(args.image_file, operators)
data = np.expand_dims(data, axis=0)
data = fluid.dygraph.to_variable(data)
load_dygraph_pretrain(net, args.pretrained_model, load_dygraph_pretrain(net, args.pretrained_model,
args.load_static_weights) args.load_static_weights)
net.eval() image_list = get_image_list(args.image_file)
outputs = net(data) for idx, filename in enumerate(image_list):
outputs = fluid.layers.softmax(outputs) data = preprocess(filename, operators)
outputs = outputs.numpy() data = np.expand_dims(data, axis=0)
data = fluid.dygraph.to_variable(data)
probs = postprocess(outputs) net.eval()
rank = 1 outputs = net(data)
for idx, prob in probs: outputs = fluid.layers.softmax(outputs)
print("top{:d}, class id: {:d}, probability: {:.4f}".format(rank, idx, outputs = outputs.numpy()
prob))
rank += 1 probs = postprocess(outputs)
rank = 1
print("Current image file: {}".format(filename))
for idx, prob in probs:
print("\ttop{:d}, class id: {:d}, probability: {:.4f}".format(
rank, idx, prob))
rank += 1
return return
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册