91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

找了好久找到的,求出的kmeans相對效果會好一些 - 作用:根據darknet訓練txt的存儲文件夾,經過多次計算求anchors,最后取2次avg_iou相等時的結果 - 需要修改:txt儲存的文件夾、生成anchors.txt路徑、anchors數量、訓練寬度、訓練高度 - 運行:python kmeans.py

資源截圖

代碼片段和文件信息

#?-*-?coding:?utf-8?-*-
import?numpy?as?np
import?random
import?argparse
import?os
#參數名稱
parser?=?argparse.ArgumentParser(description=‘使用該腳本生成YOLO-V3的anchor?boxes\n‘)
parser.add_argument(‘--input_annotation_txt_dir‘default=‘labels‘type=strhelp=‘輸入存儲圖片的標注txt文件(注意不要有中文)‘)
parser.add_argument(‘--output_anchors_txt‘default=‘anchors.txt‘type=strhelp=‘輸出的存儲Anchor?boxes的文本文件‘)
parser.add_argument(‘--input_num_anchors‘default=6type=inthelp=‘輸入要計算的聚類(Anchor?boxes的個數)‘)
parser.add_argument(‘--input_cfg_width‘default=224type=inthelp=“配置文件中width“)
parser.add_argument(‘--input_cfg_height‘default=224type=inthelp=“配置文件中height“)
args?=?parser.parse_args()
‘‘‘
centroids?聚類點?尺寸是?numx2類型是ndarray
annotation_array?其中之一的標注框
‘‘‘
def?IOU(annotation_arraycentroids):
????#
????similarities?=?[]
????#其中一個標注框
????wh?=?annotation_array
????for?centroid?in?centroids:
????????c_wc_h?=?centroid
????????if?c_w?>=w?and?c_h?>=?h:#第1中情況
????????????similarity?=?w*h/(c_w*c_h)
????????elif?c_w?>=?w?and?c_h?<=?h:#第2中情況
????????????similarity?=?w*c_h/(w*h?+?(c_w?-?w)*c_h)
????????elif?c_w?<=?w?and?c_h?>=?h:#第3種情況
????????????similarity?=?c_w*h/(w*h?+(c_h?-?h)*c_w)
????????else:#第3種情況
????????????similarity?=?(c_w*c_h)/(w*h)
????????similarities.append(similarity)
????#將列表轉換為ndarray
????return?np.array(similaritiesnp.float32)?#返回的是一維數組,尺寸為(num)
?
‘‘‘
k_means:k均值聚類
annotations_array?所有的標注框的寬高,N個標注框,尺寸是Nx2類型是ndarray
centroids?聚類點?尺寸是?numx2類型是ndarray
‘‘‘
def?k_means(annotations_arraycentroidseps=0.00005iterations=200000):
????#
????N?=?annotations_array.shape[0]#C=2
????num?=?centroids.shape[0]
????#損失函數
????distance_sum_pre?=?-1
????assignments_pre?=?-1*np.ones(Ndtype=np.int64)
????#
????iteration?=?0
????#循環處理
????while(True):
????????#
????????iteration?+=?1
????????#
????????distances?=?[]
????????#循環計算每一個標注框與所有的聚類點的距離(IOU)
????????for?i?in?range(N):
????????????distance?=?1?-?IOU(annotations_array[i]centroids)
????????????distances.append(distance)
????????#列表轉換成ndarray
????????distances_array?=?np.array(distancesnp.float32)#該ndarray的尺寸為?Nxnum
????????#找出每一個標注框到當前聚類點最近的點
????????assignments?=?np.argmin(distances_arrayaxis=1)#計算每一行的最小值的位置索引
????????#計算距離的總和,相當于k均值聚類的損失函數
????????distances_sum?=?np.sum(distances_array)
????????#計算新的聚類點
????????centr

評論

共有 條評論