基於機器學習的老司機車牌自動推薦系統Bustag

Github項目地址:https://github.com/gxtrobot/bustag

基於機器學習的老司機車牌自動推薦系統


Bustag 是一個基於我開發的 python 異步爬蟲框架開發aspider的自動車牌推薦系統, 系統原理為定時爬取最新車牌信息, 然後可以對車牌進行打標(標示是否喜歡), 打標車牌到一定數量可以進行訓練並生成模型, 以後就可以基於此模型自動對下載的車牌進行預測是否喜歡, 可以過濾掉大量不喜歡的車牌, 節約時間

Python in Action 學習視頻發布

https://github.com/gxtrobot/pyinaction

為提高解決問題效率 ,建了個qq群

QQ群: 941894005

注意, 該群僅討論python學習, 爬蟲開發, aspider 框架學習開發, Bustag系統bug, 運行問題等, 請勿討論無關主題

免責聲明: 本軟件僅用於技術學習使用,禁止用於商業用途,使用本軟件所造成的的後果由使用者承擔! 如果你覺得這個軟件不錯, 可以請我喝杯冰闊落 ^_^.

windows, mac 綠色版下載地址

鏈接: https://pan.baidu.com/s/1pqarq7fOXjsbad0WN4Uaaw 提取碼: budu

壓縮包密碼: gxtrobot

docker 版本同步更新

運行 docker pull gxtrobot/bustag-app:latest 後重新啟動項目即可

使用須知

只需在data目錄下創建config.ini, 然後啟動系統, 訪問localhost:8000

使用視頻

鏈接: https://pan.baidu.com/s/1pqarq7fOXjsbad0WN4Uaaw 提取碼: budu

在視頻目錄下

  • 群暉docker安裝bustag 視頻發布(2019-10-16)
  • bustag最新使用視頻發布(2019-10-15)
  • linux/mac docker版本安裝
  • win10 docker版本安裝

更新

release 0.2.1(2019-10-12)

  • 修復幾個bug
  • 增加系統啟動錯誤信息打印, 方便排查

該版本主要是為了更好發現錯誤, 如果能正常運行的可以不更新

系統功能

  • 自動抓取最新車牌信息, 抓取頻率可以自定義
  • 系統啟動後自動開啟一次下載, 然後安裝設置抓取頻率下載
  • 車牌打標功能
  • 模型訓練, 基於當前所有打標數據訓練模型
  • 有了模型後, 自動預測判斷是否喜歡
  • 手動上傳番號, 本地文件管理
  • 數據庫打標數據導入
  • Docker 鏡像一鍵運行, 省去新手配置項目的麻煩
  • 項目訪問地址: localhost:8000

系統截圖(隱藏了左邊封面圖片)

  • 推薦頁面 
  • 打標頁面 
  • 本地文件頁面 
  • 本地番號, 鏈接上傳頁面 
  • 模型頁面 
  • 數據頁面 

如何運行項目

windows , mac綠色版如何使用

下載zip包後解壓縮到任意目錄, 然後在目錄下的data目錄里, 創建文件config.ini – windows 版: 執行(雙擊)bustag.exe – mac 版: 執行(雙擊)bustag – 瀏覽器訪問: localhost:8000, 訪問成功說明運行正常, 如果訪問不成功, 可以看bustag程序窗口有無報錯

本地源代碼安裝

懂 python 開發的可以 clone 本項目, 建立一個虛擬環境並按照 requirements.txt 的 python 包後, 在項目根目錄下 直接運行

python bustag/app/index.py

或者安裝了gunicorn
gunicorn bustag.app.index:app --bind='0.0.0.0:8000'

使用 docker 運行(推薦)

  1. 建立一個目錄, 如 bustag, 然後在該目錄下建一個子目錄 data, data 目錄用於保存配置文件以及下載數據的數據庫
  2. 在 data 下需要建立一個文件, config.ini, 該文件用於設置爬取的初始地址, 以及每次下載的最大數量
  3. 運行命令
linux, mac
  docker run --rm -d -e TZ=Asia/Shanghai -e PYTHONUNBUFFERED=1 -v $(pwd)/data:/app/data -p 8000:8000 gxtrobot/bustag-app

  windows powershell
  docker run --rm -d -e TZ=Asia/Shanghai -e PYTHONUNBUFFERED=1 -v ${PWD}/data:/app/data -p 8000:8000 gxtrobot/bustag-app


注: -e TZ=Asia/Shanghai , 指的是docker container的時區設置, 如果需要其他時區可自行設置, 如果不設置默認為UTC時區
  -e PYTHONUNBUFFERED=1 , 指的是顯示所有log輸出, 如果不設置, 那隻能看到debug 的錯誤log日誌

如何使用項目

請按照以下順序

  1. 到打標頁面進行打標, 達到一定數量(喜歡+不喜歡), 比如 300
  2. 到其他頁面訓練模型
  3. 坐等系統自動推薦
  4. 在推薦頁面進行確認(確認過的數據轉為打標數據)
  5. 積累更多打標數據, 再次訓練模型, 打標數據越多模型效果越好

data 目錄文件說明

|____bus.db
|____config.ini
|____crontab.txt
|____model
| |____ label_binarizer.pkl
| |____model.pkl
  • config.ini, (系統配置文件, 必須, 系統啟動時候需要此文件, 參考文件)
    • root_path: 制定bus網站主頁地址, 爬蟲起始地址, 由於地址可能變化, 確保本機能夠訪問該地址, 如果需要代理才能訪問, 必須開啟全局代理, 系統本身無代理設置
    • count: 每次下載總數, 建議不要太多, 500以下比較好
    • interval: 每次下載間隔時間, 單位為秒, 建議不要低於1800秒
  • bus.db (數據庫文件, 可選, 但是可以放一個現成的庫, 有 2000 條數據, 方便直接開始打標, 不需要等下載)
  • crontab.txt (定時下載配置文件, 可選, 參考例子)
  • model 目錄(系統訓練生成的模型)

其他問題

  1. 改變自動下載的頻率 修改config.ini的interval 參數即可, 單位是秒, 比如修改為一小時更新一次為 interval=3600
  2. 改變下載初始 url 因為該 url 會經常改變, 所有系統的 config.ini -> download -> root_path 定義了初始 url, 可以根據需要改變
  3. 是否可以使用代理 目前系統還沒加入代理功能, 不過可以在 docker 設置代理訪問
  4. 下載數量多少合適 鑒於爬蟲的穩定性, 不建議每次下載太多, 也可能會給 bus 服務器帶來壓力, 如果需要, 初次使用可以加大到 1000, 這樣可以下載多點初始數據用於打標, 後面可以改為 300
  5. 模型效果如何 經過一些測試, 最終使用了 KNN 模型, 效果的話談不上非常好, 在準確率上還可以, 不過召回率相對低一些, 也就是說推薦的準確率相對高點, 但是會漏掉一些喜歡的數據. 所以, 鑒於定期對推薦數據進行確認, 經過確認後, 推薦數據轉為打標數據, 然後重新訓練,打標數據越多效果越好
  6. 要多少打標數據才能訓練模型 建議至少達到 300 打標數據(包括喜歡, 不喜歡), 如何嘗試訓練模型, 並查看模型效果值, 如不滿意可以增加訓練數據並重新訓練
  7. 模型用了什麼數據訓練 模型目前主要使用了各種標籤數據, 比如影片分類, 女優名等等, 目前沒有使用到標題
  8. 如何改變服務器運行端口 服務器默認為 8000 端口, 如果需要改變, 可以修改啟動 docker 容器命令, 比如 8000
修改為8000端口, 注意:後面的8000不要變, 然後可以通過localhost:8000訪問

docker run --rm -d -v $(pwd)/data:/app/data -p 8000:8000 gxtrobot/bustag-app
  1. 如何備份數據庫 系統使用的數據庫保存在 data 目錄下的 bus.db, 如果有需要可以將此文件拷貝一份作為備份, 比如在打標測試模型時, 如果不想使用當前打標數據, 可以將數據庫恢復到原來的版本 該數據庫為 sqlite 格式, 可以直接使用軟件打開, 比如 DB Browser for Sqlite, 該軟件支持多平台

給TA打賞
共{{data.count}}人
人已打賞
網址類軟件類

FlexClip Video Maker - 超好用的線上免費視頻製作工具

2020-3-25 11:28:43

軟件類

向日葵遠程控制 遠程辦公神器,內涵活動福利

2020-4-10 9:09:58

0 條回復 A文章作者 M管理員
    暫無討論,說說你的看法吧
個人中心
今日簽到
有新私信 私信列表
搜索