使用EasyDLとOpenCVの組み合わせを - 絵にターゲットオブジェクトを見つけることについて


1.一般化

  EasyDLは、モデルのトレーニングとサービスプラットフォームを学ぶ自動化された深さにBaiduのAIであります

  使用EasyDLは、ターゲットオブジェクトをブロックし、絵を描くように返すことによって、結果のOpenCVを使用し、その後のpython APIに対応したモデルを呼び出し、あなたは雲の認識にアップロードした画像を実現し、認識結果が返さ受け取ることができ、訓練されたモデルであり、また、座標値取得中心とすることができる
  ことが配備のさまざまを提供し、さらに、後者の缶は、ローカルまたはプライベートクラウドにモデルを展開用途展開する方が便利であることができます


2. EasyDLトレーニングモデル

EasyDLリンク、ログインするか、することができ、ログインアカウントを使用して、Baiduは、Baiduのネットワークディスクを使用する前に、アカウントを登録する必要があり、あなたは本当の名前を使用する必要があります

 一例として、物体検出にここでは、古典的なバージョンを使用して、トレーニングを開始するにはクリックしてください

 モデルを作成し、その後、私のモデルにまず、そして、あなたは、関連する情報を入力することができ、次のステップは、あなたが作成された新しいモデルになることができます

 新しいデータセットを作成するには、写真をアップロードするには、次のオプションを選択し、画像の命名要件は、中国の名前と最高のシーンの裏で絵複数の角度として認識することが、複数の光を持っていない、25枚の+写真の必要性の後はい、しかし、OK 40 +は、クリック、アップロードが完了すると、そこにある最高のリターン

 あなたは、データセットの状態を完了することができ、処理されるのを待って、プロセスにまだある見ることができ、その後、ラベルの裏をクリックして、写真の訓練の必要性は、対象物を特定する必要性をマークするために、タグを追加し、あなたが中国の名前を使用することはできませんし、ターゲットオブジェクト箱入り、その後に対応するノートをクリックし
 、以下のように複数のオブジェクトを識別するために行われ、保存することができるオブジェクト複数のタグによって、手動で画像をマークする必要があり、上記の点に画像を選択し、この方法では、全ての写真は私のページへのモデルのバックが完了した後、マークすることができます

 戻る私のモデルのページに、データセットを追加するために、トレーニングを開始した後、あなたは私のモデルページ内の訓練の状況を見ることができ、例えばパブリッククラウドを展開する、あなたもSMSを設定することができ、次の訓練、訓練するモデルの必要性を選択し、選択思い出させるには、約30分の40枚の写真を訓練することが期待されます

 トレーニングが完了すると、モデルがテストされ、その後、オンライン適用することができ、このプロセスは少し長くすることができ、高速で、それは同じ日に行うことができ、次の日が最も遅い、Baiduの雲は、顧客(プッシュのような程度の呼び出しがあるかもしれませんそれを広告する)、最良の答えも、プロジェクトを行う準備ができ、あなたが勉強していること、テスト、彼女は深くより多くの情報をお尋ねし続けた場合、あなたは開示することを言うと、あなただけの罰金に連絡する必要がある場合


PythonのAPIの3コールEasyDL

 監査の終わり、その後、私のモデルのページに、サービス情報をクリックして、あなたはURLモデルは、(後で使用される)を参照することができ、その後、すぐにクリックしてください

 でEasyDLクラシックコンソールアプリケーションを作成するには、アプリケーションの詳細ページにAKとSKを取得し、その後、関連する情報を入力することができます

 その後、あなたは次のリンクをコピーし、AKとSKは、その(NO []が存在しないことに注意)を修正した後、ブラウザを使用し、API鍵と秘密鍵でAKとSKの上使用して、access_tokenは取得する必要があり、アプリケーションの詳細リンクを開く、access_tokenは取得部は、コードに実装することができる、access_tokenは得ることができ

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度云应用的AK】&client_secret=【百度云应用的SK】

 ドキュメントが使用して見つけることができるドキュメントオブジェクト検出API呼び出しのクラシックバージョンを

 以下は、公式のpythonの例であり、それはのpython3でurllib2のを使用していないことに注意する必要があります

# encoding:utf-8
import urllib2

'''
easydl物体检测
'''

request_url = "【接口地址】"

params = "{\"image\":\"sfasq35sadvsvqwr5q...\"}"

access_token = '[调用鉴权接口获取的token]'
request_url = request_url + "?access_token=" + access_token
request = urllib2.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/json')
response = urllib2.urlopen(request)
content = response.read()
if content:
    print content


 V1バージョン(YOLOV3)サービス、書き込みを呼び出すコード(のpython3)のために、サービスのAPIに従ってください。他の差画像認識サービスは、JSON方法リクエストへのカスタマイズされた画像認識サービスであることに留意されたいです。

 ここでは参照目的のために私のコードは、間違って、正しいが、私は願っていた場合にまだあります!


import time
import base64
import urllib3,json
import cv2


test_img_path = "E:/study/python/test4.jpg"
save_img_path = "E:/study/python/resule.jpg"

#access_token = "24.ee098060f9d444677770e289b6d8780b.*****************" #自己的access_token
#module_url = 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/d********' #当审核通过后,可以在我的模型页面,进入服务详情可以查看到

def img_show(name,img_path):
    img = cv2.imread(img_path)
    print('shape:',img.shape)
    img = cv2.resize(img, (0, 0), fx=0.5, fy=0.5, interpolation=cv2.INTER_NEAREST)
    cv2.imshow(name ,img)
    cv2.waitKey(0)

def draw_result_img(originfilename,results,resultfilename):
    from PIL import Image, ImageDraw,ImageFont
    image_origin = Image.open(originfilename)
    draw = ImageDraw.Draw(image_origin)
    setFont = ImageFont.truetype('C:/windows/fonts/simhei.ttf', 66)
    for result in results:
        location = result['location']
        top_x,top_y = location['left'],location['top']
        button_x,button_y = (location['left']+location['width']),(location['top']+location['height'])
        center_x,cenrer_y = int(top_x+(location['width']/2)),int(top_y+(location['height']/2))
        print('目标物体中心坐标:',center_x,cenrer_y)
        draw.rectangle((top_x,top_y,button_x,button_y),outline = "red")
        draw.ellipse((center_x-10,cenrer_y-10, center_x+10,cenrer_y+10), fill = (255, 0, 0))
        draw.text((top_x,top_y), result['name']+', Score:'+str(round(result['score'],3)),"yellow",font=setFont)
    image_origin.save(resultfilename, "JPEG")
    img_show('result',save_img_path)

def get_test_img():
    img_show('test_img',test_img_path)
    with open(test_img_path, 'rb') as f:
        img = base64.b64encode(f.read())
        #img参数进行一下str转换    
        params={'image':''+str(img,'utf-8')+''}
        #对参数params数据进行json处理
        encoded_data = json.dumps(params).encode('utf-8')
        return encoded_data

def get_result():
    encoded_data = get_test_img()
    url = "{}?access_token={}".format(module_url,access_token)
    begin = time.perf_counter()
    request = urllib3.PoolManager().request('POST', 
                          url,
                          body = encoded_data,
                          headers={'Content-Type':'application/json'})
    #对返回的byte字节进行处理。Python3输出位串,而不是可读的字符串,需要进行转换
    content = str(request.data,'utf-8')
    end = time.perf_counter()
    if content:
        data = json.loads(content)
        utime = end - begin
        return data,utime
    else:
        return False


data,utime = get_result()
results = data['results']
print(results)
print('处理时长:'+'%.2f'%(utime)+'秒')
draw_result_img(test_img_path,results,save_img_path)



公開された17元の記事 ウォン称賛33 ビュー10000 +

おすすめ

転載: blog.csdn.net/fengge2018/article/details/105048268